線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1659
推到 Plurk!
推到 Facebook!

DBGRIDEH如何添加函数

尚未結案
tangfengsh
一般會員


發表:5
回覆:3
積分:1
註冊:2008-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-18 08:56:02 IP:221.122.xxx.xxx 訂閱
DBGRIDEH如何添加函数

比如说排序,我想在每个以后用到的DBGRIDEH里的TitleBtnClick事件都有下面这个函数.而不用添加了这个事件再手动加下面的代码.


procedure TfrmXXXX.DBGridEh1TitleBtnClick(Sender: TObject; ACol:
Integer;
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
if
qryGetCKXX.active=true then
qryGetCKXX.Sort:=sortstring;
//dataset为实际数据集变量名
except
//
end;
end;

end;


还有就是PrintDBGridEh1出来的预览表单里,我想打印,打印设置……最后加个导出按钮,事件形如这样:

SaveDialog1.FileName := 'file1';
if SaveDialog1.Execute then

begin
case SaveDialog1.FilterIndex of
1: begin ExpClass :=
TDBGridEhExportAsText; Ext := 'txt'; end;
2: begin ExpClass :=
TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass :=
TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass :=
TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass :=
TDBGridEhExportAsXLS; Ext := 'xls'; end;
else
ExpClass :=
nil; Ext := '';
end;
if ExpClass <> nil then

begin
if
UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <>

UpperCase(Ext) then
SaveDialog1.FileName :=
SaveDialog1.FileName '.' Ext;

SaveDBGridEhToExportFile(ExpClass,TDBGridEh(ActiveControl),

SaveDialog1.FileName,False);
end;
end;


但是这里的TDBGridEh(ActiveControl),怎么得到PrintDBGridEh1控件里的dbgridEH?
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-20 15:11:39 IP:122.254.xxx.xxx 訂閱
這你要用到繼承, 將以下程式變成一個 Unit 要用的 Form 再 uses 或是安裝到 VCL 中
另外, 這問題應該是發問在 VCL 元件使用或設計討論區(Delphi) 才對吧?

[code delphi]
type
TMyDBGrid = class(TDBGridEh)
private
procedure MyNewTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);

public
constructor Create(AOwner: TComponent); override;

end;

constructor TMyDBGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OnTitleBtnClick:= MyNewTitleBtnClick;
end;

procedure TMyDBGrid.MyNewTitleBtnClick(Sender: TObject; ACol: Integer; 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
if qryGetCKXX.active=true then
qryGetCKXX.Sort:=sortstring;
//dataset為實際數據集變量名
except
//
end;
end;
end;

[/code]
------
將問題盡快結案也是一種禮貌!
編輯記錄
danny 重新編輯於 2008-11-20 15:12:39, 註解 無‧
danny 重新編輯於 2008-11-20 15:13:28, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-20 15:28:06 IP:118.169.xxx.xxx 訂閱
幫忙移區^_^
系統時間:2024-04-19 3:49:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!