線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2396
推到 Plurk!
推到 Facebook!

如何抓到sender為DBGrid中某個cell

答題得分者是:Skyer
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-23 16:10:05 IP:61.220.xxx.xxx 未訂閱
1.滑鼠如何移動到DBGrid中某個cell儲存格,由cell的font.style來判斷滑鼠的cursor.style??我不知如何抓到sender為DBGrid中某個cell
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-28 23:52:40 IP:61.217.xxx.xxx 未訂閱
DBGrid 有個 MouseCoord function 在 OnMouseMove 事件中 執行
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ACoord: TGridCoord;
begin
  ACoord := DBGrid1.MouseCoord(X, Y);
  ACoord.X;
  ACoord.Y;
end;
則 ACoord.X 是Mouse指到的Column ACoord.Y 是Mouse指到的Row -- Skyer
------
--
Regards,
Skyer
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-29 13:30:38 IP:61.220.xxx.xxx 未訂閱
[quote] DBGrid 有個 MouseCoord function 在 OnMouseMove 事件中 執行
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ACoord: TGridCoord;
begin
  ACoord := DBGrid1.MouseCoord(X, Y);
  ACoord.X;
  ACoord.Y;
end;
則 ACoord.X 是Mouse指到的Column ACoord.Y 是Mouse指到的Row 我complier會有錯誤 ACoord.X; ACoord.Y; X,Y是座標位置~~~如何能指到column?? 請前輩再指點````
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-29 19:53:23 IP:61.217.xxx.xxx 未訂閱
我試了一下,功能是出來了,但是會有問題.. 我修不好,請大家幫幫忙吧..    放一個 Label 上去 Form 在 DBGrid 的 OnMoveMove 事件加入下面 Code
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ACoord: TGridCoord;
begin
  ACoord := DBGrid1.MouseCoord(X, Y);
  if (ACoord.X > 0) and (ACoord.Y > 0) then begin
    DBGrid1.DataSource.DataSet.RecNo := ACoord.Y;
    Label1.Caption := DBGrid1.Fields[ACoord.X-1].AsString;
  end;
end;
-- Skyer
------
--
Regards,
Skyer
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-30 09:34:54 IP:210.58.xxx.xxx 未訂閱
引言: 我試了一下,功能是出來了,但是會有問題.. 我修不好,請大家幫幫忙吧.. 放一個 Label 上去 Form 在 DBGrid 的 OnMoveMove 事件加入下面 Code
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ACoord: TGridCoord;
begin
  ACoord := DBGrid1.MouseCoord(X, Y);
  if (ACoord.X > 0) and (ACoord.Y > 0) then begin
    DBGrid1.DataSource.DataSet.RecNo := ACoord.Y;
    Label1.Caption := DBGrid1.Fields[ACoord.X-1].AsString;
  end;
end;
-- Skyer
Hello : 我試了一下沒錯耶, 請問是什麼問題?
------


我不是高手, 高手是正在銀幕前微笑的人.
yabula
初階會員


發表:47
回覆:117
積分:42
註冊:2002-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-30 09:56:52 IP:61.220.xxx.xxx 未訂閱
感謝前輩```我要的功能已經可以了``` 你原來的寫法是不是會滑鼠一直回到第一筆阿(在不管滑鼠移到哪一筆的情況下)?? 我把其中一行拿掉就可以了~~~~ 還是前輩有其他的問題ㄋ?? procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var ACoord: TGridCoord; begin ACoord := DBGrid1.MouseCoord(X, Y); if (ACoord.X > 0) and (ACoord.Y > 0) then begin // DBGrid1.DataSource.DataSet.RecNo := ACoord.Y; Label1.Caption := DBGrid1.Fields[ACoord.X-1].AsString; end; if (ACoord.X > 0) and (ACoord.Y > 0) then begin if Sender is TDBGrid then begin if TDBGrid(Sender).Columns[ACoord.x-1].Font.style=fsUnderline] then Screen.Cursor:=crHandPoint else Screen.Cursor:=crArrow; end else Screen.Cursor:=crArrow; end; end;
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-30 14:38:25 IP:61.217.xxx.xxx 未訂閱
如果是您要的功能的話 就請您給給分吧 < > 您的支持會是我的動力 < > -- Skyer
------
--
Regards,
Skyer
系統時間:2024-05-04 15:27:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!