to : kuangning(郎之间,穷人) 呵呵 大哥也来了,那小弟就不献丑了!! to ruolink(诸葛若云) 有什么快问楼上的大哥把
不好意思看错题目了 这样能行吗? procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if gdSelected in state then begin DBGrid1.canvas.Brush.Color := clred ; end ; DBGrid1.DefaultDrawColumnCell (rect,datacol,column,state ); end;
const Rect: TRect; Field: TField; State: TGridDrawState);begin if Table1.FieldByName('Size').AsFloat > 10 then DBGrid1.Canvas.Font.Color := clRed; DBGrid1.DefaultDrawDataCell(Rect, Field, State); end;
都可以,但如果你是要按记录集中某字段来标上不同的颜色的话,可以:procedure TfrmTemp.DG_temprawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if QryPD.fieldbyname('a').Asfloat<0 then with (Sender as TDBGrid).Canvas do begin Brush.Color := RGB(254,163,181); FillRect(Rect); TextOut(Rect.Left, Rect.Top, Column.Field.AsString); end else if QryPD.fieldbyname('a').Asfloat>0 then with (Sender as TDBGrid).Canvas do begin Brush.Color := RGB(186,221,185); FillRect(Rect); TextOut(Rect.Left, Rect.Top, Column.Field.AsString); end end;
小新国际:帮忙帮到底么:)呵呵,分数肯定少不了的:)
不过我的是不用鼠标点击,窗体出来的时候直接改变某一列的颜色
你看一下,能不能帮上忙
procedure Tfrmclerktable.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if (acol = 6) and(arow >0)or (acol >7) and(arow >0) then
begin
StringGrid1.Canvas.Brush.Color := clinfobk;
StringGrid1.Canvas.pen.Color := StringGrid1.Font.Color ;
StringGrid1.canvas.fillRect(rect);
StringGrid1.Canvas.textout(rect.left+1,rect.Top ,StringGrid1.cells[acol,arow]);
end;
end;
dbgird1.canvas.Brush.Color := clRed;
dbgird1.canvas.FillRect(rect);
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables;type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1TitleClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
FColumn: TColumn ;implementation{$R *.DFM}procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin if FColumn <> nil then FColumn.Color := clwhite ;
FColumn:= Column ;
Column.Color := clred ;
end;procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if FColumn <> nil then FColumn.Color := clwhite ;
FColumn:= Column ; column.Color := clred ;
end;end.看一下吧,能完成
还有,看一下ehlib这个包吧
呵呵
大哥也来了,那小弟就不献丑了!!
to ruolink(诸葛若云)
有什么快问楼上的大哥把
这样能行吗?
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in state then
begin
DBGrid1.canvas.Brush.Color := clred ;
end ;
DBGrid1.DefaultDrawColumnCell (rect,datacol,column,state );
end;
if Table1.FieldByName('Size').AsFloat > 10 then
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if QryPD.fieldbyname('a').Asfloat<0 then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color := RGB(254,163,181);
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
end
else if QryPD.fieldbyname('a').Asfloat>0 then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color := RGB(186,221,185);
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Column.Field.AsString);
end
end;