在DBGRID中或是其它的数据表输出控件中;用MOUSE浏览数据时,如何达到HotTrack效果 (200分)

  • 主题发起人 mamiles866
  • 开始时间
M

mamiles866

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DELPHIBBS上已经问了很多人了,得到的答案都不错误,或是某些高手,说得太简单,
如说用INFORPOWER控件,DXDBGRID等,但没说详细的代码。(注意,对我这样的低低手,
请详细给出代码最好)。
我的问题是:在DBGRID中或是其它的数据表输出控件中;;用MOUSE浏览数据时,,如果
MOUSE经过某一条记录时(是经过而不是CLICK)时,此条记录可以特别显示,(例如此条
记录的所有字段的值的字体都加大一号,颜色与众不同等)。而当MOUSE移走以后,则那
一行记录的所外STYLE又恢复原形。


注意请给我一个详细的例子或代码;;不要三言两语。
我的200分一次全给了。
 
这个问题有一点点点点点点难度。
先在DBGrid1MouseMove的事件里判断当前鼠标的位置,再根据鼠标的位置判断当前指向那一
条记录(必须调整好dbgrid的高度,显示整数记录数,不然不好判断)
如:
高度:101-105 显示记录集的第三条记录
高度:106-110 显示记录集的第四条记录
高度:110-115 显示记录集的第五条记录
高度:115-120 显示记录集的第六条记录
如果鼠标的位置在第四条记录,而当前记录指针在第六条,则将记录指针上移两条记录。
(如果你不想让dbgrid中的记录指针移动,用DisableControls属性。)
在此事件中调用下面的过程就可以了
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if 某个条件 then
begin
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.Canvas.Font.size := 11;
DBGrid1.Canvas.Brush.Color := clinfobk;
end
else
begin
DBGrid1.Canvas.Font.Color := clWindowText;
DBGrid1.Canvas.Font.size := 9;
DBGrid1.Canvas.Brush.Color := clWindow;
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

 
在DBGrid1DrawColumnCell里写:
if (条件) then
DBGrid1.Canvas.Font.Color:= clred;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
(字体)
 
首先,没有人有义务为你回答问题,请你以后能尊重别人
其次,请不要重复发贴
 
我也想知道答案,但是好象在DBGRID中,实现是比较不可能的.
 
顶部