Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Как проверить, создана ли форма   Найти похожие ветки 

 
Stecoff   (2002-07-19 10:27) [0]

Господа программисты! Подскажите.
Есть MDI приложение. При нажатии на кнопку создается форма с DBGrid. Вызывается метод Show. Как сделать, чтобы при повторном нажатии форма не создавалась еще раз, а просто показывалась. Т.е., как проверить, создана ли MDIChild форма.


 
AngeL B.   (2002-07-19 10:36) [1]

if MDIChild1 <> nil then ...

или зависти флаг


 
sniknik ©   (2002-07-19 10:42) [2]

по какому нибудь признаку формы Caption например.
Form1.MDIChildCount
Form1.MDIChildren


 
fool ©   (2002-07-19 10:56) [3]

С MDI будь внимательным: прога точно не знает что с чилдом (есть он или нет) поетому лучше всего делать так:
при "нажатии на кнопку ":
if FrmTTN = nil then FrmTTN := TFrmTTN.Create(self);
FrmTTN.WindowState := wsMaximized;
FrmTTN.Show;

а в чилде:

procedure TFrmMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := CaFree;
end;

procedure TFrmTTN.FormDestroy(Sender: TObject);
begin
FrmMDIChild := nil;
end;



 
Sergey13 ©   (2002-07-19 10:57) [4]

Я долго искал в свое время решение этого вопроса и вот к чему пришел

function ExistsForm(S:String):Boolean;
var i:integer;
begin
result:=False;
for i:=0 to screen.FormCount-1 do
if uppercase(screen.Forms[i].name)=uppercase(s) then result:=True;
end;

параметр - имя формы. Может и не шедевр, но работает безотказно.


 
Johnmen ©   (2002-07-19 11:20) [5]

Application.FindComponent(...)<>nil


 
sniknik ©   (2002-07-19 11:31) [6]

зачем сложности? поиск по компонентам формам. нужно только чилды проверить. примерно как Sergey13 © (19.07.02 10:57) только используя DIChildCount у главной формы (количиство чилдов) и MDIChildren (масив из них). чего еще?


 
Stecoff   (2002-07-19 13:25) [7]

Все это работает (и решение Sergey13, и Fool). Только вот если форму минимизировать, то она снова креатится. Хотя стоит в OnClose Action:=caFree? Получается две созданные формы. ???


 
Stecoff   (2002-07-19 13:30) [8]

Извините господа. Все заработало. Спасибо огромное.



Страницы: 1 вся ветка

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-24078
Серж са
2002-07-26 13:13
2002.08.08
Срочно!!!! Как осуществить подсветку текста? Срочно!!!!


1-23993
Arco
2002-07-27 21:26
2002.08.08
Ответьте пожалуйста, Синтаксис - OPascal


3-23855
S_Andy
2002-07-16 16:52
2002.08.08
Как связать 2 BDE Query связать (master-details)


1-23980
иван
2002-07-25 16:11
2002.08.08
Господа великодушные


1-24052
^SANYA
2002-07-23 20:04
2002.08.08
Как выкинуть программу из списка программ (ctrl+alt+del)?