Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверить существование формы, если нет - создать [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);


Наверх

Титульная страница Поиск, карта сайта Написать письмо