powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ActionMainMenuBar и MDI
3 сообщений из 3, страница 1 из 1
ActionMainMenuBar и MDI
    #32327385
Дмитрий Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто нибудь сталкивался (и победил).
Delphi 7.
MDI интерфейс, меню - ActionMainMenuBar.
При разворачивании(maximize) MDIChild окна
на строке меню не появляются системные кнопки(_Ох).
Появляются при нажатии на любой пункт меню.
При закрытии, восстановлении они же не исчезают,
до нажатия на любой пункт меню.

Вот такой трабл.
...
Рейтинг: 0 / 0
ActionMainMenuBar и MDI
    #32341407
В actionMainMenuBar "системные" кнопки не являются "системными",
a создаются в модуле ACTNMENUS библиотеки VCL
в процедуре tCustomMainMenuBar.MDIChildMaximized
добраться до нее можно через actionMainMenuBar.TrackMenu
либо через сообщение
PostMessage( mainform.ActionMainMenuBar.Handle, CM_ENTERMENULOOP,0,0);
чтобы использовать PostMessage необходимо в uses добавить ActnMan;
После 2 дневных проб определил события в которые необходимо добавить сообщения

uses ActnMan;

{главная форма}
type
TMainForm = class(TForm)
ActionManager: TActionManager;
ActionMainMenuBar: TActionMainMenuBar;
procedure FormPaint(Sender: TObject);
procedure SetTrackMenu(value:boolean);
private
OkTrackMenu:boolean;
end;

procedure TMainForm.SetTrackMenu(value:boolean);
begin
OkTrackMenu:=value;
end;

procedure TMainForm.FormPaint(Sender: TObject);
begin
if Oktrackmenu then
begin
keybd_event($1B, 0, 0, 0); // эмулируем нажатие ESC иначе фокус останется
// на меню

PostMessage(ActionMainMenuBar.Handle,CM_ENTERMENULOOP,0,0);

{ или actionMainMenuBar.TrackMenu; }

OkTrackmenu:=false;
end;
end;


....................................
{дочерняя форма}

type
TChildform = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);

private
procedure WMSysCommand( var msg:TWMSysCommand);
message WM_SYSCommand;
end;


procedure tChildform.WMSysCommand( var msg:TWMSysCommand);

begin
{
при клике по строке заголовка формы CmdType=61458 форма
максимизируется, а системные кнопки не появляются
}

if msg.CmdType=61458 then msg.CmdType:=sc_Maximize;
inherited;
end;

procedure TChildForm.FormPaint(Sender: TObject);
begin
if OkTrackmenu then
begin
keybd_event($1B, 0, 0, 0);
PostMessage(mainform.ActionMainMenuBar.Handle, CM_ENTERMENULOOP, 0,0);
OkTrackmenu:=false;
end;
end;

procedure TChildForm.FormResize(Sender: TObject);
begin
mainForm.SetTrackmenu(true);
OkTrackmenu:=true;
end;

procedure TChildForm.FormCreate(Sender: TObject);
begin
mainForm.SetTrackmenu(true);
okTrackMenu:=true;
end;

procedure TChildForm.FormActivate(Sender: TObject);
begin
keybd_event($1B, 0, 0, 0);
PostMessage(mainform.ActionMainMenuBar1.Handle,CM_ENTERMENULOOP,0,0);
OkTrackmenu:=false;
end;


procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainForm.SetTrackmenu(true);
okTrackMenu:=true;
with dmSprav.dqSprav do
begin
Close;
end;
action:=caFree;
end;
...
Рейтинг: 0 / 0
ActionMainMenuBar и MDI
    #32342896
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Action Bands Update D7 , возможно он поможет.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ActionMainMenuBar и MDI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]