我寫了一個類,這個類里要進行一些資料庫 query查詢,于是我在類里放了幾個fdquery 成員,在建構式里賦給它們實體,這樣寫對嗎??:
Tsuanfa = class(TObject)
private
query1: TFDQuery;
query2: TFDQuery;
query3: TFDQuery;
constructor Tsuanfa.Create(q1, q2, q3: TFDQuery);
begin
query1 := q1; //這樣賦對嗎??
query2 := q2;
query3 := q3;
end;
//使用的時候:
suanfaL:=Tsuanfa.Create(FDQuery3,FDQuery4,FDQuery5);
suanfaL.Elo_ReDoAll(0);
suanfaL.Free;
uj5u.com熱心網友回復:
你的q1,q2,q3沒創建實體,DELPHI中,宣告了變數不等于創建了實體按照你類的寫法,要這樣使用
//使用的時候:
//先創建實體
FDQuery3:=TFDQuery.Create; //這個CREATE有沒有引數,自己看。
FDQuery4:=TFDQuery.Create;
FDQuery5:=TFDQuery.Create;
//才能使用
suanfaL:=Tsuanfa.Create(FDQuery3,FDQuery4,FDQuery5);
suanfaL.Elo_ReDoAll(0);
suanfaL.Free;
不過,猜你的意思,是要實作這樣的功能:?
Tsuanfa = class(TObject)
private
FQuery1: TFDQuery; //私有變數通常用F開頭
FQuery2: TFDQuery;
FQuery3: TFDQuery;
.............
//如果外部程式要呼叫類內的這3個物件,可以通過屬性來訪問;如果不直接呼叫,就不用宣告了(這種應用更一般)
public
property Query1:TFDQuery read FQuery1;
property Query2:TFDQuery read FQuery2;
property Query3:TFDQuery read FQuery3;
end;
constructor Tsuanfa.Create;
begin
FQuery1 := TFDQuery.Create;
FQuery2 := TFDQuery.Create;
FQquery3 := TFDQuery.Create;
end;
destructor Tsuanfa.Destroy;
begin
FQuery1.free;
FQuery2.free;
FQuery3.free;
inherited;
end;
uj5u.com熱心網友回復:
你在類中,僅宣告了TFDQuery變數,使用時,只能參考類外的物體TFDQuery了。這樣,沒有封閉資料,此類的意義不大。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76043.html
標籤:VCL組件開發及應用
