📄 ehlibstudy.txt
字号:
------------
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
2005-5-23 10:17:38
查看评语???
2005-5-26 18:02:12 点击DBGridEh标题实现排序
KeyLife富翁笔记
作者 : tempmen
标题 : 点击GridEh标题排序
关键字:
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 145) »»
1。
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;
2。
以下方法用来实现 点击DBGrid列 按该列正序排序,再次点击 逆序
procedure TFormMain.MyDBGridTitleClick(Column: TColumn);
var i:integer;
begin
if AdoQCX.Sort = Column.FieldName then //AdoQCX为MyDBGrid绑定的Tadoquery
begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns[i].Title.RestoreDefaults;
AdoQCX.Sort := Column.FieldName + ' DESC';
Column.Title.Font.Color:=clPurple; //用紫色表示 逆序 字段
end
else begin
For i:=0 to MyDBGrid.Columns.Count-1 do
MyDBGrid.Columns[i].Title.RestoreDefaults;
AdoQCX.Sort := Column.FieldName;
Column.Title.Font.Color:=clBlue; //用蓝色表示正序字段
end;
end;
顺便求教,有没有好方法实现 用上下箭头 代替颜色表示正序、逆序
前提是使用DBGrid控件,不是其他第三方控件
3。
procedure TForm_main.DBGrid_topTitleClick(Column: TColumn);
var
lInteger_count,lInteger_Length:integer;
lString_All,lString_Last:string;
begin
for lInteger_count := 0 to dbgrid_top.FieldCount - 1 do
begin
lInteger_Length := length(dbgrid_top.columns[lInteger_count].Title.Caption);
lString_Last := copy(dbgrid_top.columns[lInteger_count].Title.Caption,lInteger_Length-2,3);
lString_All := copy(dbgrid_top.columns[lInteger_count].Title.Caption,1,lInteger_Length-3);
if dbgrid_top.columns[lInteger_count].FieldName = column.FieldName then
begin
if (lString_Last = ' ▼') then
begin
adoquery_main.Sort := column.FieldName + ' ASC';
dbgrid_top.columns[lInteger_count].Title.Caption := lString_All + ' ▲';
end
else if (lString_Last = ' ▲') then
begin
adoquery_main.Sort := column.FieldName + ' DESC';
dbgrid_top.columns[lInteger_count].Title.Caption := lString_All + ' ▼';
end
else
begin
adoquery_main.Sort := column.FieldName + ' ASC';
dbgrid_top.columns[lInteger_count].Title.Caption := lString_All + lString_Last + ' ▲';
end;
end
else
begin
if ((lString_Last = ' ▼') or (lString_Last = ' ▲')) then
dbgrid_top.columns[lInteger_count].Title.Caption := lString_All;
end;
end;
end;
2005-6-10 11:33:26 DBGRIDEH 组件在Borland开发工具中应用全攻略 【陈文彬】
http://www.delphibbs.com/keylife/iblog_show.asp?xid=5161
2005-6-18 11:43:26 DevExpress cxGrid 使用方法汇总
http://www.delphibbs.com/keylife/iblog_show.asp?xid=3893
2005-7-1 20:33:17 DBGridEh 应用实例
KeyLife富翁笔记
作者 : delsoft
标题 : DBGridEH应用实例
关键字:
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 44) »»
DBGridEH应用实例
--------------------------------------------------------------------------------
作者:金软在线 来源:softsky.com.cn 发布日期:2005-4-1 点击次数: 94
应用实例
Enlib3.0组件包安装成功后,在系统的组件面板中会显示“enlib”组件包标签(如图1),添加DBGridEh到窗体的方法与其它组件一样。在窗体中添加该组件后,请跟我一起来实现图2的一些特殊效果,具体属性设置请参考属性表的说明。
A、定制标题行
1、制作复杂标题行
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true;
titlelines=2
DBGridEh.Columns[0].Title.Caption := '办公用品|代码';
DBGridEh.Columns[1].Title.Caption := '办公用品|名称';
2、标题行显示图片
实现图2中的购买人标题行显示效果。首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将DBGridEh的TitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按F9执行一下程序,是不是很酷!
3、自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:
OptionsEh=dghAutoSortMarking
Column.Title.TitleButton=true
SortMarkedColumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -