Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];
ВнизMDI Найти похожие ветки
← →
Goblinus (2002-06-03 00:49) [0]Почему программа не хочет этим кодом закрывать все дочерние окна?
procedure TForm1.FileSaveAllExecute(Sender: TObject);
var i: integer;
begin
for i:=0 to form1.MDIChildCount do
begin
(Form1.ActiveMDIChild as TForm2).Close;
end;
end;
← →
Song (2002-06-03 08:27) [1]А в каком месте этого отрывка вы идентифицируете дочернее окно по индексу?
← →
Игорь Шевченко (2002-06-03 09:26) [2]Попробуйте так:
procedure TfMain.CloseAllMDIChilds;
begin
while ActiveMDIChild <> nil do begin
ActiveMDIChild.Release();
Application.ProcessMessages();
end;
end;
В вашем примере ActiveMDIChild не успевает меняться, так как нет фразы Application.ProcessMessages и действие Close не успевает сработать.
С уважением,
← →
Goblinus (2002-06-03 10:07) [3]>>>>> Song >>>>> А в каком месте этого отрывка вы идентифицируете дочернее окно по индексу?
Дык ведь если одно окно закрыть, другое становится активным. Вроде бы так. Или нет?..
>>>>> Игорь Шевченко >>>>>
Попробуйте так:
procedure TfMain.CloseAllMDIChilds;
begin
while ActiveMDIChild <> nil do begin
ActiveMDIChild.Release();
Application.ProcessMessages();
end;
end;
В вашем примере ActiveMDIChild не успевает меняться, так как нет фразы Application.ProcessMessages и действие Close не успевает сработать.
С уважением,
-----------------------------------------------------------------
Спасибо! Это как раз то, до чего я сам не мог додуматься!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c