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

Вниз

Событие закрытия дочернего окна в среде MDI   Найти похожие ветки 

 
Big ©   (2004-01-08 16:41) [0]

Как перехватить событие закрытия дочернего окна в среде MDI из главной формы?
Если говорить конкретно, то мне нужно обновлять состояние меню, в зависимости от существования и типов дочерних окон.
Из дочернего окна обновлять не получается - оно уничтожается позже чем выполняется обновление меню (соответсвенно меню обновляется некорректно - только что существующая форма уже не сущетвует).


 
Конница   (2004-01-08 16:46) [1]

OnCloseQuery
f1


 
Игорь Шевченко ©   (2004-01-08 17:55) [2]

Big © (08.01.04 16:41)

Посылать сообщение главному окну из дочернего, о том, что какое-то дочернее окно закрылось и надо обновить меню или что-то еще.


 
Тимохов ©   (2004-01-08 17:59) [3]

1. У меня сделано в formdestroy и formactivate PostMessage(Form_Main.Handle, MSG_MAIN_UpdateFormsList, 0, 0);
2. Обработчик события в главной форме
VAR
kNewItem: TMenuItem;
kI: Integer;
kNewItems: TList;
BEGIN
// Сначала очищаем список окон
for kI := miWindowsSeparator.MenuIndex + 1 to miWindows.Count-1 do
miWindows.Items[miWindowsSeparator.MenuIndex + 1].Free();

// Строим список окон
kNewItems := TList.Create();
try
for kI := MDIChildCount-1 downto 0 do
begin
if MDIChildren[kI] is TForm_MDIChild then
begin
kNewItem := TMenuItem.Create(Self);
kNewItems.Add(kNewItem);
kNewItem.Caption := MDIChildren[kI].Caption;
kNewItem.Tag := Integer(MDIChildren[kI]);
kNewItem.Checked := MDIChildren[kI] = Screen.ActiveForm;
kNewItem.OnClick := fOnWindowsClickMenu;
end;
end;
if kNewItems.Count > 0 then
begin
miWindowsSeparator.Visible := True;
kNewItems.Sort(fDoSort);
for kI := 0 to kNewItems.Count-1 do
begin
TMenuItem(kNewItems[kI]).Caption :=
IntToStr(kI+1) + ". "+ TMenuItem(kNewItems[kI]).Caption;
miWindows.Add(TMenuItem(kNewItems[kI]));
end;
end else
begin
miWindowsSeparator.Visible := False;
end;
finally
kNewItems.Free();
end;


 
Big ©   (2004-01-09 10:47) [4]

Спасибо! Все получилось. Использовал PostMessage.



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

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

Наверх




Память: 0.47 MB
Время: 0.028 c
1-63189
Tvon
2004-01-11 07:51
2004.01.20
Как прочесть из файла только первую строку?


1-63211
Creator
2004-01-10 18:05
2004.01.20
как послать письмо ??? которое 100% дойдет !!!


14-63381
Hitman
2003-12-29 11:45
2004.01.20
Цвет выделения


1-63060
miracle_fox
2004-01-08 22:08
2004.01.20
где найти форум по крмпоненте TICQClient


3-63006
chtr
2003-12-23 08:05
2004.01.20
Cannot access field as type Variant