Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.032 c
1-1125495898
Draught
2005-08-31 17:44
2005.09.25
Вычислить разницу во времени


1-1125938184
Дмитрий_05
2005-09-05 20:36
2005.09.25
Какая версия Delphi лучше, D7 или D2005?


3-1123829501
Zaero
2005-08-12 10:51
2005.09.25
Как организовать SQL запрос для поиска в <BLOB Memo> поле таблицы


1-1125575838
kyn66
2005-09-01 15:57
2005.09.25
ListView с разноцветными строками


3-1123590653
Русланка
2005-08-09 16:30
2005.09.25
При формировании запроса к Access как узнать