分享

delphi DBGridEh 首列加序号

 独孤求财 2012-03-20

delphi DBGridEh 首列加序号

时间:2011-5-26来源:yang 作者: peng点击: 73次

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;    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多