AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree - Nodes hinzufügen

Ein Thema von d7user1 · begonnen am 23. Mär 2014 · letzter Beitrag vom 30. Mär 2014
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
Popov
(Gast)

n/a Beiträge
 
#21

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 14:29
@d7user1

Weil es mich interessierte, habe ich die 13000 Daten in ListView eingelesen, wobei ich das LV virtuell nutzte. Ist alles in 31 ms erledigt (inkl. lesen, sortieren, usw).
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#22

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 15:17
hallo. genau das habe ich gestern auch einmal getan. die zeit weiß ich nicht mehr aber es war sehr schell. schneller als der VirtualStringTree.
das einzige was mich störte ist dass ich checkboxen gebraucht habe, ich die aber selbst nicht zeichnen kann. und ich bin sicher genau da, beim zeichnen der checkboxen, wird die listview wieder sehr langsam.

mein code ist momentan so weit angepasst dass das einlesen von 13000 dateien + diverses zeichnen von bestimmten nodes + dateigrößenbestimmung und datumsumwandung in etwa 450ms erledigt ist. dabei erledige ich das bestimmen der dateigröße und das umwandeln des dateidatums im OnGetText-Event statt wie zuvor beim erstellen der nodes.
beim erstellen der nodes dauert es 4 sekunden.
kleiner vergleich: dasselbe mit einer listview + checkboxen dauert etwa 25 sekunden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 15:36
Wie schon gesagt, Du könntest Dir auch mal das NextGrid anschauen, das ist IMO etwas einfacher zu handhaben als der VST. Die Versionen für Delphi 6 und 7 sind Freeware.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#24

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 17:38
@d7user1

Ok, das ist u. U. mit etwas Arbeit verbunden, da die CheeckBoxes tatsächlich nicht gezeichnet werden. Aber das stellt sich die Frage was schneller ist - sich die Kenntnisse über eine neue Komponente aneignen oder CheckBoxen selber zeichnen.

Das Zeichnen selbst sollte kein großes Problem sein:
Delphi-Quellcode:
var
  DispRect : TRect;
begin
  DispRect := Item.DisplayRect(drIcon);

  with Sender as TListView do
    if Item.Checked then
      ImageList2.Draw(Canvas, DispRect.Left - 16, DispRect.Top, 1)
    else
      ImageList2.Draw(Canvas, DispRect.Left - 16, DispRect.Top, 0);
end;
In ImageList2 sind zwei 16x16 große Bitmaps mit, die für CheckBox An/Aus stehen. Den Rest, wie auch Checkbox Klick, muss man noch machen. Ist aber alles machbar.
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#25

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 18:02
ich würde schon gerne weiter die listview benutzen. aber das mit dem bitmap zeichnen usw, ich habe es gerade ausprobiert, das ist mir ein wenig zu wackelig.

es gäbe sogar noch einen grund bei der listview zu bleiben:
wenn mein VirtualTreeView nicht genug nodes hat um dem scrollbalken anzuzeigen, dann bekommen meine nodes keine hintergdunfarbe (Brush).

ein manuelles VST.Refresh zeigt mir die farben an. aber ich habe keine ahnung wo ich diesen refresh hinsetzen muss.

edit: ich habe jetzt mal in GetImageIndex ein VST.Invalidate; gesetzt. das scheint zu funktionieren aber ob es schön ist weiß ich nicht.
damit es nicht ständig aufgerufen wird und somit prozessorzeit unnötig für nichts beansprucht wird eine boolsche variable gesetzt wenn es aufgerufen wurde.

Geändert von d7user1 (24. Mär 2014 um 20:10 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#26

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 20:35
Also bisher habe ich noch nicht mit Virtual ListView gearbeitet, ist im Grunde aber eine feine Sache, man muss nur die Daten auslagern. Das mit den Checkboxen ist Pech, da muss man eben selbst programmieren.

NextGrid und VST sehen verdammt gut aus, müssen aber installiert werden.

Vorausgesetzt also Virtual ListView ist nichts, auch NextGrid und VST nicht, eben aus den genannten Gründen, stellt sich die Frage nach dem Beispiel im Beitrag #17. Das ist kein Virtual ListView, arbeitet aber insoweit ähnlich, als das es zuerst komplett leer ist und erst beim Scrollen gefüllt wird. Es ist etwas langsamer, hat dafür aber CheckBoxen, da es eine normale ListView ist. Sollte also die Lösung für dein Problem sein.
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#27

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 21:56
ich werde mir dein beispiel mal ansehen und mit meinem VST vergleichen.

meine "Dateien-lesen-funktion" braucht momentan für das lesen von C:\Windows rekursiv 6 sekunden. (95000 dateien)
die grafische darstellung dauert nur wenige millisekunden.

Geändert von d7user1 (24. Mär 2014 um 21:58 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#28

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 22:06
Nun, da ist nichts besonderes dran, bis auf, dass zuerst nur leere Items angelegt werden. Diese werden später JustInTime gefüllt.
  Mit Zitat antworten Zitat
d7user1
(Gast)

n/a Beiträge
 
#29

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 22:12
demnach sind 6 sekunden für ein verzeichnis wie C:\windows normal?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#30

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 22:36
Also ich weiß nicht wie du auf die 6 Sekunden kommst. Ich hab gerade den Code geändert und ihn auch Unterverzeichnisse einbinden lassen. Dauer bei knapp 12000 Dateien im Windowsordner etwa 500 ms (komplett, einlesen und in LV ausgeben).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


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 23:41 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