AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Treeview zur Laufzeit erzeugen und OnDeletion-Event steuern
Thema durchsuchen
Ansicht
Themen-Optionen

Treeview zur Laufzeit erzeugen und OnDeletion-Event steuern

Ein Thema von Herbie · begonnen am 30. Mai 2007
Antwort Antwort
Herbie

Registriert seit: 23. Jul 2004
Ort: Augsburg
14 Beiträge
 
Delphi 6 Enterprise
 
#1

Treeview zur Laufzeit erzeugen und OnDeletion-Event steuern

  Alt 30. Mai 2007, 08:40
Hallo,

erstelle eine Treeview-Klasse zur Laufzeit. Lese dann die Knoteneinträge aus einer INI-Datei, die Zusatzinformationen schreibe ich in eine separate Klasse, auf die dann die DATA-Eigenschaft des Knotens verweist. Nun möchte ich beim Beenden des Programms alle Klasseneinträge, auf die die DATA-Eigenschaft jedes Knotens verweist, freigeben. Leider wird die entsprechende Prozedur (DoDelete) nicht durchlaufen. Was mache ich falsch!

Meine Codezeilen:

Delphi-Quellcode:
type

  TTVExpandedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;

  // Basisklasse zum Laden der Parameter aus der Ini-Datei
  // = Basisknoten / Ausgangspunkt aller Knoten
  TProjectData = class(TTreeView)
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  private
    FUserOnDeletion: TTVExpandedEvent;
    procedure DoDelete(Sender: TObject; Node: TTreeNode);
    function GetOnDeletion: TTVExpandedEvent;
    procedure SetOnDeletion(Value: TTVExpandedEvent);
    procedure TreeFromIni(Tree: TTreeView; INI: TIniFile; Section: string;
      Expand: Boolean);
    function SetClassForTreeNode(aTree: TTreeView; aIniRefList: TStringList): boolean;
  public
    function LoadParamFromINIFile(aFile: string): boolean;
    //function SaveToParamINIFile: boolean;
  published
    property OnDeletion: TTVExpandedEvent read GetOnDeletion write
      SetOnDeletion;
  end;

implementation


//******************************************************************************
// ****** TProjectData-Klasse *******
//******************************************************************************
constructor TProjectData.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  try
    OnDeletion := DoDelete;
  except
    on E:Exception do begin
      ShowMessage('Create - ' + classname + ' - ' + E.Message);
    end;
  end;
end;

//******************************************************************************
destructor TProjectData.Destroy;
begin
  inherited;
end;

//******************************************************************************
procedure TProjectData.DoDelete(Sender: TObject; Node: TTreeNode);
begin
  if Assigned(FUserOnDeletion) then FUserOnDeletion(Self, Node);
  if Node.Data <> nil then begin
    //TProjectNode(Node.Data).Destroy;
    TProjectNode(Node.Data).Free;
    Node.Data := nil;
  end;
end;

//******************************************************************************
function TProjectData.GetOnDeletion: TTVExpandedEvent;
begin
  Result := FUserOnDeletion;
end;

//******************************************************************************
procedure TProjectData.SetOnDeletion(Value: TTVExpandedEvent);
begin
  FUserOnDeletion := Value;
end;
Setze ich mir nun einen Breakpoint innerhalb TProjectData.Destroy und TProjectData.DoDelete, so wird nur die Prozedur Destroy durchlaufen.

Bin für jede Hilfe sehr dankbar!

Gruss
Herbie
Jan Herbert
  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 00:02 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