Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3

Сравнение динамически созданных форм и статики

20.02.2014, 16:38. Показов 2280. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Интересует вопрос сравнение динамически созданных форм и статики. Где и какие плюсы…конечно понимаю все зависит от поставленной задачи.
Ну вот к примеру есть тестовый проект, и создаю динамически 3 формы…..так же есть второй тестовый проект, там 3 формы в статике…сделал замеры…в принципе как по занимаемом месте на диске так и в памяти все равно(+-20кб).
Так вот вопрос для тех кто видит гораздо глубже чем я , что луче использовать (как на больших так и маленьких проектах, где используется с десяток форм)? Кто знает, с какими проектами в будущем столкнусь…что бы быть готовым
С Уважением
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2014, 16:38
Ответы с готовыми решениями:

События динамически созданных объектов
Доброго всем времени суток! Суть вопроса такова: я динамически в пользовательском классе создаю объект класса TTimer. Мне необходимо...

Покраска динамически созданных StringGrid
Всем доброго времени суток. Кто может подсказать как можно покрасить занятые текстом ячейки и вывести при наведение на эту ячейку Hint с...

Поиск динамически созданных TabSheet
Помогите пожалуйста. Есть TPageControl, на нем динамически созданы вкладки (количество может быть разное). На форме динамически...

32
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
20.02.2014, 16:45
Dinkin, а что вы вкладываете в понятие статичных (статических?) форм?
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2014, 16:48
я полагаю тут статические это auto-create формы.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 16:51  [ТС]
К примеру динамичные, это вовремя уже работы программы, я их создаю и так же удаляю (new TForm(this)).

А статика в моем понимание, это уже привинчены отдельно формы юнитами.

прошу прощения если заблуждаюсь
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2014, 16:54
Цитата Сообщение от Dinkin Посмотреть сообщение
А статика в моем понимание, это уже привинчены отдельно формы юнитами.
у динамически создаваемой формы тоже может быть юнит
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 16:59  [ТС]
Понимаю что может быть Unit, тогда уточну, что в данный момент рассматриваются "динамичные формы" без своего Unit
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2014, 17:11
Цитата Сообщение от Dinkin Посмотреть сообщение
рассматриваются "динамичные формы" без своего Unit
А зачем вообще нужны пустые формы?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 17:15  [ТС]
ну они будут не пустые, а содержать на себе компоненты
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2014, 17:20
А события этих форм куда денете? У каждого класса формы должен быть свой юнит, а когда и кем создастся форма это дело другое
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 17:30  [ТС]
Смотрите,если я Вас правильно понял....то ниже два примера


Для статики
C++
1
Form1->OnShow = OnShowTest ;

Для динамики (ни как Unit для него нет)
C++
1
2
TForm *form = dynamic_cast<TForm*>(this);
form->OnShow = OnShowTest ;
Общая функция
C++
1
2
3
4
void __fastcall TForm1::OnShowTest(TObject *Sender)
{
ShowMessage("Test");
}

и вот один из вопросов в каких случаях выгодно для проекта создавать динамические формы (без юнитов), а в каких изначально использовать статику (если не брать в расчет какуйнибуть конкретику, а за основу прсто тестовый проект)
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
20.02.2014, 17:38
Цитата Сообщение от Dinkin Посмотреть сообщение
Для динамики (ни как Unit для него нет)
Ну что у вас за пример пустая форма и шоумеседж. Такого не бывает. В реальности формы сложнее без юнита формы лучше не делать.
Формы которые видны постоянно и в одном экземпляре лучше создавать автоматически. Если у формы несколько экземпляров или видна она редко то лучше создавать ее динамически.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.02.2014, 19:00
Цитата Сообщение от Dinkin Посмотреть сообщение
Интересует вопрос сравнение динамически созданных форм и статики.
Интересно, я правильно тебя понял, или нет? Я понял так. Ты статической называешь форму, созданную в IDE-VCL (для Qt аналог - Designer) с набрасыванием на нее компонентов, с установкой с помощью мышки их положения и размеров, свойств и реакций на события (а уж auto-create - дело десятое) Динамическая форма, это то, что ты создаешь в процессе работы программы, сам задавая все размеры, подключая компоненты, задавая всю их геометрию, свойства и реакции. Так?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 21:58  [ТС]
Байт все верно
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2014, 22:22
Формы в С++Builder создаются исключительно динамически это особенность экспорта VCL-классов(из Delphi) в С++ для данной среды.

То о чем говорят вероятно формы в дизан-тайме.

Добавлено через 2 минуты
Цитата Сообщение от Dinkin Посмотреть сообщение
Так вот вопрос для тех кто видит гораздо глубже чем я , что луче использовать (как на больших так и маленьких проектах, где используется с десяток форм)? Кто знает, с какими проектами в будущем столкнусь…что бы быть готовым
Разницы в памяти и не должно быть.
Тут вопрос удобства.Десяток форм - это признак того что в вашей программе что-то не то ...
Если говорить не о формах, то ясное дело что 100 эдитов неудобно создавать в дизайнере, кроме того иногда надо иметь изменяемое число компонентов, которое можно задавать в процессе работы программы.


Не по теме:

Разница в памяти может быть только тогда когда ты убираешь форму из автосоздаваемых, и создаешь/удаляешь ее только когда это надо, но совсем другой вопрос- вопрос правильного управления ресурсами.

1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 22:26  [ТС]
Сам запутался, попробую сам для себя на пальцах...

Статика в моем понимании это:
Это File-> New -> VCL Form (и далее связываю Unit-ы)....мышкой делаю размеры формы кидаю на нее с панели компоненты и задаю события ей через вкладку "Events"

Динамика в моем понимании это:
В программе есть кнопка или функция и в ней примерно следующее

C
1
2
3
4
5
6
7
8
9
10
11
TForm *form = new TForm(this);
form->ParentBiDiMode=Form1;
form->OnClose= closeform;
form->Top=Form1->Top;
form->Left=Form1->Left;
form->Width=164;
form->Height=126;
form->BorderIcons>>biMaximize;
form->BorderIcons>>biMinimize;
form->Position =poMainFormCenter;   
form->Show();
Добавлено через 3 минуты
Avazart Спасибо, вполне вразумительный ответ для меня.

А что если касаться безопасности приложений ..слухи что в Builder не рекомендуют использовать статику, она легче разбирается (даже если все паковать)?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2014, 22:32
Цитата Сообщение от Dinkin Посмотреть сообщение
Статика в моем понимании это:
Это File-> New -> VCL Form (и далее связываю Unit-ы)....мышкой делаю размеры формы кидаю на нее с панели компоненты и задаю события ей через вкладку "Events"
Создание через дизайнер.
Дизайнер создает код класса формы унаследованного от базового класса TForm.
Так же дизайнер генерит файл *.dfm в котором сохраняются значения свойств класса заданные через дизайнер (и инспектор объектов)

Добавлено через 3 минуты
Цитата Сообщение от Dinkin Посмотреть сообщение
А что если касаться безопасности приложений ..слухи что в Builder не рекомендуют использовать статику, она легче разбирается (даже если все паковать)?
Неоправданная паранойя, взломать можно все, тут создание не через дизайн мало чем поможет.
С++Builder удобен, тем что в первую очередь в нем можно быстро и удобно создавать приложения, глупо от этого отказываться, с паронойей лучше сразу писать на асме.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 22:35  [ТС]
Avazart еще раз спасибо.
Для себя я понял, что в небольших программах можно делать "статику", в тех что побольше и посерьезнее просто правильно будет использовать "динамику"
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.02.2014, 22:48
Цитата Сообщение от Dinkin Посмотреть сообщение
Для себя я понял, что в небольших программах можно делать "статику", в тех что побольше и посерьезнее просто правильно будет использовать "динамику
Нифига вы не понял походу.
Ваши термины не верны в корне, нечего их использовать, вас уже не раз поправили.
И вообще возьмитесь за обычную книгу по С++ для начинающих, потом уже изучайте билдер.

Цитата Сообщение от Dinkin Посмотреть сообщение
Динамика в моем понимании это:
В программе есть кнопка или функция и в ней примерно следующее
Вероятно я вас удивлю, но рекомендую посмотреть файл проекта, как там создаются обычные ( в ваших терминах статические формы)

Project1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    try
    {
        Application->Initialize();
        Application->MainFormOnTaskBar = true;
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
    return 0;
}
//---------------------------------------------------------------------------

Так вот
C++
1
Application->CreateForm(__classid(TForm1), &Form1);
практически тот же эффект что и
C++
1
TForm1*  Form1= new  TForm1(Application);
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
20.02.2014, 22:56  [ТС]
Сделал небольшие замеры

C++
1
Application->CreateForm(__classid(TForm1), &Form1);
Сжирает немного больше ресурсов..но совсем на ненамного..
Насчет книги, приму к сведению
0
20.02.2014, 22:58

Не по теме:

Цитата Сообщение от Dinkin Посмотреть сообщение
Сделал небольшие замеры
Чем мерили удавами или мартышками ? :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2014, 22:58
Помогаю со студенческими работами здесь

События динамически созданных объектов
Всем привет :) Вопрос в том, как сделать отдельные события для каждой динамически созданной кнопки ? Пока получилось только для всех...

Удаление динамически созданных TSpeedButton
Имеется такой вот код, оптимизации 0, но сейчас не об этом. При попытке удалить массив из But, происходит ошибка. Project...

Удаление динамически созданных объектов
Помогите плз. Пишу курсач по МИО. Вот ща работаю над интерфейсом. Я по нажатию кнопку создаю динамически объект edit. Хочу теперь при...

Удаление динамически-созданных компонентов
Использую класс, компонентами которого кроме всего прочего, являются StaticText и Edit, графическое изображение. Создаю экземпляр класса...

События динамически созданных компонентов
В проекте динамически создаются компоненты TShape нажатием мыши на форме. Для компоненты необходимо обработать событие OnMouseDown,в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
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 ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru