AGB  ·  Datenschutz  ·  Impressum  







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

Timer für ListBox

Ein Thema von lucy · begonnen am 25. Okt 2017 · letzter Beitrag vom 25. Okt 2017
 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#14

AW: Timer für ListBox

  Alt 25. Okt 2017, 15:53
Ich glaube ein VirtualStringTree wäre in der Angelegenheit etwas overkill. Ich gehe mal davon aus, dass der TE gerade erst mit dem Programmieren angefangen hat und der VST dann "etwas" zu kompliziert wäre.
Ich finde das nicht. Ich habe ja nun schon einigen geholfen beim Lernen und so kompliziert ist der VST nicht, wenn man den für einfache Zwecke benutzt. Klar, man kann damit auch deutlich kompliziertere Sachen machen. Aber nur die Anzahl der Einträge setzen und OnGetText implementieren... das ist nicht komplizierter als in einer anderen Liste die Einträge zu löschen und neu hinzuzufügen.

Komplettes Beispiel (Projekt liegt im Anhang):
Delphi-Quellcode:
unit VstDemo;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls,
  VirtualTrees, System.Generics.Collections, System.DateUtils;

type
  TMyData = class
  private
    FCreationTime: TDateTime;
  public
    constructor Create(const ATime: TDateTime);
    property CreationTime: TDateTime read FCreationTime write FCreationTime;
  end;

  TfrmVstDemo = class(TForm)
    vstEntries: TVirtualStringTree;
    btnAdd: TButton;
    tmrDelete: TTimer;
    procedure btnAddClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure vstEntriesGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
      var CellText: string);
    procedure tmrDeleteTimer(Sender: TObject);
  private
    FEntries: TList<TMyData>;
    procedure UpdateTree;
  public
  end;

var
  frmVstDemo: TfrmVstDemo;

implementation

{$R *.dfm}

{ TfrmVstDemo }

procedure TfrmVstDemo.btnAddClick(Sender: TObject);
begin
  // Eintrag hinzufügen
  FEntries.Add(TMyData.Create(Now));
  UpdateTree;
end;

procedure TfrmVstDemo.FormCreate(Sender: TObject);
begin
  // Liste erzeugen
  FEntries := TObjectList<TMyData>.Create;
end;

procedure TfrmVstDemo.FormDestroy(Sender: TObject);
begin
  // Liste freigeben
  FEntries.Free;
end;

procedure TfrmVstDemo.tmrDeleteTimer(Sender: TObject);
var
  i: Integer;
begin
  // Alle Einträge durchgehen und nach 5 Sekunden herauswerfen
  for i := FEntries.Count - 1 downto 0 do
    if SecondsBetween(FEntries[i].CreationTime, Now) >= 5 then
      FEntries.Delete(i);
  // Baumanzeige aktualisieren
  UpdateTree;
end;

procedure TfrmVstDemo.UpdateTree;
begin
  // Anzahl der Einträge setzen und Anzeige aktualisieren
  vstEntries.ChildCount[vstEntries.RootNode] := FEntries.Count;
  vstEntries.Invalidate;
end;

procedure TfrmVstDemo.vstEntriesGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: string);
begin
  // Text, der für den Eintrag angezeigt werden soll, liefern indem man diesen in CellText schreibt
  CellText := 'Eintrag von ' + DateTimeToStr(FEntries[Node.Index].CreationTime);
end;

{ TMyData }

constructor TMyData.Create(const ATime: TDateTime);
begin
  FCreationTime := ATime;
end;

end.
Angehängte Dateien
Dateityp: 7z VST Liste.7z (50,8 KB, 1x aufgerufen)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
 


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 17:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz