Ehlib的DBGridEh首列加序号
必须有首列(建一个)
dbgrideh-options-dgzndicator设置为false
dbgrideh.columns[0]-visual-color可以区分其他列的颜色
procedure TDBViewFrm.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin
if Column.Index = 0 then
if DBGridEh1.SumList.RecNo <> -1 then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
************************************************
procedure TDBViewFrm.DBGridEh1TitleClick(Column: TColumnEh);
//对dbgrid点击标题栏排序
var
i: Integer;
begin
if ADOQuery1.Active = True then
begin
for i := 1 to DBGridEh1.Columns.Count do
begin
//恢复所有标题字体为默认
DBGridEh1.Columns[i - 1].Title.Font.Color := clWindowText;
DBGridEh1.Columns[i - 1].Title.Font.Style := [];
end;
if (Column.Index <> 0) and (Column.Index <> 9) then //去掉不需要排序或不能排序的列。
begin
if ADOQuery1.Sort <> (Column.FieldName + ‘ ASC‘) then //判断原排序方式
begin
ADOQuery1.Sort:= Column.FieldName + ‘ ASC‘;
Column.Title.Font.Color := clRed;
//改变标题行字体为红色,表示当前的排序方式为升序
Column.Title.Font.Style := [fsBold];
end
else
begin
ADOQuery1.Sort:= Column.FieldName + ‘ DESC‘;
Column.Title.Font.Color := clBlue;
//改变标题行字体为红色,表示当前的排序方式为降序
Column.Title.Font.Style := [fsBold];
end;
end;
end;
end;
*********************************************************************
DBGridEh中分行分列、单元格的颜色设置
(1)分行不同颜色设置;在DBGridEh1DrawColumnCell中写;
if ADOQuery1.RecNo mod 2=0 then
begin
DBGridEh1.Canvas.Font.Color := clRed;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else begin
DBGridEh1.Canvas.Font.Color := clGreen;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
(2)分行不同背景颜色设置;在DBGridEh1DrawColumnCell中写;
if ADOQuery1.RecNo mod 2=0 then
begin
DBGridEh1.Canvas.Brush.Color := clRed;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else begin
DBGridEh1.Canvas.Brush.Color := clGreen;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
(3)符合条件的单元格颜色或者背景颜色设置;在DBGridEh1DrawColumnCell中写;
if Column.FieldName=‘价格‘ then
begin
if ADOQuery1.FieldByName(‘价格‘).AsFloat<0 then
begin
DBGridEh1.Canvas.Font.Color := clRed;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
(4)交叉设置列颜色
1、为DBGridEh的每列的Color属性设置值。
2、将DBGridEh的RowColorFlag设为false;
注:DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Rect:代表在画布中cell的位置位置所在,也就是你要对哪个区域进行重画;
DataCol:代表columns数组中column的标号
Column:描述cell的显示属性和对应的字段属性的tcolumn对象
State:描述cell是否有输入焦点、是否被选中、是否处于锁定模式(如同column header)
*******************************************************************
(5)设置格线颜色
procedure Tfm1.FormCreate(Sender: TObject);
begin
dbgrideh2.FixedColor:=clWhite;
dbgrideh2.GridLineColors.DarkColor:=clRed;
dbgrideh2.GridLineColors.BrightColor:=clRed;
dbgrideh2.Flat:=true;
dbgrideh2.Ctl3D:=false; //这样就可以设置边框颜色
dbgrideh2.Options:=dbgrideh2.Options+[dgRowSelect];
end;
*******************************************************************
(5)多行选择复制
procedure Tfm1.btnCopyClick(Sender:TObject);
var
i:integer;
booklist:TBookmarklist;
bookstr:Tbookmarkstr;
begin
bookstr:=Table1.bookmark;
try
booklist:=dbgrideh2.SelectedRows;
for i:=0 to booklist.count-1 do
begin
Table1.bookmark:=booklist[i];
Memo1.lines.add(Table1.fieldbyname(‘字段1‘).asstring);
Memo1.lines.add(Table1.fieldbyname(‘字段2‘).asstring);
end;
finally
Table1:=bookstr;
end;
end;