コンポーネントプロパティの有無を調べる
|
73 |
ExistProperty |
動作確認 |
Delphi2007 |
更新日 |
2008/02/02(土) |
GetPropInfoを使うことで
各コンポーネントにプロパティがあるのか無いのかを判定します。
次のコードではCaptionプロパティがあるコンポーネントだけ列挙しています。
────────────────────
uses TypInfo;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if IsPublishedProp(Components[i], 'Caption') then
begin
Memo1.Lines.Add(Components[i].Name);
end;
end;
end;
//Delphi4以前にはIsPublishedPropはないので次のようにしてください。
//IsPublishedPropは簡単に自作できそうですね。
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
p : PPropInfo;
begin
for i := 0 to ComponentCount - 1 do
begin
p := GetPropInfo(Components[i].ClassInfo,'Caption');
if P <> nil then
begin
Memo1.Lines.Add(Components[i].Name);
end;
end;
end;
────────────────────
さらに、フォントプロパティを'Font'という名称から取り出して
フォントサイズを変更してみましょう。
────────────────────
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : integer;
F: TFont;
begin
for i := 0 to ComponentCount - 1 do
begin
if IsPublishedProp(Components[i], 'Font') then
begin
F:=TFont(GetObjectProp(Components[i], 'Font', TFont));
F.Size:=trunc(f.Size*1.25);
end;
end;
end;
────────────────────
参照────────────────────
BorlandManiacs/Delphi 専門1308
yukapapaさんの投稿から
※もうURLを調べきれないです。
|