怎样知道 TComponent 是否有 Caption 属性?(50分)

  • 主题发起人 主题发起人 netkk
  • 开始时间 开始时间
N

netkk

Unregistered / Unconfirmed
GUEST, unregistred user!
我要将一个 form 上的所有有 Caption 属性的对象的 Caption 由英文改成中文?
怎样知道 TComponent 是否有 Caption 属性?
 

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,TypInfo;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
I:Integer;
ppi:PPropInfo;
pProps:PPropList;
pti:PTypeInfo;
ptd:PTypeData;
PropInfo:PPropInfo;
begin
for I:=0 to Self.ComponentCount-1 do
begin
PropInfo:=GetPropInfo(Components.classinfo,'Caption');
if PropInfo<>nil then
begin
ShowMessage(Components.Name+' old Caption='+ GetStrProp(Components,propinfo));
//设置属性
SetStrProp(Components.Name,propInfo,'我是谁');
ShowMessage(Components.Name+' new Caption='+ GetStrProp(Components,propinfo));
end;
else
ShowMessage(Components.Name+' has not Caption property');
end;
nd;

end.


 
判断是否是 TControl 就可以了。
 
改一下:
//设置属性
SetStrProp(Components,propInfo,'我是谁');
ShowMessage(Components.Name+' new Caption='+ GetStrProp(Components,propinfo));
end
 
接受答案了.
 

Similar threads

回复
0
查看
861
不得闲
回复
0
查看
987
不得闲
D
回复
0
查看
778
DelphiTeacher的专栏
D
后退
顶部