判斷滑鼠在DBGrid中的位置? |
尚未結案
|
mathewzhao
中階會員 ![]() ![]() ![]() 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
//判断在dbgrid记录中位置
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
col,row:integer;
begin
col:=column.Index ;
row:=table1.RecNo ;
edit1.Text :=inttostr(col) ;
edit2.Text :=inttostr(row) ;
end;
//对于是否在在Record上,可以用 procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
....
end; procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
.....
end; procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
....
end; procedure TForm1.DBGrid1Exit(Sender: TObject);
begin
....
end; 来判断的!
|
mathewzhao
中階會員 ![]() ![]() ![]() 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
Hi!sos_admin
區分點擊位置的原因如下:
1)如果在Record上DblClick,則把當前Record放到StringGrid中,
2)如果在DBGrid的空白處DblClick,應沒有資料放到StringGrid中,
但實際確將最後一個Record放到StringGrid中。
故有此問
procedure TForm1.DBGrid1DblClick(Sender: TObject); var I:integer; begin for I := 0 to adoquery1.FieldCount-1 do begin stringgrid1.Cells[i,0]:=adoquery1.Fields[i].AsString; end; end; |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
channel
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: Hi!sos_admin 區分點擊位置的原因如下: 1)如果在Record上DblClick,則把當前Record放到StringGrid中, 2)如果在DBGrid的空白處DblClick,應沒有資料放到StringGrid中, 但實際確將最後一個Record放到StringGrid中。 故有此問其實您在DBGrid的空白處Double Click,肯定會有資料寫入StringGrid中,會寫入StringGrid的原因是根據您的adoquery1的指標指向目前的那一筆,而不是因為您在DBGrid的空白處Double Click就不會寫資料到StringGrid中,所有這並不是程式的問題,您可以向user這樣解釋… ~小弟淺見,參考看看~procedure TForm1.DBGrid1DblClick(Sender: TObject); var I:integer; begin for I := 0 to adoquery1.FieldCount-1 do begin stringgrid1.Cells[i,0]:=adoquery1.Fields[i].AsString; end; end;
------
~小弟淺見,參考看看~ |
mathewzhao
中階會員 ![]() ![]() ![]() 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
mathewzhao
中階會員 ![]() ![]() ![]() 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
|
code6421
版主 ![]() ![]() ![]() ![]() 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
是要這樣嗎??
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables; type TForm1 = class(TForm) Table1: TTable; DataSource1: TDataSource; DBGrid1: TDBGrid; ListBox1: TListBox; Table1NAME: TStringField; Table1SIZE: TSmallintField; Table1WEIGHT: TSmallintField; Table1AREA: TStringField; Table1BMP: TBlobField; procedure DBGrid1DblClick(Sender: TObject); procedure DBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure DBGrid1CellClick(Column: TColumn); procedure FormCreate(Sender: TObject); private FHitCell:Boolean; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.DBGrid1DblClick(Sender: TObject); begin if FHitCell then ListBox1.Items.Add(Table1.FieldByName('NAME').AsString); end; procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FHitCell:=False; end; procedure TForm1.DBGrid1CellClick(Column: TColumn); begin FHitCell:=True; end; procedure TForm1.FormCreate(Sender: TObject); begin FHitCell:=False; end; end.直接繼承至DBGrid,改寫MouseDown函式會更好. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing... |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |