Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2015, 09:18   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
Смущение Вызов фреймов

Можно ли как то показывать фреймы на форме, предварительно НЕ помещая их туда.
Дело в том, что у меня программа, в которой 43 формы, и я хочу все их перетащить в фреймы.
Но если все фреймы, я добавлю на главную форму, и там буду ими манипулировать, то во-первых, на главной форме будет огромная каша из различных фреймов, а во-вторых, тут легко будет запутаться, или ошибиться...
В общем вопрос, как вызвать фрейм, предварительно не поместив его на форму?
Janger вне форума Ответить с цитированием
Старый 25.09.2015, 09:38   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

С точки зрения программы фрейм это обычный визуальный компонент, а любой компонент допускает динамическое(программное) создание.
надо просто создать компонент нужного типа (читай фрейм) и настроить его показ.
Код:
// создать нужный фрейм
f:=TFrameXX.Create(self); // чтобы не заботиться о ее удалении указываем кто должен позаботиться о его удалении (будет удален вместе с формой)
// где будем его отображать  
f.parent:=self; //прямо на форме
f.parent:=self.PanelforframeXX; на отдельной панели формы
f.parent:=self.tabsheetFrameXX; //на отдельной вкладке
//если надо настроить остальные параметры отображения(размещения)
f.left:= 
f.top:=
f.align:=
....
Вдруг решили что фрейм больше не нужен.
Код:
f.Free;
Цитата:
что у меня программа, в которой 43 формы, и я хочу все их перетащить в фреймы.
а зачем ?

чтобы иметь одну форму и показывать фреймы по очереди ?
кода от этого меньше не станет. только увеличите.
код с каждой формы уйдет на свой фрейм. (сколько было столько и осталось)
+ код по загрузке КАЖДОГО фрейма. (и ДОБАВИЛИ )

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

Последний раз редактировалось evg_m; 25.09.2015 в 09:44.
evg_m вне форума Ответить с цитированием
Старый 25.09.2015, 09:49   #3
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Зачем?
Да всё просто, когда кто то пользуется программой, он нажимает на кнопку, открывается новая форма, нажимает на ещё одну кнопку, открывается опять новая форма, и в конце концов, пользователь может запутаться...
Я же хочу всё сместить в одну форму, да, понимаю что код не уменьшится, а только увеличится от этого.
Но в конечном счёте, всё должно быть удобнее для пользователя
Janger вне форума Ответить с цитированием
Старый 25.09.2015, 10:06   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Я же хочу всё сместить в одну форму,
ВСЕ 43 формы запихать СРАЗУ в ОДНУ "супер"форму ? если это возможно, то почему не было так сделано сразу, ВСЯ работа на одной форме?
И думаете пользователь не запутается ?
Или не запутатесь ВЫ пытаясь "вслепую" разместить там (на суперформе) все 43 фрейма, а хватит ли там места для НОРМАЛЬНОГО отображения.

Цитата:
нажимает на ещё одну кнопку, открывается опять новая форма,
и дальше новая форма никак не общается с исходной.
или все таки КАК-то "пытается вернуть результаты".
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 25.09.2015 в 10:08.
evg_m вне форума Ответить с цитированием
Старый 25.09.2015, 10:45   #5
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Нет, не пытается... У меня все через БД.
Вообще, я с вами согласен что я там могу очень легко запутаться...
В общем, я пока не знаю что придумать лучше ...
P.s. изначально так не сделал, т.к. программа не моя, я её только доделываю
Janger вне форума Ответить с цитированием
Старый 25.09.2015, 15:02   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Нет, не пытается... У меня все через БД.
возврат результатов может быть и опосредованным, через ту самую БД.
первая форма. показ данных.
нажимаем кнопку переходим на форму редактирования.
сохраняем изменения (а это уже есть результат действия !)

первая форма не прочь узнать о выполненных изменениях. (результатах работы второй формы, но не напрямую, а через повторное считывание из БД).

чтобы НИ пользователь, ни программист не запутались
в таких случаях для работ с формами редактирования как правило используют
ShowModal показ формы с "остановкой работы" первой формы.
ПОЛЬОВАТЕЛЬ: пока редактор показан, он не сможет работать с другими формами. (не запутается, не потеряет редакцию и вернется ровно туда, откуда начал редакцию)
ПРОГРАММИСТ: тоже самое. по завершении действий по редактированию КОД вернется ровно туда где была вызвана редакция и зная что данные УЖЕ откорректированы, мы смело запускам свое обновление данных.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена фреймов KiL0z Общие вопросы Delphi 8 24.02.2011 19:47
Насчёт фреймов Eldrich HTML и CSS 3 25.08.2010 21:26
Взаимодействие фреймов Studik JavaScript, Ajax 0 07.05.2010 09:05
Общение фреймов _PROGRAMM_ JavaScript, Ajax 0 28.12.2009 17:55
Фиксация фреймов Merkator HTML и CSS 3 05.03.2009 08:00