![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в MDI-application избавиться от появления ScroollBar, [D5, Win2k, WinXP]
Vladimir Prokofiev © (2002-08-01 14:22:00)когда дочерняя форма залезает за край основной. Как это сделано у Word, например.
Dmk (2002-08-03 01:39:00) [1]function ClientWindowProc(wnd:HWND; msg:Cardinal; wparam,lparam:Integer):Integer;stdcall;
var f:Pointer;
begin
f := Pointer(GetWindowLong(wnd,GWL_USERDATA));
case msg of
WM_NCCALCSIZE:
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));
end;
//....
Result := CallWindowProc(f,wnd,msg,wparam,lparam);
end;
//..............................................................................
procedure TMainForm.FormCreate(Sender: TObject);
begin
if ClientHandle <> 0 then
begin
if GetWindowLong(ClientHandle, GWL_USERDATA) <> 0 then Exit; {cannot subclass client window, userdata already in use}
SetWindowLong(ClientHandle, GWL_USERDATA, SetWindowLong(ClientHandle,
GWL_WNDPROC, integer(@ClientWindowProc)));
end;
end;
Dmk (2002-08-03 01:20:00) [2]:)
Song (2002-08-01 15:30:00) [3]не поможет. Тут нужен спец обработчик
MrAngel (2002-08-01 14:49:00) [4]Просто поставь (в свойствах для скролов) Visible:=False