B blackbeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-18 #1 如:DBGrid中有一个数据源列表,能感知当前Form中的所有数据源控件,就是这个意思。
M myname Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-18 #3 for i:=0 to form1.commponentcount-1 do if form1.commponents is Tdatasource then listbox1.items.add(form1.commponents.name); 就这么简单
for i:=0 to form1.commponentcount-1 do if form1.commponents is Tdatasource then listbox1.items.add(form1.commponents.name); 就这么简单
X xianjun Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-18 #4 1、找到你的控件所在的FORM var AComp: TComponent; begin AComp := MYCOMP.Parent; while not (AComp is TForm) do AComp := AComp.Parent; end; 2、找到Form所拥有的所有数据源控件 A、枚举所有控件 用递归的方法根据Components属性遍历每一个Component B、判断是否是数据源控件 可以通过是否有DataSource属性判断。 完毕。
1、找到你的控件所在的FORM var AComp: TComponent; begin AComp := MYCOMP.Parent; while not (AComp is TForm) do AComp := AComp.Parent; end; 2、找到Form所拥有的所有数据源控件 A、枚举所有控件 用递归的方法根据Components属性遍历每一个Component B、判断是否是数据源控件 可以通过是否有DataSource属性判断。 完毕。
B blackbeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #6 我的意思就是: 大家应该知道TDataSource这个组件吧,它有一个属性是DataSet,是一个列表,列出当前 Form中的所有TDataSet控件,用户可以选择其一为该属性值。 我也想做一个类似的控件,它的某个属性可以获得当前Form中指定类型的组件列表,由用 户选择其一赋值给这个属性。
我的意思就是: 大家应该知道TDataSource这个组件吧,它有一个属性是DataSet,是一个列表,列出当前 Form中的所有TDataSet控件,用户可以选择其一为该属性值。 我也想做一个类似的控件,它的某个属性可以获得当前Form中指定类型的组件列表,由用 户选择其一赋值给这个属性。
M myname Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #7 我的程序就是这个作用呀(见上) if form1.commponents is Tdatasource //将Tdatasource换成你所需组件
B blackbeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #8 myname,我看了你的代码了,但是一直有一个疑问,把某一类控件名加入到列表中,是可以的 但是,这些工作是在Form1的设计期完成的啊,而不是运行期。也许我没明白你的意思,可以 把你做的类似控件给我学习一下吗,我的邮箱是:blackbeam@21cn.com.
myname,我看了你的代码了,但是一直有一个疑问,把某一类控件名加入到列表中,是可以的 但是,这些工作是在Form1的设计期完成的啊,而不是运行期。也许我没明白你的意思,可以 把你做的类似控件给我学习一下吗,我的邮箱是:blackbeam@21cn.com.
M myname Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #9 你是想在设计期加还是运行期加,我的代码是在运行期加。
L lorderic Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #10 先要說明一個觀念, TDataSource的屬性Dataset並不是一個列表, 它的屬性的型態是 TDataset, 也就是它可以被設定為某一個TDataset實例 如果是製作TComponent控件, 要在設計時期該某個屬性出現Form上某類控件的列表, 只 要將該屬性宣告為該類的型態, 在設計時,就自動有該功能 如果想要在運行期設置這樣的功能, 樓上所說就對了!
先要說明一個觀念, TDataSource的屬性Dataset並不是一個列表, 它的屬性的型態是 TDataset, 也就是它可以被設定為某一個TDataset實例 如果是製作TComponent控件, 要在設計時期該某個屬性出現Form上某類控件的列表, 只 要將該屬性宣告為該類的型態, 在設計時,就自動有該功能 如果想要在運行期設置這樣的功能, 樓上所說就對了!
B blackbeam Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #11 不说不知道,我困惑了这么久。 是不是还需要重载Notification(AComponent: TComponent; Operation: TOperation); 这个方法使对应控件形态改变或删除时,做相应的处理。我不知道如何写,我想问在哪本 书里写了相关的内容,我手里的资料没有这方面的内容。还请LordEric指教。
不说不知道,我困惑了这么久。 是不是还需要重载Notification(AComponent: TComponent; Operation: TOperation); 这个方法使对应控件形态改变或删除时,做相应的处理。我不知道如何写,我想问在哪本 书里写了相关的内容,我手里的资料没有这方面的内容。还请LordEric指教。
L lorderic Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-19 #13 Notification只是在通知控件, 有一個控件被釋放(Free)或加入到Form中 其實寫Notification很簡單, 你可以參考TDBEEdit的Source Code, 要注意的配套的函式為 FreeNotification //將控件加入到彼此的釋放通知(即在釋放要通知對方) RemoveFreeNotification //將控件從彼此的釋放通知中移除(即在釋放時不通知彼此) 你可在DBCtrls中找尋該這兩函式, 以瞭解運用的時機
Notification只是在通知控件, 有一個控件被釋放(Free)或加入到Form中 其實寫Notification很簡單, 你可以參考TDBEEdit的Source Code, 要注意的配套的函式為 FreeNotification //將控件加入到彼此的釋放通知(即在釋放要通知對方) RemoveFreeNotification //將控件從彼此的釋放通知中移除(即在釋放時不通知彼此) 你可在DBCtrls中找尋該這兩函式, 以瞭解運用的時機
S snappy Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-21 #14 FD:Tdatasource property d:TDatasource read fd write fd; 我想这才是你需要的吧?