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