![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
За последние пару лет я наловчился создавать большую часть элементов управления из программы через TButton.Create(self); TEdit.Create(self); TPanel.Create(self) и т.д.
И даже сделал себе много функций для того чтобы это делать быстрее И на данный момент в большой многофункциональной программе, 90% элементов создаются изнутри. Некоторые при запуски, а некоторые - когда понадобятся (программа то многофункциональная и не всегда надо сразу всё). Очень удобно то что можно прописывать их массивами Код:
И вот на этом моменте у меня возник вопрос: а можно ли при создании программы обойтись вообще без конструктора формы? То есть, создать основное окно через TFrom.Create а дальше запустить программу в стандартном режиме реакций на действия (нажатия на кнопки и т.д.) То есть, по сути, создать точно такую же по функционалу программу, но у которой ВСЁ, включая основную форму, создано кодом |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]() Цитата:
Цитата:
Таки что вас останавливает? |
||
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
создание формы на чистом WinAPI хотите?
вот тут в четвёртом комментарии архив приложен - там создаётся форма в виде кучи кнопок без TForm1 и привычных вам трёх кнопок в верхнем правом углу. https://www.programmersforum.ru/showthread.php?t=346894 ---------- ну, в чистом бассейне покупались, теперь ныряйте в мутный омут с головой... добро жопаловать, как говорится (да, тут печаток нет)
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 17.04.2024 в 14:44. |
![]() |
![]() |
![]() |
#4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
Конструктор форм это удобный инструмент, ускоряющий разработку. Хотите минимизировать размер ЕХЕ и не использовать конструктор, тогда зачем вам вообще VCL? Пишите на чистом WinAPI.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#5 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Kronos913,
Удаляете .dfm-файл и директиву {$R *.dfm} из модуля формы (а также, в зависимости от наличия компонентов на конструированной форме, их надо удалить из полей класса формы), и у вас не будет конструктора, но при этом создание пустой формы будет работать как обычно (оно прописано в dpr) Пы.Сы. если я ничего не путаю, конечно, давно уже не колдовал на формах. Однако, это не уменьшит на какой либо существенный объём экзешку, как и 95% остальных обсуждаемых Вами методов, Вы только придумываете сложности на ровном месте. Динамические интерфейсы это нормально, когда их нужно собирать именно динамически под разные задачи, а вот если задача известна, то наоброт проще создать форму визуально собрав интерфейс, а не ручками в коде Последний раз редактировалось phomm; 17.04.2024 в 16:20. |
![]() |
![]() |
![]() |
#6 | |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]() Цитата:
Для создания формы TApplication.CreateForm внутри себя вызывает TForm.Create, никакой магии в нем нет. Точнее, «магия» в установке свойства TApplication.MainForm. Если оно равно nil, TApplication.Run не знает, какому окну переправлять получаемые от ОС сообщения, и завершает работу. Для программиста свойство TApplication.MainForm — только для чтения, его значение устанавливается как раз через TApplication.CreateForm. То есть, код в .dpr-файле, создаваемый Delphi и модифицируемый через окно свойств приложения, не является волшебными заклинаниями, а является обычным кодом на Паскале с логикой, которую я описал. Всё это есть в справке. Соглашусь с предыдущими ораторами, что избавление от визуальных форм почти не повлияет на размер exe-файла. Если хочется большей автоматизации или декомпозиции, откройте для себя визуальное наследование. Последний раз редактировалось Vapaamies; 17.04.2024 в 17:53. |
|
![]() |
![]() |
![]() |
#7 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
И этот код можно ручками написать в любом простом текстовом редакторе. |
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]() Цитата:
Вот только процедуры из public не могут прикрепляться к объектам на форме. И на сколько я понял, у объекта созданного через конструктор, прописываются все параметры. В то время как если объект создаётся динамически, можно вызовом одной процедуры настроить махом сразу три свойства Код:
Последний раз редактировалось Kronos913; 18.04.2024 в 02:18. |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
В качестве теста сделал вот такую вот программку. Всё ли верно?
Код:
Код:
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++ Создать структуру пирамида. В структуре предусмотреть создание конструктора по умолчанию, конструктора с параметрами, деструктора | Cyber321 | Помощь студентам | 12 | 14.12.2018 10:08 |
Почему в PHP нет визуального конструктора форм как в VB? | Ципихович Эндрю | PHP | 13 | 10.01.2017 18:55 |
Пропало окно конструктора формы. как вернуть? | Gavri1a | Общие вопросы .NET | 6 | 23.09.2016 01:24 |
Перемена размер окно форм в Access 2007-2010 | Тантан | Microsoft Office Access | 5 | 29.05.2013 17:17 |
Автоматическое преобразование на основе первого аргумента конструктора в вызов самого конструктора | jennya | Visual C++ | 8 | 03.10.2010 19:03 |