如何判断数据控件是数据感知? |
尚未結案
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
|||
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
zzmbeyond01 您好
我試了一下..發現DATAACCESS的元件的父繼承類別大多是STANDARD元件盤中的元件..
再加上DATASOURCE屬性的..沒有共同的父繼承類別..所以要得知是否具有DATASOURCE屬性..
從Components[i]這裡..是無法以共同的父繼承類別去檢驗DATASOURECE是否為NULL.. 不過我發現有DATASOURCE屬性的資料感知元件..都是位於DATAACCESS元件盤中..
而DATAACCESS的CLASSNAME都是"TDB"開頭的
所以我想這樣也應該是一種解決方式
< class="code">
procedure TForm1.FormActivate(Sender: TObject);
var
i:integer;
str:string;
begin
for i:=0 to self.ComponentCount-1 do
begin
if pos('TDB',self.Components[i].ClassName)>0 then
str:=str+self.Components[i].ClassName+#13
end;
showmessage('具有DATASOURCE的元件為:'+#13+str)
end;
|
||
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
|||
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
引言: IF SELF.Components[I].ClassTYPE=TDATASOURCE THEN ...他是問..【怎么判段控件 具有datasource属性】 【具有datasource属性】<--------不是DATASOURCE元件.. 所以您這樣寫..是不對的喔! <> <> <> < >> > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, DB, DBClient, StdCtrls, Mask, Grids, DBGrids; type TForm1 = class(TForm) ListBox1: TListBox; ClientDataSet1: TClientDataSet; DBNavigator1: TDBNavigator; Button1: TButton; Label1: TLabel; DBGrid1: TDBGrid; DBText1: TDBText; DBEdit1: TDBEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses TypInfo; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i:Integer; Obj:TObject; begin for i:=0 to Self.ComponentCount-1 do begin try Obj:=GetObjectProp((Components[i] as TObject),'DataSource'); //如果這個元件有DataSource屬性,就會執行下面的程式:加入到ListBox1中,否則就會有錯誤產生 ListBox1.Items.Add(Components[i].Name); except end; end; end; end.記得uses TypeInfo單元 發表人 - change.jian 於 2004/11/14 16:48:14
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin listbox1.Clear; for i:=0 to self.ComponentCount-1 do begin if GetPropInfo(self.components[i].ClassInfo, 'datasource') <> nil then listbox1.Items.Add(self.components[i].name); end; end;GetPropInfo中第一個參數傳入 component的classinfo,第二個參數傳入要判斷是否存在的屬性字串,如果執行結果不為nil代表該component有這個屬性...
procedure THintInfoFrm.TestDatasetActive; var i: integer; ds:TADODataaset; begin for i := 0 to self.ComponentCount - 1 do begin //判断该控件是否具有Datasource属性 或listsource属性或 lookupsource if GetPropInfo(self.components[i].ClassInfo, 'DataSource') <> nil then begin //如何进行强制,获得数据感知控件的datasource属性,从而获得dataset属性(想的很罗嗦),大大们有什么高招 <> > ClassName = 'TDBEdit'>
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |