Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой вариант использования форм наиболее оптимален? [D5]


Страницы:   1 2

lipskiy ©   (2002-11-01 01:24:00) 

Мне известны три варианта использования форм со своими контролами. Первый - создать все в дизайн-тайме и не париться. Но при этом вся форма (а мне нужна форма настроек программы - с кучей контролов) всегда сидит в памяти и кушает ресурсы. Второй вариант - также создать форму в дизайн-тайме, но отменить автокрейт и крейтить при вызове, а при гашении освобождать. При этом в ехешник будут скомпилированы все свойства контролов со значениями по умолчанию, даже если я их не использую, получается лишний объем ехе-файла. Третий вариант - создавать форму полностью динамически, ничего не рисуя в дизайн-тайме. Это, имхо, наиболее экономично но жутко неудобно.

Как же все-таки ПРАВИЛЬНО создавать изобилующие контролами формы, которые редко вызываются при работе?
Плюс к этому я хочу на форме настроек переключать множество вкладок с группами настроек, и при этом чтобы в памяти в данный момент сидели только те контролы, которые отображаются, а контролы других вкладок не существовали бы (самих вкладок не видно, это стиль формы настроек с выбором групп посредством TreeView).

И вот еще. Не могу понять, в чем ошибка при создании формы.
В отдельном юните описано:

type
TFormTunes = class (TForm)
end;

var FormTunes : TFormTunes;


В главном юните по кнопке вызываю:
Application.CreateForm(TFormTunes, FormTunes);
Или так:
FormTunes:= TFormTunes.Create(nil);

Вылетает эксепшен - типа ресурс TFormTunes не найден.
Чего я не верно сделал-то?


reonid   (2002-11-01 13:41:00) [21]

Если без дфм - то действительно надо пользоваться CreateNew.
Потому что Create пытается загрузить одноимённый ресурс.
А насчёт главной формы - она обычно создана в дизайнере и имеет дфм.
(И в её модуле стоит {$R *.DFM} - попробуй, убери :-Р )

Если у тебя много форм похожего внешнего облика и функциональности -
то ты можешь сделать одну заготовку
и специальный объект - менеджер внешнего облика(и поведения),
который будет настраивать форму для конкретного применения,
создавать при необходимости доп. контролы и устанавливать
обработчики.

Насчёт вкладок и тривью - ты можешь сделать каждую
вкладку на отдельной форме, по нажатию на соответствующий
узел создавать нужную форму (уничтожив предыдущую),
загружать в эту форму соответствующие данные и делать её парентом основную форму (на которой лежит тривью).


lipskiy   (2002-11-01 13:09:00) [22]

Нет dfm файла. Я чисто руками хочу сделать форму целиком. Так мне кажется наиболее оптимально.

> Описания класса и обявление переменной класса должны быть
> в интерфейсном разделе подчиненного модуля.

Так и сделано.

> Во-вторых, просто не стоит забывать в главном модуле в uses
> указывать имя используемого модуля.

Естественно, иначе бы и компилятор не пропустил.

> Программа с десятком статичных форм может запросто отказаться
> запускаться под Windows 98.

Именно эту цель я и преследую - обеспечить нормальную работу под 98-ой, а НТишные осы имеют нормальные менеджеры графических ресурсов.

> TForm.Create pytaetsya najti ressursy formy. Esli ih net,
> nuzhno ispol"zovat" CreateNew (kazhetsya).

А почему это он не находит ресурсы? Главная-то форрма создается как обычно автоматом. Почему я не могу так же создать новую форму? Какжется просто у меня тупняк какой-то, где-то что-то упустил, но не могу найти...


Dr_Mike   (2002-11-01 10:20:00) [23]

Хм...действительно, Alex4444444444 правильно акцентировал внимание :)))

Есть ли утебя вообще .DFM файл для FormTunes???


Alex4444444444   (2002-11-01 10:07:00) [24]

TForm.Create pytaetsya najti ressursy formy. Esli ih net, nuzhno ispol"zovat" CreateNew (kazhetsya).


evgeg   (2002-11-01 08:18:00) [25]

> Все разговоры о размерах занимаемой памяти и ресурсах - это либо разговоры о программах на чистом API, либо о "дурацком" использовании ресурсов.

Ничего подобного. Программа с десятком статичных форм может запросто отказаться запускаться под Windows 98.


Aleks1   (2002-11-01 02:49:00) [26]

> Как же все-таки ПРАВИЛЬНО создавать изобилующие контролами >формы, которые редко вызываются при работе?

Правильно - это так, чтоб выбранный способ давал наименьшее количество ошибок для конкретного автора. Все разговоры о размерах занимаемой памяти и ресурсах - это либо разговоры о программах на чистом API, либо о "дурацком" использовании ресурсов. ИМХО, однако.


Dr_Mike   (2002-11-01 02:29:00) [27]

Описания класса и обявление переменной класса должны быть в интерфейсном разделе подчиненного модуля.

Во-вторых, просто не стоит забывать в главном модуле в uses указывать имя используемого модуля.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо