Главная страница
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.044 c
6-1126951071
redlord
2005-09-17 13:57
2005.12.25
задержки при коннекте


5-1117545320
Санек
2005-05-31 17:15
2005.12.25
Создание компонента в Design-Time(аналог Field из DataSet)


2-1133993052
Jerry
2005-12-08 01:04
2005.12.25
Компоненты Делфи Помогите кто может


1-1132928583
remlin
2005-11-25 17:23
2005.12.25
Сохранение свойств приложения


2-1134218405
Максим
2005-12-10 15:40
2005.12.25
Есть две бочки, надо определить, какая имеет больше объем