Einzelnen Beitrag anzeigen

moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Objecte Speichern VirtualTreeView

  Alt 29. Feb 2008, 14:05
Hi,

ich verwende den VT fast ausschließlich mit Objekten. Dazu ein wenig Beispielcode:

Delphi-Quellcode:
procedure TfrmMain.AddNode( LogItem: TLogItem;
                            vst: TVirtualStringTree );
var
  _LogItem: TLogItem;
begin
  if ( ( Assigned( LogItem ) ) AND
       ( Assigned( vst ) ) ) then
  begin
    vst.NodeDataSize := SizeOf( TLogItem );
    vst.AddChild( nil, LogItem );
  end;
end;
Mein LogItem (das Objekt) ist so aufgebaut:

Delphi-Quellcode:
  TLogItem = class(TObject)
  private
    FLogLevel: ELogLevel;
    FLogStyle: ELogStyle;
    FText: WideString;
    FDateTime: TDateTime;
  public
    constructor Create( DateTime: TDateTime;
                        LogLevel: ELogLevel;
                        LogStyle: ELogStyle;
                        Text: WideString );
    destructor Destroy(); override;
  published
    property LogLevel: ELogLevel read FLogLevel write FLogLevel;
    property LogStyle: ELogStyle read FLogStyle write FLogStyle;
    property Text: WideString read FText write FText;
    property DateTime: TDateTime read FDateTime write FDateTime;
  end;
Und nun möchte ich natürlich, dass auch im Tree die Daten angezeigt werden:

Delphi-Quellcode:
procedure TfrmMain.vst_logGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  Data: TLogItem;
begin
  Data := TLogItem( Sender.GetNodeData( Node )^ );

  case Column of
    1: CellText := FormatDateTime(
         ShortDateFormat + ' ' + LongTimeFormat + '.zzz', Data.DateTime );
    2: CellText := Data.Text;
  end;
end;
Ich verwalte alle meine Objekte wiederrum in einer "TObjectList", die bei Löschung eines Objekts auch dessen Speicher freigibt.


Viele Grüße.
  Mit Zitat antworten Zitat