|
|
|
Сравнение динамически созданных форм и статики20.02.2014, 16:38. Показов 2284. Ответов 32
Метки нет (Все метки)
Добрый день.
Интересует вопрос сравнение динамически созданных форм и статики. Где и какие плюсы…конечно понимаю все зависит от поставленной задачи. Ну вот к примеру есть тестовый проект, и создаю динамически 3 формы…..так же есть второй тестовый проект, там 3 формы в статике…сделал замеры…в принципе как по занимаемом месте на диске так и в памяти все равно(+-20кб). Так вот вопрос для тех кто видит гораздо глубже чем я , что луче использовать (как на больших так и маленьких проектах, где используется с десяток форм)? Кто знает, с какими проектами в будущем столкнусь…что бы быть готовым С Уважением
0
|
|
| 20.02.2014, 16:38 | |
|
Ответы с готовыми решениями:
32
Покраска динамически созданных StringGrid Поиск динамически созданных TabSheet |
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 20.02.2014, 23:51 | |||
![]() Добавлено через 46 минут Всетки попробую, не спится. Вот вы создаете "статические" формы. И весь механизм создания - просто мышка. Но вам, видимо, по ходу дела хочется создавать 20-50 совершенно разных форм. Ваше право. Но если вы выскользнули из пеленочек ИДЕ-ВСЛ, вам придется о многом думать самому. В первую очередь - о геометрии. Готовы? А если этих форм и впрямь 20-50, как вы с ними управитесь? Значит придется придумывать свои собственные механизмы. Хорошая работа. Не простая. Но интересная. Творческая. Лично я пару лет поигрался в Бюльдера, сначала просто балдел от возможностей, даже получилось пару приличных проектов. А потом с Qt познакомился. Там есть такая штука - лайоуты. И они так чудесно обеспечивают всю геометрию! В общем, на Десигнер (аналог ВСЛ) посмотрел, да и плюнул. Возможно, зря. Но получилось создать собственные механизмы, возможно, неуклюжие с точки зрения высоких материй, но меня вполне устраивающие. Однако, это ни сколько не реклама Кути. Дело в том, что эти лайоуты навярняка есть и в Бюльдере. Они даже в ВС 502 есть, только там я не понял их смысла (молод был) Идея ваша (если я опять же правильно понял) мне симпатична. Программа по ходу работы лучше знает, какие формы ей нужны, так пусть она их и создает! Но тут ей ваша мышка не поможет. "Сама, девочка, сама". Добавлено через 1 минуту
1
|
|||
|
|
|
| 21.02.2014, 00:12 [ТС] | |
|
Байт спасибо за спокойный и внятный ответ(дружелюбно-повествовательную форму)))))
Просто у меня есть проект в котором у меня все "динамично " создано (то есть без перетаскивания компонентов на форму)....и столкнулся с тем что порой приходится создавать формы второго поколения (то есть дочерняя от дочерней). А так как я просто любитель (не заядлый кодер), стало интересно а правильно ли я делаю....или стоит все сделать "статично" и то что я зря заморачиваюсь со связями. Следующий момент что подтолкнуло написать к гуру на форуме, почему при удалении "динамичной формы", порой остаются компоненты что на ней =) Добавлено через 1 минуту PS был интересен вопрос так же с заимаемыми ресурсами, так как приложения на RAD занимают порядком памяти, стараюсь экономить и оптимизировать каждый байт
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|||
| 21.02.2014, 01:07 | |||
|
Создавать формы кодом больно хлопотно, поэтому только IDE. Но иногда в IDE просто невозможно. Писать форму кодом когда можно в IDE - это создание себе проблем.
1
|
|||
|
|
||||||||
| 21.02.2014, 01:16 [ТС] | ||||||||
0
|
||||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|||||||
| 21.02.2014, 02:46 | |||||||
1
|
|||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||||||||
| 21.02.2014, 10:05 | ||||||||||||||||
|
Я тут опять со своими любимыми картинками:
Когда говорят о необходимости создавать формы динамически имеют в виду тот факт, что экземпляр формы, будучи созданным, занимает сколько-то памяти. Но если форма нужна нечасто и лишь на короткое время, то ее не обязательно создавать вместе с запуском всего приложения и уничтожать тольлко лишь по его завершению. Можно посередине работы программы создать ее, а когда она станет более не нужной, уничтожить, тем самым заняв память под нее лишь на короткое время. Не хотите мурдыкаться с ручным созданием форм? Создайте ее в редакторе (Меню File->New->Form). Так же набросайте требуемые вам компоненты, все дела. Но только уберите ее из автосоздания (Меню Project->Options), перенеся из левой колонки в правую: Либо ручками: (Меню Project->View Source): Project2.cpp
Далее сделайте ее динамически создаваемой: Unit1.cpp
И допишите, чтобы по закрытию формы она не пряталась, а уничтожалась: Unit2.cpp
Архив с проектом: DinamicForm.rar
1
|
||||||||||||||||
|
|
||||||||||||||||
| 21.02.2014, 10:33 [ТС] | ||||||||||||||||
|
SatanaXIII отличный показательный пример,спасибо.
На счет того как так получается, что при удалении формы , что условие компонента работает. то делаю следующим образом : Создаю в шапочке едик
Далее хреначу форму. по суте она же ссобой должна все подчистить где является родителем.....но порой если проверять выше упомянутое условие....оно всплывает как истина
А на счет писать в других средах, мне интереснее и попонятнее именно Builder (просто Rad немного пофункциональние, потому и на него перешел) ![]() Благодаря Вам (тем кто откликнулся на тему), стало понятно что статика или динамика не влияет на расход ресурсов системы, что было для меня важно
0
|
||||||||||||||||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||||||||||
| 21.02.2014, 11:18 | ||||||||||||||||||
|
Вот так
Но если вы наследуетесь напрямую от TForm, то наверное это единственный вариант - сделать его глобальным. По крайней мере ничего сейчас в голову не приходит. P.S. Вот вы пишите:
1
|
||||||||||||||||||
|
|
|
| 21.02.2014, 11:32 [ТС] | |
|
"Форма при своем уничтожении не выставляет свои булевые значения в false" это для меня новость, так же как и new TForm(this);.....с этим у меня были проблемы и не понятные ошибки, Огроменное спасибо!!!!!!
0
|
|
|
|
|
| 21.02.2014, 12:23 | |
|
0
|
|
|
|
||
| 22.02.2014, 11:40 | ||
|
В том же случае, когда соблюдается принцип инкапсуляции ООП и все связанное непосредственно с объектом хранится внутри этого объекта, получаем обычную картину. Разрушаем форму, обнуляем указатель на нее - и все, получить доступ к какому-либо невалидному указателю мы уже просто не можем. Кстати, если вся эта ерунда из-за простеньких диалогов с эдитами и прочим, то есть множество готовых диалогов как в VCL( Vcl.Dialogs ), так и в WinAPI( Dialog Boxes ) и не надо ничего городить. Например, с эдитом - InputBox.
1
|
||
|
|
|
| 24.02.2014, 10:41 [ТС] | |
|
"Например, с эдитом - InputBox. "
Век живи,век учись, про него совсем забыл, благодарю
0
|
|
| 24.02.2014, 10:41 | |
|
Помогаю со студенческими работами здесь
33
События динамически созданных объектов Удаление динамически созданных TSpeedButton Удаление динамически созданных объектов Удаление динамически-созданных компонентов События динамически созданных компонентов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|