自製匯出Excel元件出現問題 |
答題得分者是:herbert2
|
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
我做的原件功能為將DBGrid匯出Excel
但是不知道是不是引用有問題 Compile可以過,但是有Warning 安裝後感覺我的元件會和ADO元件衝突,一旦放ADO元件再放我的元件,我自訂的元件就會消失 若先放我的元件再放ADO元件,則ADO原件會消失? 不知道要如何解決 [code delphi] unit SeanADOExcel; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, Gauges, comobj; type TSeanADOExcel = class(TComponent) private { Private declarations } QQZ: TADOQuery; GGZ: TDBGrid; BBZ: TGauge; AuthorName: String; procedure SEANEXCEL(QQ:TADOQuery;GG:TDBGrid;BB:TGauge); function GetADOQuery: TADOQuery; procedure SetADOQuery(Value: TADOQuery); function GetDBGrid: TDBGrid; procedure SetDBGrid(Value: TDBGrid); function GetGauge: TGauge; procedure SetGauge(Value: TGauge); protected { Protected declarations } public { Public declarations } function Execute : boolean; constructor Create(AOwner : TComponent); override; published { Published declarations } property ADOQuery: TADOQuery read GetADOQuery write SetADOQuery; property DBGrid: TDBGrid read GetDBGrid write SetDBGrid; property Gauge: TGauge read GetGauge write SetGauge; property Author: String read AuthorName write AuthorName; property Tag; end; procedure Register; implementation procedure Register; begin RegisterComponents('SeanExport', [TSeanADOExcel]); end; function TSeanADOExcel.Execute; begin try SEANEXCEL(QQZ,GGZ,BBZ); result:=true; except result:=false; end; end; procedure TSeanADOExcel.SEANEXCEL(QQ: TADOQuery; GG: TDBGrid; BB: TGauge); begin end; constructor TSeanADOExcel.Create(AOwner : TComponent); begin inherited; end; function TSeanADOExcel.GetADOQuery: TADOQuery; begin Result:=QQZ; end; procedure TSeanADOExcel.SetADOQuery(Value: TADOQuery); begin QQZ:=Value; end; function TSeanADOExcel.GetDBGrid: TDBGrid; begin Result:=GGZ; end; procedure TSeanADOExcel.SetDBGrid(Value: TDBGrid); begin GGZ:=Value; end; function TSeanADOExcel.GetGauge: TGauge; begin Result:=BBZ; end; procedure TSeanADOExcel.SetGauge(Value: TGauge); begin BBZ:=Value; end; end. [/code] |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
您好!
小弟不熟悉 Delphi 語法, 但有用 BCB5 自製類似元件, 感覺您的問題可能出在 Component 的結構上, 因您在 Design Time 便要填相關元件, 則在建構時可能有先後參照順序的問題. 我的做法是: (1) 繼承 DBGrid 做 MyDBGrid. (2) 於 Run-Time 之 Load 時 Create PopUp Memu. (3) User 點出 PopUp Memu 時呼叫內部轉 Excel 檔 Function. (4) 轉 Excel 檔 Function 用 MyDBGrid->DataSource 找其 Query. 您可將您的 Component 的 Excute 改一下, 將 Query 等 Published Property 換成於 Run-Time 傳給 Excute, 或可避免問題. |
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |