Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi listview realtime daten anzeige (https://www.delphipraxis.net/185677-listview-realtime-daten-anzeige.html)

Captnemo 29. Jun 2015 15:49

AW: listview realtime daten anzeige
 
Also i würde ich jetzt mal nicht als globale Variable definieren. Kann man zwar machen, aber ich würde i immer als lokale variable als integer, also für z.B. Schleifen verwenden. Besser globale Variablen so zu benennen, dass man Rückschlüsse auf ihre Funktion schließen kann.

Dann du kannst nicht einfach den Count von ListView.Items auf 5 setzen. Du musst die Objecte auch erzeugen.
Delphi-Quellcode:
var
  i: integer;
  li: TListItem;
begin
  for i:=0 to 4 do
  begin
    li:=ListView1.Items.add;
    li.caption:=Format('Item %d', [i]);
  end;
end;
oder so.

Auch SubItems mus man erzeugen:
Delphi-Quellcode:
li.subitems.add('Beispieltext');
Zugriff auf z.B. 3. SubItem von dem 4. Item:
Delphi-Quellcode:
ListView1.Items[4].SubItem[3]
liefert den String zurück oder es kann ein String zugewiesen werden.

JnZn558 29. Jun 2015 16:09

AW: listview realtime daten anzeige
 
Zitat:

Zitat von Popov (Beitrag 1307091)
Und was soll dabei virtuell sein?

Guck dir mal mein Beispiel an. Die Daten befinden sich in einer externen Liste. Es muss nicht unbedingt TObjectList sein, es muss nur eine externe Liste sein. In OnData (ListView1Data()) wird dann auf die Daten der Liste zugegriffen und in ListView dargestellt.

ich habe dein Code ausprobiert, leider ist das nicht was ich wollte. ich wollte nur in einer Zeile die zweite Spalte den Zähler drin sein un der wird laufend angezeigt.

Popov 29. Jun 2015 16:23

AW: listview realtime daten anzeige
 
Delphi-Quellcode:
var
  i : Integer;
  a: array[0..4] of Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 10;
  i := 0;
  ListView1.Items.Count := 5;
  ListView1.DoubleBuffered := True;
end;

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := 'Test ' + IntToStr(Item.Index);
  Item.SubItems.Add('SubItem ' + IntToStr(a[Item.Index]));

  //Item.Caption := 'Test' + IntToStr(Item.Index);
  //Item.SubItems.Add('SubItem' + IntToStr(Item.Index));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  k: Integer;
begin
  for k := 0 to 4 do
  begin
    Inc(i);
    a[k] := i;
  end;
  ListView1.Refresh;

  //ListView1.Items.Item[ 0 ].SubItems.Strings[ 0 ] := IntToStr( i );
end;

Mavarik 29. Jun 2015 16:26

AW: listview realtime daten anzeige
 
Bevor ich den Sourcecode einsteige...

Timer mit 10ms würde 100 Änderungen pro Sekunde bedeuten... Macht das Sinn?

der "Monitor" macht 60. Dein Auge so weniger als 25... Abgesehen davon der der Timer überhaupt nicht so oft "feuert".

Und ein ListView würde ich dafür auch nicht nehmen...

Vielleicht erzählst Du uns mal ein bisschen mehr über den Sinn der Software...

JnZn558 29. Jun 2015 16:37

AW: listview realtime daten anzeige
 
Zitat:

Zitat von Popov (Beitrag 1307101)
Delphi-Quellcode:
var
  i : Integer;
  a: array[0..4] of Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 10;
  i := 0;
  ListView1.Items.Count := 5;
  ListView1.DoubleBuffered := True;
end;

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := 'Test ' + IntToStr(Item.Index);
  Item.SubItems.Add('SubItem ' + IntToStr(a[Item.Index]));

  //Item.Caption := 'Test' + IntToStr(Item.Index);
  //Item.SubItems.Add('SubItem' + IntToStr(Item.Index));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  k: Integer;
begin
  for k := 0 to 4 do
  begin
    Inc(i);
    a[k] := i;
  end;
  ListView1.Refresh;

  //ListView1.Items.Item[ 0 ].SubItems.Strings[ 0 ] := IntToStr( i );
end;

danke sehr. ist genau das richtige für mich. bist großklasse.

Zitat:

Zitat von Mavarik (Beitrag 1307103)
Bevor ich den Sourcecode einsteige...

Timer mit 10ms würde 100 Änderungen pro Sekunde bedeuten... Macht das Sinn?

der "Monitor" macht 60. Dein Auge so weniger als 25... Abgesehen davon der der Timer überhaupt nicht so oft "feuert".

Und ein ListView würde ich dafür auch nicht nehmen...

Vielleicht erzählst Du uns mal ein bisschen mehr über den Sinn der Software...

Danke für dein Hinweis. Ich habe andere Sinn für mein vorhaben. Letztendlich wird es nicht 10 ms sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Seite 2 von 2     12   

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