Einzelnen Beitrag anzeigen

gemeni2005

Registriert seit: 2. Jul 2007
Ort: München
38 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Erkennen, wann alle Propertys geladen sind

  Alt 15. Dez 2021, 14:33
Hallo,

danke für eure Antworten.

Das Datenmodul wird vor der Form erzeugt und das Property auch korrekt versorgt, wenn denn eines hinterlegt ist.

Im Getter möchte ich einen Default-Wert zurückgeben, falls das Property nicht durch den User explizit gesetzt wurde:
Code:
function TRkToolBar.GetVisualStyle: TRkVisualStyle;
begin
  if Assigned(FVisualStyle) then
    Result := FVisualStyle
  else
    Result := FDefaultVisualStyle;
end;
Das Problem ist, dass bei diesem Getter der Fixup-Mechanismus den Default-Wert zurückbekommt und das im DFM vorhandene Property aus dem Datenmoodul nicht mehr zuweist, obwohl der Wert sauber in der DFM-Datei vorhanden ist.

Nun dachte ich, ich kann es über csFixups lösen, so dass der Fixup nil zurückbekommt und dann die Zuweisung vornimmt:

Code:
function TRkToolBar.GetVisualStyle: TRkVisualStyle;
begin
  if Assigned(FVisualStyle) then
    Result := FVisualStyle
  else
    Result := FDefaultVisualStyle;
  if (csFixups in ComponentState) then
    Result := nil;
end;
Aber offensichtlich wird entgegen der Dokumentation das Flag nie versorgt (komischerweise in GlobalFixupReferences entfernt: Exclude(TComponent(Instance).FComponentState, csFixups)

Wenn ich keinen Getter verwende, funktioniert die Zuweisung, allerdings kann ich dann zur Laufzeit keinen Standard zurückgeben.

Robert
  Mit Zitat antworten Zitat