Einzelnen Beitrag anzeigen

Benutzerbild von DeepCopy
DeepCopy

Registriert seit: 5. Aug 2008
Ort: Gießen
21 Beiträge
 
Lazarus
 
#1

Reihenfolge beim Laden von Properties verändern

  Alt 24. Okt 2008, 02:06
Hallo DP'ler

ich bin auf ein Problem beim Entwickeln von Komponenten gestoßen. Ich möchte die Reihenfolge ändern in der die Properties in einer von TComponent abgeleitenen Komponente vom ObjektInstpektor gespeichert bzw geladen werden.

Ich hoffe Ihr könnt mir helfen.

Also ein Beispiel:
Delphi-Quellcode:
type
   MyComonent = class(TComponent)
     private
       FProp1 : Integer;
       FProp2: Integer;
       procedure SetProp1(Value: Integer);
       procedure SetProp2(Value: Integer);
    published
       property Prop1 : integer
                     read FProp1
                     write SetProp1;

      property Prop2: integer
                    read FProp2
                    write SetProp2;
end;

procedure MyComponent.SetProp1(Value: Integer);
begin
 FProp1 := Value;
end;

procedure MyComponent.SetProp2(Value; Integer);
begin
 FProp2 := Value;
end;
Ok soweit ist das mit der Zuweisung auch kein Problem, aber was ist wenn ich den Wert von FProp2 bei der Zuweisung von Prop1 benötige,
sagen wir z.B. um zu FProp1 einen Fixwert zu addieren.

Ein Beispiel für den Setter von FPop1
Delphi-Quellcode:
procedure MyComponent.SetProp1(Value:Integer);
begin
 FProp1 := Value + FProp2;
end;
Da WriteComponentRes und das Read-Gegenstück die Arbeit iterativ vornehmen, habe ich mal die Reihenfolge der Property-Definitionen inerhalb der MyComponent-Klasse geändert und Prop2 vor Prop1 gesetzt also so als Beispielcode:
Delphi-Quellcode:
 property Prop2 : integer
                     read FProp2
                     write SetProp2;

 property Prop1: integer
                    read FProp1
                    write SetProp1;
und gehofft das die Serialisierung von prop2 vor prop1 stattfindet, dazu habe ich auch mal in der entsprechenden
*.dfm Datei nachgesehen und dort hat sich die Reihenfolge tatsächlich geändert, aber beim Laden wird immer der Setter von Pop1 zuerst
aufgerufen


Ich bin mit meinem Latein erstmal am Ende, oder ich sehe das Offensichtliche nicht?

Und an alle die es noch nicht wissen ->
Andreas
Gruß Andreas
---------------------------------------------------
Sic Luceat Lux (so lasse das Licht erstrahlen)
- ich kam sah und wusste nichts -
  Mit Zitat antworten Zitat