急!在线等待。GetPropInfo不能正确取得控件属性的问题(100分)

D

dadabox

Unregistered / Unconfirmed
GUEST, unregistred user!
我们知道用GetPropInfo可以用来判断控件是否有某个属性。但当我用它来判断
DBComboBox时,却碰到问题。哪位大侠出手帮帮我?
我用GetPropInfo来判断DBComboBox是否有Text这个属性,大家都能看到有这个属性,但我
却找不到这个属性。例子如下:
而我用Edit或ComboBox等类型都能正确找到,这是什么原因?如何解决?
var PropInfo:pPropInfo;
begin
PropInfo:=GetPropInfo(DBComboBox1,'Text');
if PropInfo<>nil then
SetStrProp(DBComboBox1,propInfo,'信息类');
 
查了一下DBComboBox1的类,就会发现
DBComboBox1的text属性是public类型,而Tedit的text属性是属于published的,
这就是为什么GetPropInfo无法获得的原因。
不找不到解决方法,继续关注。。。

 
刚才打了一大堆,一下按到版权协议,倒回来又一片空白,就不写那么多了。
变通一下
type TYouControl(TControl);
str := TYouControl(YouControl).Text
就行了。当然,YouControl是特有的那几种DB控件,如DBEdit,DBComboBox等等。

GetPropInfo只能找到Published了的属性,比如说TDBEdit的上一级是TCustomMaskEdit,而
TMaskEdit也是继承自TCustomMaskEdit,你如果用下面这种方法也是行的,但不如上面的方便。
PropInfo := GetPropInfo(TMaskEdit.classinfo,'text');
if PropInfo <> nil then
begin
str := GetStrProp(TMaskEdit(dbedit1),PropInfo);
end;
看别人有没有什么好方法。
 
没戏,除非你新写个控件继承DBComboBox把 Text 属性
published出来,否则就别浪费时间了.
 
DBComboBox的Text是一个只读属性.
 
接受答案了.
 
顶部