?怎么让鼠标在DBGrid内部不同列移动时,显示当前单元格Hint值?
???如何让鼠标在DBGrid内部不同列移动时,显示当前单元格Hint值???
表T1,列name、age、sex,ADOQuery1
假如鼠标移动到第二行的age列,在DBGrid1的Hint中显示28即可,如移动第一行,显示27即可,是移动,
要在DBGrid不同列中连续移动。
name age sex
11 27 男
22 28 女
已引入type,及相关单元。运行提示: Undeclared identifier: 'MouseToCell'
------解决方案--------------------
如果是DBGridEh的话就在其DBGridEh1DataHintShow函数里写上
Params.HintStr := Column.Field.AsString就可以了;
或者
Params.HintStr := Sender.DataSource.DataSet.FieldByName('隐藏列名').AsString
表T1,列name、age、sex,ADOQuery1
假如鼠标移动到第二行的age列,在DBGrid1的Hint中显示28即可,如移动第一行,显示27即可,是移动,
要在DBGrid不同列中连续移动。
name age sex
11 27 男
22 28 女
- Delphi(Pascal) code
type TMyGrid = Class(TCustomDBGrid); procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var row, col : integer; rec : integer; begin inherited; TDBGrid(Sender).MouseToCell(X, Y, col, row); if dgTitles in TDBGrid(Sender).Options then Dec(row); if dgIndicator in TDBGrid(Sender).Options then Dec(col); if TMyGrid(TDBGrid(Sender)).DataLink.Active and (row >= 0) and (col >= 0) then begin rec := TMyGrid(TDBGrid(Sender)).DataLink.ActiveRecord; try TMyGrid(TDBGrid(Sender)).DataLink.ActiveRecord := row; TDBGrid(Sender).Hint := 'Content of field : '+ TDBGrid(Sender).Columns[col].Field.AsString; Application.ActivateHint(Mouse.CursorPos); finally TMyGrid(TDBGrid(Sender)).DataLink.ActiveRecord:= rec; end; end; end;
已引入type,及相关单元。运行提示: Undeclared identifier: 'MouseToCell'
------解决方案--------------------
如果是DBGridEh的话就在其DBGridEh1DataHintShow函数里写上
Params.HintStr := Column.Field.AsString就可以了;
或者
Params.HintStr := Sender.DataSource.DataSet.FieldByName('隐藏列名').AsString