⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ehlib.rar.txt

📁 EHLIB使用说明 TDBGridEh 允许在多列上创建标题
💻 TXT
📖 第 1 页 / 共 3 页
字号:
begin 
   if DBGridEh1.SumList.RecNo mod 2 = 1 then 
     Background := $00FFC4C4 
   else 
     Background := $00FFDDDD; 
end; 


【DBGridEh 在某些条件下某行显示特定颜色】 
procedure TForm1.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState); 
begin 

  //在 name 字段值为 aaa 的行设置行背景色(ado 设置情况下) 
  if ADOQuery1.FieldByName(’name’).AsString = ’aaa’ then 
      Background := $00FFC4C4 

  //在 xm 字段值为 Li ming 的行设置行背景色(bde 设置情况下) 
  else if DBGridEh1.DataSource.DataSet.FieldByName(’xm’).AsString = ’Li ming’  then 
     Background := $00FFC4C4 
  else 
     Background := $00FFDDDD; 

end;    

  
 2003-12-10 14:19:28    DBGridEh 控件导出文件到 EXCEL 的补充说明(关于多表头导出的设计思路)   如果表头是着样的: 
      |Mergetitle| 
      ------------ 
      Col1|Col2 
    分析表头几层,然后根据其表头的’|’ 将,其还原成 
      |Mergetitle|Mergetitle 
      ---------------------- 
      Col1       |Col2 
    再导入到Excel里合并单元格即可!  

  
 2003-12-10 14:55:16    在dbgrideh中允许选择多行,如何知道哪些行被选中?是个BOOKMARK类型的属性。 
SelectedRows: TBookmarkList 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 i, j: Integer; 
 s: string; 
begin 
 if DBGrid1.SelectedRows.Count>0 then 
   with DBGrid1.DataSource.DataSet do 
     for i:=0 to DBGrid1.SelectedRows.Count-1 do 
     begin 
       GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); 
       for j := 0 to FieldCount-1 do 
       begin 
         if (j>0) then s:=s+’, ’; 
         s:=s+Fields[j].AsString; 
       end; 
       Listbox1.Items.Add(s); 
       s:= ’’; 
     end; 
end;    

  
 2003-12-10 15:06:19    dbgrideh 上选择多行之后,要求把所选择的记录全部添加入SQL数据库的一个固定表中。dbgrideh.selectedrows记载了所有被选择行的bookmark;利用SelectedRows和GotoBookmark完成。代码如下: 

procedure TForm1.Button1Click(Sender: TObject); 
var 
 i, j: Integer; 
 s: string; 
begin 
 if DBGrid1.SelectedRows.Count>0 then 
   with DBGrid1.DataSource.DataSet do 
     for i:=0 to DBGrid1.SelectedRows.Count-1 do 
     begin 
       GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); 
       for j := 0 to FieldCount-1 do 
       begin 

         if (j>0) then s:=s+’, ’; 
         s:=s+Fields[j].AsString; 
       end; 
       Listbox1.Items.Add(s); 
       s:= ’’; 
     end; 
end;  

  
 2004-2-11 12:45:10    在dbgrideh中直接点击title就可按点击的那个字段排序的方法第一种方法(未测试) 
procedure TForm1.DBGridEh1TitleClick(Column: TColumnEh); 
begin 
 //点击GridEh标题排序 
 if (Column.Title.SortMarker = smNoneEh) or (Column.Title.SortMarker = smDownEh) then 
   begin 
     ADOQuery1.SORT := COLUMN.FIELDNAME; 
     Column.Title.SortMarker := smUpEh 
   end 
 else 
   begin 
     ADOQuery1.SORT := COLUMN.FIELDNAME + ’ DESC’; 
     Column.Title.SortMarker := smDownEh 
   end; 
end;  

第二种方法(未测试) 
procedure TPrintMai_frm.DBGridEh1TitleClick(Column: TColumnEh); 
var 
 sortstring: string; 
begin //进行排序 
 with Column do 
 begin 
   if FieldName = ’’ then 
     Exit; 
   case Title.SortMarker of 
     smNoneEh: 
       begin 
         Title.SortMarker := smDownEh; 
         sortstring := Column.FieldName + ’ ASC’; 
       end; 
     smDownEh: sortstring := Column.FieldName + ’ ASC’; 
     smUpEh: sortstring := Column.FieldName + ’ DESC’; 
   end; //数据集排序。 
   try 
     DM.DataModule1.qry2.Sort := sortstring //dataset为实际数据集变量名 
   except 
   end; 
 end; 
end;   

  
 2004-3-24 17:34:05    ehlib的颜色控制及打印From: 
    http://www.delphibbs.com/keylife/iblog_show.asp?xid=191 

      很多说根据条件在数据网格中显示不同颜色的说法都是在DrawColumnCell事件里,这样显示没有问题,但在ehlib中如果想打印出来可就不行了。 
ehlib提供了GetCellParams事件,可以显示和打印 
//只能显示,不能打印 
procedure TfrmQueryContractInfo.DBGrid1DrawColumnCell(Sender: TObject; 
 const Rect: TRect; DataCol: Integer; Column: TColumnEh; 
 State: TGridDrawState); 
var 
 OldColor,OldColumnColor:TColor; 
 v:TColCellParamsEh; 
begin 
{  OldColor:=DBGrid1.Canvas.Font.Color ; 
 if (Column.Field.FieldName = ’填制调单时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’填制调单时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’应发货时间’).AsDateTime) then 
 begin 
   //v:=TColCellParamsEh.Create ; 
   //Column.GetColCellParams(true,v); 
   //v.Font.Color :=clRed; 
   //Column.FillColCellParams(v); 
   //v.Free; 
   DBGrid1.Canvas.font.Color := clRed; 
 end; 

 //Column.GetColCellParams  .FillColCellParams() 

 if (Column.Field.FieldName = ’移交时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’移交时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’应移交时间’).AsDateTime) then 
   DBGrid1.Canvas.Font.Color := clRed; 

 if (Column.Field.FieldName = ’填制运输单时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’填制运输单时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’填制调单时间’).AsDateTime) then 
   DBGrid1.Canvas.Font.Color := clRed; 

 DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
 DBGrid1.Canvas.Font.Color:=OldColor; 
} 
end; 
//可以显示,可以打印 
procedure TfrmQueryContractInfo.DBGrid1GetCellParams(Sender: TObject; 
 Column: TColumnEh; AFont: TFont; var Background: TColor; 
 State: TGridDrawState); 
var 
 OldColor,OldColumnColor:TColor; 
 v:TColCellParamsEh; 
begin 
 //OldColor:=DBGrid1.Canvas.Font.Color ; 
 if (Column.Field.FieldName = ’填制调单时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’填制调单时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’应发货时间’).AsDateTime) then 
   AFont.Color := clRed; 

 if (Column.Field.FieldName = ’移交时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’移交时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’应移交时间’).AsDateTime) then 
   AFont.Color := clRed; 

 if (Column.Field.FieldName = ’填制运输单时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’填制运输单时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’填制调单时间’).AsDateTime) then 
   AFont.Color := clRed; 

 if (Column.Field.FieldName = ’实际到货时间’) then 
 if (DBGrid1.DataSource.DataSet.FieldByName(’实际到货时间’).AsDateTime >DBGrid1.DataSource.DataSet.FieldByName(’要求到货时间’).AsDateTime) then 
   AFont.Color := clRed; 
 //DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); 
 //DBGrid1.Canvas.Font.Color:=OldColor; 
end;   

  
 2004-3-29 20:12:46    DBGridEH 所有欄位自動寬度的實現interface 
THackDBGridEH = class(TCustomdbgrideh) 
end; 

procedure OptimizeGrid(AGrid: TCustomDbGridEh); 

implementation 
procedure OptimizeGrid(AGrid: TCustomDbGridEh); 
var 
i: integer; 
begin 
// 優化GRID的寬度 
for i := 0 to TDBGridEh(AGrid).Columns.count - 1 do 
THackDBGridEH(AGrid).OptimizeSelectedColsWidth(TDBGridEh(AGrid).Columns[i]); 
end; 


從ehlib 3.0開始,DBGridEH的OptionEh中就多了一個dbgDblClickOptimizeColWidth選項,設為true,就可以雙擊一個標題的右邊線,自動此列的寬度. 
但是我想一次性實現整個grid的自動寬度,卻沒有找到相就的方法(真的有可能是我沒有找到,如果本身就有的話請一定要用郵件通知我喔),所以就自已寫了一個,用起來還可以,數據量大的時候就會有些慢呢! 

作者email :rogue_xu@sina.com 
   
***************
 EhLib使用说明收藏
新一篇: 来自中国各大高校著名导师的精品课程!绝对精典 | 
KeyLife富翁笔记  
作者

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -