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

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

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]

А в каком месте этого отрывка вы идентифицируете дочернее окно по индексу?


Наверх

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