AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Änderung einer Eigenschaft registrieren

Ein Thema von meierotto · begonnen am 24. Jun 2005 · letzter Beitrag vom 24. Jun 2005
Antwort Antwort
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#1

Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 09:16
Hallo ,

ich habe ein wahrscheinlich eher simples Problem, Denkfehler oder so. Ich möchte gern ein Dirty-Flag setzen, wenn in meiner Klasse an einer Eigenschaft etwas geändert wurde. Es handelt sich dabei um ein Array von Records. Ich werd am besten mal Teile des Codes anzeigen:

Delphi-Quellcode:
TTskKommentare = class(TObject)
  private
    _savestat:smallint; //Besagt, ob und wie gespeichert werden muss
    PKommentare:TKommentarListe; //Array von TKommentar-Records
    procedure PKommentarChange(KL:TKommentarListe);
  public
    ...
    property Kommentare:TKommentarListe read PKommentare write PKommentarChange;
  end;
Delphi-Quellcode:
procedure TTskKommentare.PKommentarChange(KL: TKommentarListe);
begin
  if _savestat<2 then _savestat:=2; //muss komplett gespeichert werden
  PKommentare:=KL;
end;
Wird nun Ein Kommentar geändert, soll Savestat auf 2 gesetzt werden.
Könnt ihr mir vielleicht auf die Sprünge helfen?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 09:43
Die VCL macht es dir vor - mach aus deinen Kommentaren eine array property, dann hast du zwangsläufig einen read / write accessor. Dann implementiere noch ein Ereignis OnChange für deine Kommentare. In der Methode SetKommentar(index, kommentar) prüfst du dann ab:

Delphi-Quellcode:
procedure TKommentare.SetKommentar(index: integer; kommentar: string);
begin
  if FKommentare[index] <> kommentar then begin
    FKommentare[index] := kommentar;
    if Assigned(FOnChange) then
      OnChange();
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 09:50
Danke Marabu,

leider bin ich heut etwas begriffstutzig . Kannst du das mit der Array-Property und dem Ereignis nochmal etwas genauer erläutern?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 10:15
Vielleicht hilft dir etwas Code?

Delphi-Quellcode:
type
  TKommentare = class
  private
    FList: TStringList;
    FOnChange: TNotifyEvent;
    function GetKommentar(index: integer): string;
    procedure SetKommentar(index: integer; kommentar: string);
  public
    constructor Create;
    destructor Destroy; override;
    property Kommentar[index: integer]: string read GetKommentar write SetKommentar;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

constructor TKommentare.Create;
begin
  inherited Create;
  FList := TStringList.Create;
end;

destructor TKommentare.Destroy;
begin
  FList.Free;
  inherited;
end;

function TKommentare.GetKommentar(index: integer): string;
begin
  if index < FList.Count
    then Result := FList[index]
    else raise Exception.CreateFmt('index [%d] out of bounds', [index]);
end;

procedure TKommentare.SetKommentar(index: integer; kommentar: string);
begin
  if index < FList.Count then begin
    FList[index] := kommentar;
    if Assigned(FOnChange) then
      FOnChange(self);
  end else
    raise Exception.CreateFmt('index [%d] out of bounds', [index]);
end;
marabu
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 10:41
Es ist Freitag, ich bin irgendwie nicht so gut drauf.
Vielen Dank für deine Hilfe. Hab auch hier schon was gefunden: Hier im Forum suchenArray als Published Property

Ein schönes Wochenende (und mir gute Erholung )
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Änderung einer Eigenschaft registrieren

  Alt 24. Jun 2005, 11:17
Zitat von meierotto:
Ein schönes Wochenende (und mir gute Erholung)
Diesem Wunsch schließe ich mich aus vollem Herzen an - werde am Wochende auch erstmal versuchen meine Sommergrippe auszukurieren.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz