locate问题(50分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
在DBGRID的datasource指向的table用locate定位后,
请问如何在dbgrid中把当前记录设为第一条并选中(加深)呢?
即在dbgrid中不再是仅定位成的一个三角箭头
 

procedure Tyjzg_for.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (data.sjx_qy.fieldbyname('ss').asstring='√') then
begin
dbgrid1.canvas.Font.Style:=[fsBold];
dbgrid1.DefaultDrawColumnCell(Rect, DataCol,Column, State);
end;
end;
 
DBGrid1.Options:=DBGrid1.Options+[dgAlwaysShowSelection,dgRowSelect];
 
泥的意思我还不太明白。
是不是定位后,加亮显示选中 :?
如果是的话,只要让DBGRID重获焦点就可以了。
 
我也没有看明白,这分不好得呀!
 
TYZhang:你的方法能够加亮显示了,但如何才能把它放到dbgrid第一条呢?
 
如果要显示在第一条,有个龌龊的方法:

Var I,J:Integer;
begin
Table1.DisableControls;
Table1.Locate('LastName',Edit2.Text,[]);
J:=TDrawGrid(DBGrid1).rowcount;
For I:=1 To J do
begin
if Table1.Eof then Break;
Table1.Next;
end;
if Table1.Eof
then For J:=2 To I-1 do Table1.Prior
else For J:=1 To I-1 do Table1.Prior;
Table1.EnableControls;
end;
 
dana 已经讲清楚了 用DrawColumnCell事件把当前行的属性修改一下.
要不找一个其它的 DBGrid控件试试, 如: Express ....

 
dana的方法我试过了,不行
 
为什么不试我的方法................................................

.................................................................

............................................................愤怒!
 
我明白小天的意思,真正的解决方法在这里:

dbgrid1.SelectedRows.CurrentRowSelected := True;
 
TYZhang:你的方法不用试我就知道是对的,可是你有没有觉得这样有也太。。。。。。
 
除非重载DBGrid的方法,否则。。。。
 
接受答案了.
 
后退
顶部