Q&A

  • Stringgrid에서 Scrollbar의 검색...
Stringgrid에 있는 Scrollbar를 조작했을때 현재 조작되고 있는

것이 수평인지 수직인지를 어떻게 검색하죠?

수평일때와 수직일때 다른 작업을 하고 싶거든요..



한수 부탁드립니다....

1  COMMENTS
  • Profile
    최석기 2000.08.26 03:37
    전문성 wrote:

    > Stringgrid에 있는 Scrollbar를 조작했을때 현재 조작되고 있는

    > 것이 수평인지 수직인지를 어떻게 검색하죠?

    > 수평일때와 수직일때 다른 작업을 하고 싶거든요..

    >

    > 한수 부탁드립니다....



    안녕하세요.. ^^

    델파이세상(http://www.freechal.com/delphiworld)에 최석기 입니다..



    어떤 일때문인지는 모르겠지만

    StringGrid에 WindowProc를 바꿔치기하면 될꺼 같네요.



    다음 소스 참고하세요..



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Grids;



    type

    {$IFDEF WIN32}

    WParameter = LongInt;

    {$ELSE}

    WParameter = Word;

    {$ENDIF}

    LParameter = LongInt;



    TForm1 = class(TForm)

    StringGrid1: TStringGrid;

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;





    var

    Form1: TForm1;

    OldWindowProc : Pointer;



    implementation



    {$R *.DFM}



    function NewWindowProc(WindowHandle : hWnd;

    TheMessage : WParameter;

    ParamW : WParameter;

    ParamL : LParameter) : LongInt

    {$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF}

    begin



    if TheMessage = WM_VSCROLL then begin

    ShowMessage('수직');

    end;



    if TheMessage = WM_HSCROLL then begin

    ShowMessage('수평');

    end;



    NewWindowProc := CallWindowProc(OldWindowProc,

    WindowHandle,

    TheMessage,

    ParamW,

    ParamL);

    end;



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    OldWindowProc := Pointer(SetWindowLong(StringGrid1.Handle,

    GWL_WNDPROC,

    LongInt(@NewWindowProc)));

    end;



    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    SetWindowLong(StringGrid1.Handle,

    GWL_WNDPROC,

    LongInt(OldWindowProc));

    end;



    end.