全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3339
推到 Plurk!
推到 Facebook!

如何获取鼠标点选的listview指定行列的值。

尚未結案
dragon100
一般會員


發表:20
回覆:11
積分:6
註冊:2004-06-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-25 10:22:53 IP:61.167.xxx.xxx 未訂閱
请指教
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-25 18:49:34 IP:220.130.xxx.xxx 未訂閱
procedure TForm.ListViewDblClick(Sender: TObject);
var
  ListItem: TListItem;
begin
  // 你要的應該是底下這一行吧..
  ListItem:=ListView.GetItemAt(Mouse_X,Mouse_Y);
  if Assigned(ListItem) and ListItem.Selected then begin
    if Assigned(ListItem.Data) then begin
      // 執行對應的動作...
    end;
  end;
end;
dragon100
一般會員


發表:20
回覆:11
積分:6
註冊:2004-06-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-26 16:31:56 IP:221.209.xxx.xxx 未訂閱
你所写的我没有调试出来,请问mouse_x,mouse_y什么意思?我是说将所选择的listview的行列的值选出来。 a b c d e 1 2 3 4 5 6 7 8 9 10 11 11 12 12 13 如选择鼠标点击第三行第三列就把值12取出,点击第一行第三列就把值3选出的方法?
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-26 17:08:45 IP:203.67.xxx.xxx 未訂閱
1. 一開始你就會把每個值的指標存在ListItem.Data中. 2. 定義二個Public變數Mouse_X, Mouse_Y, 在OnMouseMove時, 一直Update這個值。 3. 我的範例中, 是Double Click時觸發, 從你的例子中, 你要的值只是存放在ListItem.Caption. 那你只要ShowMessage(ListItem.Caption)就是那個值, 如果你的值是放在ListItem.Data, 則必須利用以下指令, Value:=Integer(ListItem.Data^); 取回對應的指標值, 而Value應該就是你要的結果。
dragon100
一般會員


發表:20
回覆:11
積分:6
註冊:2004-06-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-26 19:04:16 IP:221.209.xxx.xxx 未訂閱
也许我比较笨,可以给我作个例子看看吗?
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-27 11:25:18 IP:203.67.xxx.xxx 未訂閱
不知道以下內容是不是能幫上你的忙..
[在FormCreate程式段]
ListItem:=ListView.Items.Add;
ListItem.Caption:='XXX';  // 把你要的資料依序放入Caption;    [在MouseMove程式段]
procedure TFM_Main.ListViewMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  ListItem: TListItem;
  Str: String;
begin
  // 將目前的滑鼠位置記錄下來..
  Mouse_X:=X;
  Mouse_Y:=Y;
  ListItem:=ListView.GetItemAt(Mouse_X,Mouse_Y);
  // 如果滑鼠移到小圖示上時, 改成Hand型的滑鼠游標。
  if Assigned(ListItem) then begin
    ListView.Cursor:=crHandPoint;
  end else begin
    ListView.Cursor:=crDefault;
  end;
end;    [在Double Click的程式段]
ListItem:=ListView.GetItemAt(Mouse_X,Mouse_Y);
if Assigned(ListItem) and ListItem.Selected then begin
  // 依你的需求, 似乎只要識別Caption的值。
  ShowMessage(ListItem.Caption);
end;
系統時間:2024-05-18 21:58:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!