程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi中SendMessage使用技巧(2)

Delphi中SendMessage使用技巧(2)

編輯:Delphi

2.對滾動事件做出響應,在WndProc方法中加入如下處理代碼:

if (Msg.Msg=WM_VSCROLL) and
(Msg.WParamLo=SB_ENDSCROLL) then
    begin
//獲得鼠標位置對應的列
     ItemIndex:=ItemAtPos(Point,true);
   Form1.Edit1.Text:=inttostr(ItemIndex);
   inherited;
    end
   else
   inherited;

當程序接收到WM_VSCROLL消息,且WParamLo參數為SB_ENDSCROLL時,表示豎 直滾動條停止滾動,就可以用ItemAtPos方法確定與鼠標位置對應的ItemIndex。 ItemAtPos方法的Point參數是一個TPoint類型的變量,用來保存鼠標的位置。 

3.定義方法ListBoxMouseMove,在鼠標移動時,將當前位置保存在Point中:

procedure TForm1.ListBoxMouseMove(Sender:
TObject; Shift: TShiftState; X,Y: Integer);
    begin
     Point.X:=X;
     Point.Y:=Y;
    end;

4.在運行期創建和初始化列表框,並指定列表框的MouseMove事件對應上一步 定義的ListBoxMouseMove方法。在主窗體的Create事件中輸入下面的代碼:

begin

Point.X:=0;
Point.Y:=0;
//創建自定義列表框
List:=TMyListBox.Create(Form1);
List.Parent:=Form1;
List.Left:=5;
List.Top:=30;
List.Width:=150;
List.Height:=200;
for i:=0 to 300 do
begin
List.Items.Add(inttostr(i)); //初始化
end;
//指定處理MouseMove事件的方法
List.OnMouseMove := ListBoxMouseMove;
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved