![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MDI [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Goblinus © (2002-06-03 00:49:00)Почему программа не хочет этим кодом закрывать все дочерние окна?
procedure TForm1.FileSaveAllExecute(Sender: TObject);
var i: integer;
begin
for i:=0 to form1.MDIChildCount do
begin
(Form1.ActiveMDIChild as TForm2).Close;
end;
end;
Goblinus (2002-06-03 10:07:00) [1]>>>>> Song >>>>> А в каком месте этого отрывка вы идентифицируете дочернее окно по индексу?
Дык ведь если одно окно закрыть, другое становится активным. Вроде бы так. Или нет?..
>>>>> Игорь Шевченко >>>>>
Попробуйте так:
procedure TfMain.CloseAllMDIChilds;
begin
while ActiveMDIChild <> nil do begin
ActiveMDIChild.Release();
Application.ProcessMessages();
end;
end;
В вашем примере ActiveMDIChild не успевает меняться, так как нет фразы Application.ProcessMessages и действие Close не успевает сработать.
С уважением,
-----------------------------------------------------------------
Спасибо! Это как раз то, до чего я сам не мог додуматься!
Игорь Шевченко (2002-06-03 09:26:00) [2]Попробуйте так:
procedure TfMain.CloseAllMDIChilds;
begin
while ActiveMDIChild <> nil do begin
ActiveMDIChild.Release();
Application.ProcessMessages();
end;
end;
В вашем примере ActiveMDIChild не успевает меняться, так как нет фразы Application.ProcessMessages и действие Close не успевает сработать.
С уважением,
Song (2002-06-03 08:27:00) [3]А в каком месте этого отрывка вы идентифицируете дочернее окно по индексу?