Du kannst doch die "CompHasCaption"-Funktion dynamischer gestalten, indem Du den Namen der gesuchten Property als Parameter übergibst. Anschließend prüfst Du, ob das übergebene Control alle benötigten Properties besitzt, und setzt sie erst in dem Fall.
[edit] Beispiel:
Delphi-Quellcode:
function CompHasProp(AClass : TObject; PropName: string): Boolean;
var
MyPropInfo: PPropInfo;
begin
MyPropInfo := GetPropInfo(AClass.ClassInfo, PropName);
Result := Assigned(MyPropInfo);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CompHasProp(Label1, 'Caption') and CompHasProp(Label1, 'Font') then
ShowMessage('Jau, beides vorhanden');
end;
Wie man das dann mit Klassenproperties(TCanvas, TFont, usw.) hinbekommt, weiß ich leider auch nicht aus dem Hut. [/edit]