Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Как получить message WM_vscroll не от формы, а от ScrollBox   Найти похожие ветки 

 
STARfish ©   (2004-08-18 15:10) [0]

Здравствуйте, Уважаемые! Подскажите как получить сообщение wm_vscroll  от компоненты на форме.
У меня получилось получить его от формы:

type
 procedure MyPaint(Var Param); message WM_vscroll;

 procedure TForm1.MyPaint(var Param);
  begin
   inherited;
   showmessage("Wassap!!!!");
end;

А вот как получить это сообщение от Скроллбокса на форме?


 
STARfish ©   (2004-08-18 15:24) [1]

Как же все таки получить его от скролла?...


 
WondeRu ©   (2004-08-18 15:25) [2]

пишешь компонент от TScroolbox у которого будет метод, который будет реагировать на WM_vscroll


 
STARfish ©   (2004-08-18 15:28) [3]

Не совсем понял.....
А hwnd тут имеет место?


 
Семен Сорокин ©   (2004-08-18 15:33) [4]

unit ScrBox;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, Forms;

type
 TScrollDirect = (sdVert, sdHorz);

 TScrollEvent = procedure (Sender: TScrollBox; Direct: TScrollDirect; Position: integer) of object;

 TScrBox = class(TScrollBox)
 private
   FOnScroll: TScrollEvent;
   FOnMouseEnter : TNotifyEvent;
   FOnMouseLeave : TNotifyEvent;
   procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
   procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
   procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST;
   procedure WMMouseEnter(var MSg: TMessage); message CM_MOUSEENTER;
   procedure WMMouseLeave(var MSg: TMessage); message CM_MOUSELEAVE;
 published
   property OnMouseEnter : TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
   property OnMouseLeave : TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
   property OnScroll: TScrollEvent read FOnScroll write FOnScroll;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Samples", [TScrBox]);
end;

{ ------------------------------- TScrBox ------------------------------------ }

procedure TScrBox.WMHScroll(var Message: TWMHScroll);
begin
inherited;
if Assigned(FOnScroll) then
 FOnScroll(TScrollBox(Self), sdHorz, HorzScrollBar.Position)
end;

procedure TScrBox.WMMouseEnter(var MSg: TMessage);
begin
inherited;
if Assigned(FOnMouseEnter) then
 FOnMouseEnter(self)
end;

procedure TScrBox.WMMouseLeave(var MSg: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then
 FOnMouseLeave(self)
end;

procedure TScrBox.WMNCHitTest(var Message: TMessage);
begin
DefaultHandler(Message)
end;

procedure TScrBox.WMVScroll(var Message: TWMVScroll);
begin
inherited;
if Assigned(FOnScroll) then
 FOnScroll(TScrollBox(Self), sdVert, VertScrollBar.Position)
end;

end.


 
STARfish ©   (2004-08-18 15:56) [5]

Окончательно запутался....
А нужно то всего лишь чуть чуть код изменить:

type
procedure MyPaint(Var Param); message WM_vscroll;

procedure TForm1.MyPaint(var Param);
 begin
  inherited;
  showmessage("Wassap!!!!");
end;


 
Григорьев Антон ©   (2004-08-18 16:33) [6]


> STARfish ©   (18.08.04 15:56) [5]
> Окончательно запутался....
> А нужно то всего лишь чуть чуть код изменить:


Да не получится его чуть-чуть изменить. Не может форма просто так реагировать на сообщения, посылаемые совсем другому окну, пусть даже и её дочернему. WondeRu и Семён Сорокин правильно советовали - написать свой компонент, выкинуть из программы ScrollBox и вставить этот компонент.


 
STARfish ©   (2004-08-18 16:35) [7]

Сэнкс элот!


 
wicked ©   (2004-08-18 16:50) [8]

или как drop-in вариант - переприсвоить этому самому ScrollBox"у св-во WindowProc...



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

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
4-1090304903
lexus3d
2004-07-20 10:28
2004.09.05
GetWindowText


1-1092881930
Alibaba
2004-08-19 06:18
2004.09.05
TForm


4-1090300887
[BAD]Angel
2004-07-20 09:21
2004.09.05
Как получить PID процессов?


4-1090302822
acidman
2004-07-20 09:53
2004.09.05
LPT под win2k/XP/NT


14-1092981324
vecna
2004-08-20 09:55
2004.09.05
Порадуемся за коллег из Мелкомягких