DBGrid中记录的颜色的问题!thx!(100分)

  • 主题发起人 主题发起人 ludao
  • 开始时间 开始时间
L

ludao

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]如何控制当光标移动到某条记录时,该记录的颜色区分于其他记录?
代码要写到什么位置合适?thx!:) 有代码更好!
 
光标移动到某条记录,区别其他记录。默认的不就是吗?
如果你想改成其他颜色,那么似乎在OnDrawColumn中可以。
 
procedure TFrmsecVoucher.myDBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if gdselected in state then
exit;
myDBGrid2.Canvas.Brush.Color:=clMoneyGreen;
myDBGrid2.DefaultDrawColumnCell(Rect,dataCol,Column,state);
myDBGrid2.Canvas.Pen.Color:=$00C08000;
myDBGrid2.Canvas.MoveTo(rect.Left,rect.Bottom);
myDBGrid2.Canvas.LineTo(rect.right,rect.Bottom);
myDBGrid2.Canvas.MoveTo(rect.Right,rect.Bottom);
myDBGrid2.Canvas.LineTo(rect.right,rect.Bottom);
end;
 
的确,我也想知道这问题的解决方法,以前用PB的时候,可以通过代码的编写实现,现在用DELPHI,不知道怎么弄???望解答。简单的说,就是光标的焦点在DBGRID中的哪个位置,就使这个位置所处的那行变成兰色,方便使用者明白自己正在对哪行进行操作。
 
to xy619xy:
其實你所說的問題,用Delphi的DBGird的Options下面的有個dgRowSelect的屬性為True
就可以了;
 
将dbGrid控件 Option中dgRowSelect属设设为True;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DbGrid1 do
begin
if gdSelected in State then
begin
Canvas.Brush.Color := $00C08080;
Canvas.Font.Color := clWhite;
end;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;


 
的确,把DgAlwaysShowSelection置为true,可以达到我所希望的效果,谢谢了。
 
进来看看[:)]
 
按照各位大虾的方法,是可以达到目的,但是有一点:
那样的话,DBGrid的readonly属性就失效了!我想能直接对表进行修改等操作!
各位可有高见?thx!:)
 
//将dbGrid控件 Option中dgRowSelect属设设为True
//使Dbgrid选中行颜色改变,双击进入编辑状态
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with DBGrid1 do
begin
if gdSelected in State then
begin
Canvas.Brush.Color := $00C08080;
Canvas.Font.Color := clWhite;
end;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
if dgEditing in DBGrid1.Options then
begin
if not (dgRowSelect in DBGrid1.Options) then
DBGrid1.Options := DBGrid1.Options + [dgRowSelect] - [dgEditing] ;
end
else
begin
if dgRowSelect in DBGrid1.Options then
begin
DBGrid1.Options := DBGrid1.Options - [dgRowSelect] + [dgEditing] + [dgAlwaysShowEditor];
DBGrid1.Options := DBGrid1.Options - [dgRowSelect] + [dgEditing] - [dgAlwaysShowEditor]
end
end
end;
 
多人接受答案了。
 
后退
顶部