Cita:
Empezado por Bluefox
...
No se si me explique bien es un poco lioso y un comportamiento raro el que tiene.
|
Hola Bluefox.
Te has explicado claramente. En lo particular prefiero que no se muestren ScrollBars en el MDIForm, esto lo logras del siguiente modo:
Código Delphi
[-]
...
implementation
function ClientWndProc(wnd: HWND; Msg: Cardinal; wParam, lParam: Integer): Integer; stdcall;
begin
if Msg = WM_NCCALCSIZE then
if (GetWindowLong(wnd, GWL_STYLE)and(WS_HSCROLL or WS_VSCROLL)) <> 0 then
SetWindowLong(wnd, GWL_STYLE,
GetWindowLong(wnd, GWL_STYLE) and not (WS_HSCROLL or WS_VSCROLL));
Result:= CallWindowProc(Pointer(GetWindowLong(wnd, GWL_USERDATA)), wnd, Msg, wParam, lParam);
end;
procedure TMDIForm.FormCreate(Sender: TObject);
begin
if (ClientHandle <> 0)and(GetWindowLong(ClientHandle, GWL_USERDATA) = 0) then
SetWindowLong(ClientHandle, GWL_USERDATA,
SetWindowLong(ClientHandle, GWL_WNDPROC, Integer(@ClientWndProc)));
end;
...
Obviamente, de este modo no se provoca el efecto que mencionas y siempre dispones de los métodos
Cascade y
Tile para organizar los MDIChilds:
Código Delphi
[-]
procedure TMDIForm.Cascade1Click(Sender: TObject);
begin
Cascade;
end;
procedure TMDIForm.TileHor1Click(Sender: TObject);
begin
TileMode:= tbHorizontal;
Tile;
end;
procedure TMDIForm.TileVer1Click(Sender: TObject);
begin
TileMode:= tbVertical;
Tile;
end;
Saludos