![]() |
Delphi-Version: 5
Record Properties
Hallo Zusammen,
ich habe einen eigenen Datentypen über record definiert.
Delphi-Quellcode:
diesen Benutze ich in einer Klasse
TRedundancyLivedataResult = record
private FAppTime: String; FOpcTime: string; procedure SetRedundanyLivedataAppTime(const Value: String); procedure SetRedundanyLivedataOpcTime(const Value: String); public property AppTime: String read FAppTime write SetRedundanyLivedataAppTime; property OpcTime: string read FOpcTime write SetRedundanyLivedataOpcTime; end;
Delphi-Quellcode:
Im Haupt-Programm
TViewModel = class(TModel)
private ... FConsoleHandler: TConsoleHandler; FRedundancyLivedata: TRedundancyLivedataResult; property RedundanyLivedata: TRedundancyLivedataResult read FRedundancyLivedata write SetRedundancyLivedata; ... procedure TViewModel.SetRedundancyLivedata(const Value : TRedundancyLivedataResult); begin FRedundancyLivedata := Value; end; ...
Delphi-Quellcode:
dann wird intern das ausgeführt, mein Problem ist wie komme ich aus den Record-Setter
// Daten ins Model schreiben
FViewModel.RedundanyLivedata.AppTime := Result.AppTime;
Delphi-Quellcode:
zurück zur "Parent-Klasse"
TRedundancyLivedataResult.SetRedundanyLivedataAppTime
Delphi-Quellcode:
um auf dessen Member-Vars zurückzugreifen (z.B. FConsoleHandler)
TViewModel
Delphi-Quellcode:
procedure TRedundancyLivedataResult.SetRedundanyLivedataAppTime
(const Value: String); begin // Nur wenn sich die Daten geändert haben if (FAppTime <> Value) then begin // Neue Daten speichern FAppTime := Value; // An dieser Stelle möchte gerne auf Members aus der Klasse (TViewModel) zugreifen // TViewModel.FConsoleHandler <- geht logischerweise nicht end; end; |
AW: Record Properties
Wenn du deine Delphi-Version nicht im Profil angegeben hast, dann setze doch bitte in den Threads die Version richtig. Delphi 5 ist ja wohl nicht richtig.
Oder meinst du, wir führen hier jeder einzeln für alle Mitglieder (die es nicht schaffen ihre Version korrekt zu kommunizieren) ein Versions-Verzeichnis auf das wir dann zurückgreifen können. :roll: (Ich definitiv nicht) Kann doch nicht so schwer sein ... |
AW: Record Properties
Ok, sorry gemacht.
Delphi XE Enterprise |
AW: Record Properties
Und nein, du kannst das gleich ganz vergessen.
Dein Record kommt aus einem Property (Getter) und ist somit nur eine Kopie, also selbst wenn du über die Property im Record die Schreibschutzprüfung "umgehst", bringt das nichts, da diese Änderungen niemals zurückgespeichert werden. Einzige Lösungen:
|
AW: Record Properties
Zitat:
|
AW: Record Properties
danke für den hinweis
mache es jetzt ansatzweise so...
Delphi-Quellcode:
So funktioniert es:TViewModel = class(TModel) private type TRedundancyLivedataResult = class private FConsoleHandler: TConsoleHandler; FAppTime: String; FOpcTime: string; procedure SetRedundanyLivedataAppTime(const Value: String); procedure SetRedundanyLivedataOpcTime(const Value: String); public property AppTime: String read FAppTime write SetRedundanyLivedataAppTime; property OpcTime: string read FOpcTime write SetRedundanyLivedataOpcTime; end; private FRedundancyLivedata: TRedundancyLivedataResult; // constructor TViewModel.Create; constructor TViewModel.Create(const EventHandler: TEventHandler; const ConsoleHandler: TConsoleHandler); begin inherited Create; // hier könnte ich jetzt die Membervars mitübegeber? z.b. TRedundancyLivedataResult.Create(EventHandler) FRedundancyLivedata := TRedundancyLivedataResult.Create; // die könnte ich dann hier verwenden, richtig? procedure TViewModel.TRedundancyLivedataResult.SetRedundancyLivedataAppTime (const Value: String);
Delphi-Quellcode:
TViewModel = class(TModel) FRedundancyLivedata: TRedundancyLivedataResult; // (see @TRedundancyLivedataResult = class) ... property RedundanyLivedata: TRedundancyLivedataResult read FRedundancyLivedata write FRedundancyLivedata; ... implementation // constructor TViewModel.Create; constructor TViewModel.Create(const EventHandler: TEventHandler; const ConsoleHandler: TConsoleHandler); begin ... FRedundancyLivedata := TRedundancyLivedataResult.Create(self); ... end; { TViewModel.TRedundancyLivedataResultTest } constructor TViewModel.TRedundancyLivedataResult.Create (const parent: TViewModel); begin FParentModel := parent; end; procedure TViewModel.TRedundancyLivedataResult.SetRedundancyLivedataAppTime (const Value: String); begin FParentModel.FooBar := 1; // Membervarriable aus der Hauptklasse end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz