Einzelnen Beitrag anzeigen

WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#22

Re: Eigenschaften unterschiedlicher Objekte ändern

  Alt 1. Apr 2009, 12:01
Hallo,

ich muss den Thread nocheinmal aufgreifen:

ich möchte nun unabhängig vom Komponententyp prüfen, ob dieser die Eigenschaft "color" besitzt und wenn, diese dann prüfen, ob diese einen bestimmten Farbwert hat. Hintergrund: Ich möchte zur Laufzeit die "Grundfarbe" meiner Anwednung ändern. Hierzu wollte ich alle Komponenten durchgehen und prüfen, ob diese clbtnface als Farbwert haben. Wenn ja, soll dieser entsprechend geändert werden.
Meine Ansätze bisher sind:

Delphi-Quellcode:
Procedure set_color(form:TForm);
var i:integer;
    PropInfo: PPropInfo;
    test:string;
Begin

for i := 0 to form.ComponentCount - 1 do
Begin
    PropInfo := GetPropInfo((form.Components [i]).ClassInfo, 'color');
    if Assigned(PropInfo) then
      MySetPropertyColor((form.Components [i]),'color',clred);

end //for

end;


procedure MySetPropertyColor(Component: TComponent; const PropName: String; const Value: integer);
var
  PropInfo: PPropInfo;
begin
  if (Component <> nil) then
  begin
    PropInfo := GetPropInfo(Component.ClassInfo, PropName);
    if (PropInfo <> nil) then
    begin
      if (PropInfo^.PropType^.Kind in [tkInteger]) then
        SetordProp(Component, PropInfo, Value);
    end;
  end;
end;
Leider funktioniert diese Version nicht mit allen Komponenten der Form, sodass z.B PagesControls, Panels, Buttons usw. nicht berücksichtigt werden. Labels und Edits hingegebn werden berücksichtigt. Auch ist mir nicht ganz klar, wie ich neben dem Vorhandensein auch den Wert der Eigenschaft abfragen kann. Die Anpassung sollte hierbei in der set_color erfolgen.

Vielen Dank für jeden Hinweis...
MFG
Steffen
  Mit Zitat antworten Zitat