![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Главная форма как в Delphi IDE
КаПиБаРа © (2005-01-31 10:11:00)Нужно сделать форму, которяв максимизированном состоянии занимала бы не весь экран, а была бы высотой 60 пикселов.
Есть у кого нибудь наработки?
А то у меня то в одном случае не срабатывает то в другом. В общем прыгаю с бубном :(
В общем не изменяется размер формы, если она создается максимизированной. Если код раскомментировать, проблема устраняется, однако при этом форма разворачивается на весь экран при максимизации из нормального состояния.
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
...
procedure TMainForm.WMWindowPosChanging(var Message: TWMWindowPosChanging);
var
Placement: TWindowPlacement;
begin
GetWindowPlacement(Handle, @Placement);
{ if ((Message.WindowPos.flags and SWP_SHOWWINDOW) = 0) or ((Message.WindowPos.flags and SWP_FRAMECHANGED) = 0) then
begin
inherited;
Exit;
end;}
if (Placement.showCmd = SW_SHOWMAXIMIZED)then
Message.WindowPos.cy := 60
else
inherited;
end;
КаПиБаРа (2005-01-31 12:21:00) [1]TUser © (31.01.05 10:24) [4]
Этот способ подошол для не главных окон, которые в максимизированном состоянии должны распологаться под главными.
Спасибо всем за помощь.
КаПиБаРа (2005-01-31 10:45:00) [2]Вот как все просто. Чесно говоря не думал что Constraints работает при развернутом окне. Спасибо.
TUser (2005-01-31 10:24:00) [3]
procedure TForm1.WMGETMINMAXINFO(var Msg:TWMGetMinMaxInfo);
begin
inherited;
Msg.MinMaxInfo^.ptMaxSize:=Point(Screen.Width,Height);
end;
TUser (2005-01-31 10:22:00) [4]Надо перехватить событие WM_GetMinMaxInfo и прописать соотвествующие параметры.
Александр Иванов (2005-01-31 10:21:00) [5]Зачем такие сложности? По-моему можно обойтись простым SDI интерфейсом и стандартными констрейтами.
Stanislav (2005-01-31 10:19:00) [6]Constraints.MaxHeight:=60.