MDIForm

Hook
Дата: 01.03.2003 14:16:30
Добрый вечер!!!

Не могли бы вы мне помочь
разобраться с дочерними окнами.
У меня есть глваное окно Form1 с кнопкой.
При событии Button1ОnClick появляется
дочерние окно Form2.




[src][/src]
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
end;


Если я кликну несколько раз то появится
еще несколько дочерних окон.
ВОПРОС:
Как проверить что у меня уже существует
уже дочерние Окно с таким Именем :(

Заранее БЛАГОДАРЕН!!!
_Гыук_
Дата: 01.03.2003 20:15:26
MDIChildren в help'е смотрели? Если нет - смотрите!
m_kus
Дата: 03.03.2003 11:19:09
Если в Unit2 найти строчки
  var

Form2 : TForm2;

и заменить следующим образом:
  var

Form2 : TForm2 = nil;


Тогда можно пользоваться следующей конструкцией:
procedure TForm1.Button1Click(Sender: TObject); 

begin
if not Assigned(Form2) then
Application.CreateForm(TForm2, Form2);
end;
tygra
Дата: 03.03.2003 15:27:09
Она и так равна nil при первом создании
Cooper
Дата: 03.03.2003 15:29:20
if application.findcomponent('Form1')<>nil then

Так чёли?
tygra
Дата: 03.03.2003 16:29:56
Нет

if Form1 <> nil
- ты же Form1 и так видишь, зачем его искать
Виктор
Дата: 04.03.2003 02:20:04
Вот такая конструкция спасет ?
procedure TMainForm.ShowMDIForm;
var p:pointer;
i:integer;
begin
p:=nil;
for i:=MDIChildCount-1 downto 0 do
if (MDIChildren is TForm2) then
begin
p:=MDIChildren;
TForm2(MDIChildren).BringToFront;
end;
if p=nil then
TForm2.Create(Self);
end;


:-))
m_kus
Дата: 04.03.2003 10:11:00
2tygra:

>Она и так равна nil при первом создании
Это гарантировано и документировано?
Я и раньше это замечал, но считаю хорошим тоном самому явно объявлять значения переменной по умолчанию (если это значение используется)... Кроме того это некоторая защита от случае, если когда-нибудь это умолчания вдруг поменяют... :)
tygra
Дата: 04.03.2003 12:59:24
Это гарантированно - куда еще может ссылаться указатель на форму, если ее нет? Уже 7 версий так есть :)