Thema: Delphi Setter Problem

Einzelnen Beitrag anzeigen

guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

Setter Problem

  Alt 9. Dez 2008, 06:06
Also es geht hier nicht um einen Hund...

Ich möchte einen Parameterstring ablegen und auf diese Parameter in der Form von Wertepaaren zugreifen (so ähnlich wie der ADO Verbindungsstring). Abgelegt wird der String in einer Stringliste, ich möchte jetzt allerdings gezielt nur die entsprechenden Propertys zur Verfügung stellen.

Dazu habe ich mir ein Objekt gebastelt, das diese Propertys enthält.

Delphi-Quellcode:
  TParameters = class(TObject)
  private
    FParameters: TStrings;
    function GetParamString: String;
    procedure SetParamString(Value: String);
    function GetValue(const Name: string): string;
    procedure SetValue(const Name, Value: string);
    function GetValueFromIndex(const Index: Integer): string;
    procedure SetValueFromIndex(const Index: Integer; Value: string);
    function GetName(const Index: Integer): String;
    function GetCount: Integer;
  public
    constructor Create;
    destructor Destroy;
    property ParamString: String read GetParamString write SetParamString;
    property Value[const Name: String]: String read GetValue write SetValue; default;
    property ValueFromIndex[const Index: Integer]: String read GetValueFromIndex write SetValueFromIndex;
    property Name[const Index: Integer]: String read GetName;
    property Count: Integer read GetCount;
  end;
Dieses Objekt verwende ich nun in einem weiteren Objekt.

Delphi-Quellcode:
  TUser = class(TCustomItem)
  private
    FUserID: String;
    FParameters: TParameters;
    procedure SetUserID(Value: String);
    procedure SetParameters(Value: TParameters);
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy;
    procedure Assign(Source: TPersistent); override;
    property UserID: String read FUserID write SetUserID;
    property Parameters: TParameters read FParameters write SetParameters;
  end;
Funktioniert auch im Prinzip ganz gut. Ich kann wie gewünscht auf Parameters zugreifen. Allerdings soll bei einem Schreibzugriff auf Parameters der von TCustomItem geerbte FState geändert werden, was ich so machen wollte:

Delphi-Quellcode:
procedure TUser.SetParameters(Value: TParameters);
begin
  if FParameters.ParamString <> Value.ParamString then begin
    FParameters.ParamString := Value.ParamString;
    State := osModified;
  end;
end;

Blöderweise wird das allerdings nicht bearbeitet (ich hab einen Haltepunkt auf die if Abfrage), so dass ich nicht "bemerke" wenn ein Parameter geändert wird.

Wie kann ich das hinkriegen?
  Mit Zitat antworten Zitat