Einzelnen Beitrag anzeigen

Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

TObjectList reagiert nicht auf ModifyAction

  Alt 18. Jun 2011, 14:05
Delphi-Version: 2010
Hallo zusammen,

ich habe folgendermassen eine Klasse und eine TObjectList deklariert :
Delphi-Quellcode:
  TModifyActionList = (lnNone, lnChange, lnDelete);
  //
  // Event zur Erstellung eines neuen Datensatzes für die Ansprechpartner
  //
  TAnsprechpartnerListe = class;
  TAnsprechpartnerListeAddEvent = procedure(Sender: TObject; Gesellschafter: TAnsprechpartnerListe) of object;
  //
  // Zur Speicherung der Ansprechpartnerliste
  //
  TAnsprechpartnerListe = class
  private
    FOnChange : TAnsprechpartnerListeAddEvent;
    FModifyAction : TModifyActionList;
    FKundenNr : string;
    FVorname : string;
    FNachname : string;
    FTelefon1 : string;
    FTelefon2 : string;
    FFax : string;
    FMobil : string;
    FEMail : string;
    procedure SetKundenNr(Value: string);
    procedure SetVorname(Value: string);
    procedure SetNachname(Value: string);
    procedure SetTelefon1(Value: string);
    procedure SetTelefon2(Value: string);
    procedure SetFax(Value: string);
    procedure SetMobil(Value: string);
    procedure SetEMail(Value: string);
    function GetKundenNr: string;
    function GetVorname: string;
    function GetNachname: string;
    function GetTelefon1: string;
    function GetTelefon2: string;
    function GetFax: string;
    function GetMobil: string;
    function GetEMail: string;
  public
    constructor Create;
    property KundenNr : string read GetKundenNr write SetKundenNr;
    property Vorname : string read GetVorname write SetVorname;
    property Nachname : string read GetNachname write SetNachname;
    property Telefon1 : string read GetTelefon1 write SetTelefon1;
    property Telefon2 : string read GetTelefon2 write SetTelefon2;
    property Fax : string read GetFax write SetFax;
    property Mobil : string read GetMobil write SetMobil;
    property EMail : string read GetEMail write SetEMail;
    property ModifyAction : TModifyActionList read FModifyAction write FModifyAction;
    property OnChange: TAnsprechpartnerListeAddEvent read FOnChange write FOnChange;
  end;
  //
  // Erstellen und Speichern der Kundenliste
  //
  TAnsprechpartnerObjListe = class(TObjectList)
  private
    FOnChange : TAnsprechpartnerListeAddEvent;
    FModifyAction : TModifyActionList;
    FNewRecord : Boolean;
    procedure DeleteRecord(Klasse: TAnsprechpartnerListe);
  protected
    function getItem(Index: Integer): TAnsprechpartnerListe; virtual;
    procedure setItem(Index: Integer; Objekt: TAnsprechpartnerListe); virtual;
    procedure Notify(Ptr: Pointer; Action: TListNotification); override;
  public
    function Add(Objekt: TAnsprechpartnerListe): Integer; virtual;
    function NewRecord(Objekt: TAnsprechpartnerListe): Integer; virtual;
    function Remove(Objekt: TAnsprechpartnerListe): Integer; virtual;
    function IndexOf(Objekt: TAnsprechpartnerListe): Integer; virtual;
    procedure Insert(Index: Integer; Objekt: TAnsprechpartnerListe); virtual;
    property Items[index: Integer]: TAnsprechpartnerListe read getItem write setItem; default;
    property ModifyAction : TModifyActionList read FModifyAction write FModifyAction;
    property OnChange: TAnsprechpartnerListeAddEvent read FOnChange write FOnChange;
  end;
In dem Programm wo diese TObjectList eingesetzt wird, wir die ObjectList beim Erstellen des DataModuls miterstellt und die Procedure für das OnChange-Event übergeben.
Delphi-Quellcode:
  AnsprechpartnerListe := TAnsprechpartnerObjListe.Create(True);
  AnsprechpartnerListe.OnChange := AnsprechpartnerListeChange;
Wenn ich jetzt das Property ModifyAction mit dem Wert "lnChange" aufrufe, passiert garnicht. Keine Fehlermeldung oder Hinweis. In einem anderen Programm, welches ich unter 2007 geschrieben habe, funktioniert diese Variante sehr gut. Normal sollte das Setzen von lnChange auf die Eigenschaft ModifyAction die procedure getItem aufrufen,was aber unter Delphi 2010 nicht funktioniert.

Hat jemand eine Idee, wieso es nicht klappt ? Gibt es irgendwelche Unterschiede zwischen Delphi 2007 und Delphi 2010 bei der Benutzung der TObjectList ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat