Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

ScrollBar   Найти похожие ветки 

 
Dmk   (2002-06-26 23:22) [0]

Можно ли убрать ScrollBar"s из MainForm, если она MDIForm?
Нужно, чтоб когда Child уезжает за границу MDI они не появлялись.


 
Dmk   (2002-06-27 00:15) [1]

Нельзя?


 
tsarevep   (2002-06-27 00:30) [2]

Можно. Но незнаю как. Где то читал. В генофонд залазить надо.


 
Dmk   (2002-06-27 00:32) [3]

AutoScroll := false не помогает. :(


 
alena.svt   (2002-06-27 00:45) [4]

AutoScroll тут вообще не причем.


 
Dmk   (2002-06-27 02:44) [5]

Может быть MainForm должна быть не TForm,а TCustomForm?


 
Song   (2002-06-27 08:54) [6]

Через SetWindowLong() child окнам Вы должны назначить обработчик ClientWdnProc который на событие WM_NCCALCSIZE будет убирать стили WS_HSCROLL и WS_VSCROLL после чего передавать управление на родительский (CallWindowProc).


 
Игорь Шевченко   (2002-06-27 09:54) [7]

{ Избавление от ScrollBar"ов в MDI-форме. (С) Peter Below (TeamB) }
{ Не надо VCL переписывать :- }

unit MainForm;

interface

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

type
TfMain = class(TForm)
MainMenu1: TMainMenu;
Newchild1: TMenuItem;
Newchild2: TMenuItem;
procedure Newchild2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fMain: TfMain;

implementation

uses ChildForm;

{$R *.DFM}

procedure TfMain.Newchild2Click(Sender: TObject);
begin
with TfChild.Create(Application) do
Show();
end;

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 TfMain.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;

end.


 
Song   (2002-06-27 10:33) [8]

2Игорь Шевченко © (27.06.02 09:54)
Ну вот, всю малину испортили... :-((

:D


 
Dmk   (2002-06-28 00:36) [9]

Мде... Этот ответ застал меня на переписи своего класса окна.
Опыта работы с формами маловато. :(
Ребят! Я Вам очень благодарен. На написание класса я бы потратил наверно неделю не меньше, а на его отладку ... даже и не знаю.

TNX. :)



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

Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
1-47599
Администратор
2002-06-28 21:05
2002.07.15
Поиск окон.


1-47343
PTE
2002-06-27 14:10
2002.07.15
RadioButton -ы и RadioGroup


3-47221
Я_Чайник
2002-06-20 08:56
2002.07.15
Неповторяющиеся данные в DBGrid


1-47310
shiva502
2002-06-27 14:40
2002.07.15
TEdit не воспринимает Unicode


14-47782
Ajax
2002-06-13 23:55
2002.07.15
Мдя... :-(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский