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

Вниз

При максимизации MDI нужно чтобы оно оставалось в виде окна   Найти похожие ветки 

 
Vladix ©   (2006-10-13 15:31) [0]

Хотелось бы, чтобы при максимизации MDIChild окна оно не "встраивалось" в родительское, а оставалось окном, только растянутым во весь размер родителя. Как это сделать? Или может, есть какие -то компонентя для реализации подобных целей?


 
Игорь Шевченко ©   (2006-10-13 15:50) [1]


> Хотелось бы, чтобы при максимизации MDIChild окна оно не
> "встраивалось" в родительское, а оставалось окном, только
> растянутым во весь размер родителя


Перехватывай сообщение WM_SYSCOMMAND с параметром SC_MAXIMIZE, устанавливай сам нужные размеры окна.

Например, так:

unit Child;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm2 = class(TForm)
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   procedure WMSysCommand (var Message: TMessage); message WM_SYSCOMMAND;
   procedure MyMaximize;
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.MyMaximize;
var
 Rect: TRect;
begin
 GetWindowRect (Application.MainForm.ClientHandle, Rect);
 Height := Rect.Bottom - Rect.Top - GetSystemMetrics(SM_CXFRAME);
 Width := Rect.Right - Rect.Left - GetSystemMetrics(SM_CXFRAME);
end;

procedure TForm2.WMSysCommand(var Message: TMessage);
begin
 if (Message.WParam and $FFF0) = SC_MAXIMIZE then
   MyMaximize
 else
   inherited;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree;
end;

end.


unit main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus;

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   File1: TMenuItem;
   New1: TMenuItem;
   procedure New1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation
uses
 Child;

{$R *.dfm}

procedure TForm1.New1Click(Sender: TObject);
begin
 with TForm2.Create(Application) do
   Show;
end;

end.


 
Vladix ©   (2006-10-13 16:10) [2]

Спасибо! но...
Насколько я знаю, нужно еще изменить состояние окна в MAXIMIZED, сделать кнопку "Восстановить" вместо "Максимизировать", запретить перемещение и растягивание окна... Это все нужно делать вручную?


 
Игорь Шевченко ©   (2006-10-13 16:15) [3]

Vladix ©   (13.10.06 16:10) [2]


> Насколько я знаю, нужно еще изменить состояние окна в MAXIMIZED,
>  сделать кнопку "Восстановить" вместо "Максимизировать",
>  запретить перемещение и растягивание окна...


А это вряд ли выйдет c дочерними MDI-окнами.


 
Vladix ©   (2006-10-13 16:21) [4]

Может быть, Вы видели "1С:Предприятие 8.0"? Вот там это реализовано примерно так как мне хотелось бы. Интересно, каких усилий это стоило разработчикам и стоит ли загоняться в этом направлении?


 
Игорь Шевченко ©   (2006-10-13 16:27) [5]

Vladix ©   (13.10.06 16:21) [4]


> Может быть, Вы видели "1С:Предприятие 8.0"? Вот там это
> реализовано примерно так как мне хотелось бы. Интересно,
>  каких усилий это стоило разработчикам


Не видел, и не могу предполагать.


> стоит ли загоняться в этом направлении?


А зачем ? Сделать, разумеется, можно, вопрос только сколько времени сил и знаний это потребует.



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

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

Наверх




Память: 0.48 MB
Время: 0.057 c
15-1163092863
TUser
2006-11-09 20:21
2006.11.26
Размер djvu


15-1162578731
TUser
2006-11-03 21:32
2006.11.26
Свобода собраний


2-1162984640
daser
2006-11-08 14:17
2006.11.26
Как очистить СтрингГрид?


15-1161475863
Flash3
2006-10-22 04:11
2006.11.26
Кто нибудь знает альтернативу FlashPlayer у ?


2-1162912485
m-kirill-2003
2006-11-07 18:14
2006.11.26
ADOquery1