Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Не обновляется MDIChildCount   Найти похожие ветки 

 
kay ©   (2005-12-05 16:54) [0]

Есть MDI приложение. При выходе из приложения используется процедура для сохранения данных в окнах. Но при закрытии окон не меняется значение MDIChildCount, оно имеет реальное значение только при начале выполнения процедуры.
Вот процедура закрытия приложения:
procedure Tmain_form.FormClose(Sender: TObject; var Action: TCloseAction);
var
 j:integer;
begin
 for j:=MDIChildCount-1 downto 0 do
   MDIChildren[j].Close;
 if MDIChildCount>0 then Action:=caNone;
end;


Даже когда все окна закрыты, значение MDIChildCount равно тому значению, которое было до выполнения процедуры.

Вот процедуры закрытия дочерних окон:
procedure Teko_form.FormClose(Sender: TObject; var Action: TCloseAction);
var
 k:integer;
begin
 if modified then
   begin
     k:=MessageDlg("Ñîõðàíèòü "+Caption+" ïåðåä çàêðûòèåì?", mtConfirmation,
       [mbYes, mbNo, mbCancel], 0);
     case k of
       6: begin main_form.saveClick(nil); Action:=caFree; end;
       7: Action:=caFree;
       2: Action:=caNone;
     end;
   end
 else
   Action:=caFree;
end;
//******************************************************************************
procedure Teko_form.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if main_form.MDIChildCount=1 then
   begin
     main_form.main.Items[0].Items[2].Enabled:=false;
     main_form.main.Items[0].Items[3].Enabled:=false;
     main_form.run.Enabled:=false;
     main_form.save.Enabled:=false;
   end;
end;


 
Игорь Шевченко ©   (2005-12-05 17:37) [1]


>  for j:=MDIChildCount-1 downto 0 do
>    MDIChildren[j].Close;


for j:=MDIChildCount-1 downto 0 do begin
 MDIChildren[j].Close;
 Application.ProcessMessages;
end;

?


 
kay ©   (2005-12-05 17:44) [2]

работает, спасибо!
и можно понитересоваться, что эта волшебная процедура делает?


 
Игорь Шевченко ©   (2005-12-05 17:50) [3]

kay ©   (05.12.05 17:44) [2]


> и можно понитересоваться, что эта волшебная процедура делает?


Поинтересоваться у меня или у клавиши F1 ? :)


 
kay ©   (2005-12-05 18:29) [4]

у тебя =)


 
Игорь Шевченко ©   (2005-12-05 18:38) [5]

kay ©   (05.12.05 18:29) [4]

Волшебная процедура обрабатывает все сообщения, связанные с закрытием формы (а их посылается), до тех пор, пока не очистится очередь сообщений. В процессе обработки сообщений в том числе и корректируется значение MDIChildCount (и еще много всего).


 
kay ©   (2005-12-05 18:42) [6]

спасибо


 
The Only ©   (2005-12-05 21:33) [7]

СПАСИБО ОГРОМНОЕ



Страницы: 1 вся ветка

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.046 c
4-1130043894
Эксперт
2005-10-23 09:04
2005.12.25
Control panel TRANSPARENT


2-1134150777
OLEGNik
2005-12-09 20:52
2005.12.25
Как экспортировать процедуры procedure(): overload из dll ?


10-1105445071
Yagovdik
2005-01-11 15:04
2005.12.25
Выделить оъект в Акаде


2-1133876777
Evgenxxxx
2005-12-06 16:46
2005.12.25
TEdit


2-1133911495
aleyna
2005-12-07 02:24
2005.12.25
DBGrid