📄 ehlib.rar.txt
字号:
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 + -