在dbgrid中如何实现:改变所选中一行的文字的颜色?(50分)

  • 主题发起人 主题发起人 yuanxianer
  • 开始时间 开始时间
Y

yuanxianer

Unregistered / Unconfirmed
GUEST, unregistred user!
在dbgrid中 我双击鼠标在dbgrid上的某一行时 想改变这一行的文字颜色
我该如何做? 请指点
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, DBTables;

type
TCustomDBGridCracker=class(TCustomDBGrid);//注意,要加入这句
TForm1 = class(TForm)
Table1: TTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin

with TCustomDBGridCracker(sender) do begin
if DataLink.ActiveRecord =Row-1 then // 如果被选中
begin
Canvas.Brush.Color :=clred; //选中时颜色
canvas.Font.Color :=clyellow; //选中的字体颜色
// canvas.Font.Style:=[fsBold]; //选中时的字体
//canvas.Font.Size :=10;
end
else begin //没有被选中时

{ if (DataSource.DataSet.RecNo mod 2)=0 then //可以试下加入这句,
canvas.brush.color:=$00FFF0E0 else } //会有什么效果,肯定会令你满意!

canvas.brush.color:=clwindow;
//canvas.Font.Style:=[];
//canvas.Font.Size :=9;
canvas.Font.Color :=clblack;
end;
defaultdrawcolumncell(Rect,DataCol,Column,State);
end;
end;

end.
 
再提供一些Delphi下DBGrid的编程技巧集合:
http://www.tomore.com/4/1355.html
 
to goostudio
谢谢你的代码 但你做的不能满足我的需要 我是要一行一行的选择
而且文字的颜色也要变 你的程序这都不行啊
再请路过的朋友给点意见 谢谢
 
接受答案
 
后退
顶部