如何抓到sender為DBGrid中某個cell |
答題得分者是:Skyer
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
Skyer
高階會員 發表:43 回覆:111 積分:120 註冊:2002-04-04 發送簡訊給我 |
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 發送簡訊給我 |
[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 發送簡訊給我 |
我試了一下,功能是出來了,但是會有問題..
我修不好,請大家幫幫忙吧.. 放一個 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 發送簡訊給我 |
引言: 我試了一下,功能是出來了,但是會有問題.. 我修不好,請大家幫幫忙吧.. 放一個 Label 上去 Form 在 DBGrid 的 OnMoveMove 事件加入下面 CodeHello : 我試了一下沒錯耶, 請問是什麼問題?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
------
我不是高手, 高手是正在銀幕前微笑的人. |
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
感謝前輩```我要的功能已經可以了```
你原來的寫法是不是會滑鼠一直回到第一筆阿(在不管滑鼠移到哪一筆的情況下)??
我把其中一行拿掉就可以了~~~~
還是前輩有其他的問題ㄋ?? 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |