![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как активировать MDIChildlen[N]? [D5, Win2k]
Unknown user © (2004-12-22 18:27:00)Есть у TForm методы Next и Previous, позволяющие переключить фокус на следующую/предыдущую MDIChildlen, а как активировать MDIChildlen[N]?
Unknown user (2004-12-23 18:29:00) [1]Попробуйте создать New|Projects|MDIApplication, затем в обработчике OnResize TMDIChild добавить showmessage('resize'), TMDIChild.WindowState:=wsMaximized и при переключении с одной MDI формы на другую при помощи MDIChildren[1].Show, BringToFront, SendMessage, неважно как, окно MDIChild сначала уменьшается в размерах, затем снова разворачивается на всю клиентскую область родительского окна. Как этого избежать? При Next и Previous такого не происходит.
Unknown user (2004-12-23 18:19:00) [2]2 MBo. Информации по этому поводу нигде не нащел. Неужели я первый кто столкнулся с такой проблемой?
MBo (2004-12-22 21:12:00) [3]procedure TMainForm.ToolButton12Click(Sender: TObject);
begin
SendMessage(CLientHandle,WM_MDIACTIVATE,MDIChildren[Random(MdiChildCount-1)+1].handle,0);
end;
TMDIChild = class(TForm)
Memo1: TMemo;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure WMMdiActivate(var Msg : TWMMdiActivate); message WM_MDIACTIVATE;
...
procedure TMDIChild.WMMdiActivate(var Msg: TWMMdiActivate);
var
Style: Longint;
begin
if (Msg.ChildWnd = Handle) and (Msg.ActiveWnd = 0) and
(biSystemMenu in BorderIcons) then begin
Style := GetWindowLong(Handle, GWL_STYLE);
if (Style and WS_MAXIMIZE <> 0) and (Style and WS_SYSMENU = 0) then
SendMessage(Handle, WM_SIZE, SIZE_RESTORED, 0);
end;
end;
(из borland конференций)
MBo (2004-12-22 20:51:00) [4]Whenever an MDI child is activated, however, it moves to the front of the list. Thus, use I to index over all forms in the array, but not to refer to a specific form.
Unknown user (2004-12-22 18:58:00) [5]2 Gero. Prev, Next работает отлично. Как же быть?
Gero (2004-12-22 18:50:00) [6]
> Unknown user © (22.12.04 18:48)
> Меняет состояние окна из Maximized в Normal, затем обратно
Это недоработка MDI.
Unknown user (2004-12-22 18:48:00) [7]2 Gero. Почему-то работает неправильно. Меняет состояние окна из Maximized в Normal, затем обратно, и не срабатывает для MDIChildlen[0].
Gero (2004-12-22 18:37:00) [8]MDIChildlen[N].BrightToFront