![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить, создана ли форма [D5, Paradox]
Stecoff © (2002-07-19 10:27:00)Господа программисты! Подскажите.
Есть MDI приложение. При нажатии на кнопку создается форма с DBGrid. Вызывается метод Show. Как сделать, чтобы при повторном нажатии форма не создавалась еще раз, а просто показывалась. Т.е., как проверить, создана ли MDIChild форма.
Stecoff (2002-07-19 13:30:00) [1]Извините господа. Все заработало. Спасибо огромное.
Stecoff (2002-07-19 13:25:00) [2]Все это работает (и решение Sergey13, и Fool). Только вот если форму минимизировать, то она снова креатится. Хотя стоит в OnClose Action:=caFree? Получается две созданные формы. ???
sniknik (2002-07-19 11:31:00) [3]зачем сложности? поиск по компонентам формам. нужно только чилды проверить. примерно как Sergey13 © (19.07.02 10:57) только используя DIChildCount у главной формы (количиство чилдов) и MDIChildren (масив из них). чего еще?
Johnmen (2002-07-19 11:20:00) [4]Application.FindComponent(...)<>nil
Sergey13 (2002-07-19 10:57:00) [5]Я долго искал в свое время решение этого вопроса и вот к чему пришел
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;
параметр - имя формы. Может и не шедевр, но работает безотказно.
fool (2002-07-19 10:56:00) [6]С 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;
sniknik (2002-07-19 10:42:00) [7]по какому нибудь признаку формы Caption например.
Form1.MDIChildCount
Form1.MDIChildren
AngeL B. (2002-07-19 10:36:00) [8]
if MDIChild1 <> nil then ...
или зависти флаг