如何取控件的属性列表? 我想取控件的属性列表可是我用TypInfo单元中的GetPropList取不到DBText的Text属性请问为什么取不到?如何才能取到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说实话我听不懂你在说什么不可以这样吗?var s:string; begin s=DBtext.text; end DBText的Text属性不是published,所以不能取到————————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。———————————————————————————————————— 查看VCL源码可知,DBText的Text属性继承于TControl的TEXT属性,该属性放在protected关键字后,属于受保护部分,但开发者可以继承,如此,你可以从TDBText继承,然后就可以读取TEXT属性,如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB,typinfo, StdCtrls, DBCtrls;type TDBText1=class(TDBText) //从 TDBText继承,并公开属性 Text public property Text; end; TForm1 = class(TForm) ADOTable1: TADOTable; procedure FormCreate(Sender: TObject); private dbtext1:tdbtext1; { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin dbtext1:=tdbtext1.Create(form1); dbtext1.Text:='aaa'; ....设置相应属性 dbtext1.Show;end;end. 我的意思是这样,我要在运行期间判断一个控件是否具有Text属性但我事先不知道这个控件是什么类型的DBText的Text属性不是published,所以不能取到但我想知道的是如何才能取得到大侠们帮忙啊 "但我想知道的是如何才能取得到"什么意思呢?wdsimon(老王)的方法可以很好的解决使用取不到的属性,如果你只是像知道某个控件是否具有Text属性,而不管它是否是published,那你直接看它是不是TControl的子类不就行了么? 是这样的,我想做一个函数,传递进去一个未知的类,然后判断其是否具有Text属性,并且该属性是否为字符串型,如果是则返回该属性的值而DBText的确具有Text属性,也可以访问,但没办法判断zousoft(好心肠的肉干) 不一定所有继承于TControl的组件都有Text属性阿,Button,Panel等等等等 非published部分的成员没有包含在RTTI中,当然运行时不能直接接触它。你可以使用变通的办法,比如看是否有DataField和DataSource属性,如果有,则表示有Text属性。—————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。————————————————————————————————— lxpbuaa(桂枝香在故国晚秋)有DataField和DataSource两个属性的也不一定有Text属性,比如DBCheckBox 如何将BarCodeCtrl存储为*.bmp图片 键盘钩子的问题,好久了,还没有能解决,请各位大侠出手 很简单的问题,产生随机数的函数 9号结婚 网吧管理系统-源代码 想找份工作,地点在吉林省长春市. 如何打开从别的电脑中拷来的msserver的数据库备份文件 大家帮帮忙吧关于十六进制的问题 小弟是菜鸟,想请问各位大哥,怎么才能获得filelistbox,框中选中文件,的文件名 一个小问题,70分绝对超值 ACCESS数据库的文本字段,是不是不支持不可见字符?怎样才能存入不可见字符呢? 请问,有没有得到本月第一天的日期函数?
不可以这样吗?
var
s:string;
begin
s=DBtext.text;
end
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
DBText的Text属性继承于TControl的TEXT属性,该属性放在protected关键字后,
属于受保护部分,但开发者可以继承,
如此,你可以从TDBText继承,然后就可以读取TEXT属性,如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB,typinfo, StdCtrls, DBCtrls;type
TDBText1=class(TDBText) //从 TDBText继承,并公开属性 Text
public
property Text;
end;
TForm1 = class(TForm)
ADOTable1: TADOTable;
procedure FormCreate(Sender: TObject);
private
dbtext1:tdbtext1;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
dbtext1:=tdbtext1.Create(form1);
dbtext1.Text:='aaa';
....设置相应属性
dbtext1.Show;
end;end.
但我事先不知道这个控件是什么类型的DBText的Text属性不是published,所以不能取到
但我想知道的是如何才能取得到大侠们帮忙啊
wdsimon(老王)的方法可以很好的解决使用取不到的属性,
如果你只是像知道某个控件是否具有Text属性,而不管它是否是published,那你直接看它是不是TControl的子类不就行了么?
然后判断其是否具有Text属性,并且该属性是否为字符串型,
如果是则返回该属性的值
而DBText的确具有Text属性,也可以访问,但没办法判断zousoft(好心肠的肉干)
不一定所有继承于TControl的组件都有Text属性阿,Button,Panel等等等等
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
有DataField和DataSource两个属性的也不一定有Text属性,比如DBCheckBox