![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверить существование формы, если нет - создать [D7, WinXP]
Hizri © (2005-08-15 19:17:00)Как грамотно осуществить subj? С уважением.
Anatoly Podgoretsky (2005-08-15 21:25:00) [1]злобная танька (15.08.05 21:03) [12]
Это другое дело, а то уже ругаться хотел :-)
Hizri (15.08.05 21:14) [13]
Не надо, кроме того я данный код привел как более понятный, на самом деле используй код аналогичный, но без переменной, как в [12]
procedure TForm1.ButtonClick(Sender: TObject);
begin
with TFormX.Create(Self)
try
if ShowModal = mrOk then begin
действия при нажатии кнопки ОК
end;
finally
Free;
end;
end;
Это самое оптимальное и надежное.
Hizri (2005-08-15 21:23:00) [2]Ммм..угу, всем большое спасибо, крупным пробелом в моих знаниях стало меньше.
Alexander Panov (2005-08-15 21:20:00) [3]а Form1 := nil; не надо?
А зачем, если форма всегда гарантированно уничтожается?
Hizri (2005-08-15 21:14:00) [4]2 Anatoly Podgoretsky [9]
а Form1 := nil; не надо?
злобная танька (2005-08-15 21:03:00) [5]не, в 10 полный бред..
на самом деле что я хотела:
With TForm2.Create(nil) do
try
mr := ShowModal;
finally
Free;
end;
Caption := Inttostr(MR);
:)
злобная танька (2005-08-15 20:54:00) [6]не успела :(
Anatoly Podgoretsky (2005-08-15 20:53:00) [7]При модальной форме не требуется анализ ее существования, просто создавай и сразу удаляй.
Form1 := TForm1.Create(Self);
try
if Form1.ShowModal = mrOk then begin
...
end;
finally
Form1.Free;
end;
злобная танька (2005-08-15 20:53:00) [8]var
MR: TModalResult;
begin
With Form2.Create(nil) do
try
mr := Form2.ShowModal;
finally
Form2.Free;
end;
Hizri (2005-08-15 20:46:00) [9]Гм, спасибо всем про создание, извиняюсь что ранее не привел своего решения - оно было идентичным. А вот для освобождения формы использую FreeAndNil. Форма - модальная, требуется получить modalresult. Может есть другие решения?
Гаврила (2005-08-15 20:38:00) [10]
> [2] злобная танька
> FreeAndNil
не прокатит для случая немодальног показа
ибо для такого случая Free нигде явно не вызывается,
на OnClose присвоить
Action:=CaFree;
Form1:=nil;
(Если требуется разрушать при закрытии)
TUser (2005-08-15 20:36:00) [11]if not Assigned (Form2) then Form2 := TForm2.create( Application);
Хотя, это зависит от многих обстоятельств.
Fay (2005-08-15 20:18:00) [12]2 grau © (15.08.05 20:14) [4]
[4] = [2]
grau (2005-08-15 20:14:00) [13]
if not Assigned (Form2) then Form2 := TForm2.create(self);
AlexWlad (2005-08-15 20:08:00) [14]Посмотри здесь - http://www.rsdn.ru/Forum/Message.aspx?mid=1317898
злобная танька (2005-08-15 19:45:00) [15]если планируется несколько раз создавать/уничтожать одну и ту же форму во время работы программы, при удалении советую делать ей FreeAndNil. Чтобы указатель действительно обнилялся. А то [2] не прокатит..
Tonich (2005-08-15 19:35:00) [16]
if Form1 = nil then Form1 := TForm1.create(self);