Форум: "Основная";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизПри максимизации 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c