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
Benutzerbild von jaenicke
jaenicke

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

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 14:12
SR.Size gibt u. U. die falsche Dateigröße zurück, denn es ist Integer.
Bei Delphi 7 war das damals so.
Heute ist es ein Int64 Wert.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: VirtualStringTree - Nodes hinzufügen

  Alt 24. Mär 2014, 14:20
Gibt SR.Size (bei aktuellen Delphis) auch den korrekten Wert an (> 2GB)?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

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
 
#4

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.659 Beiträge
 
Delphi 12 Athens
 
#5

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
 
#6

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
 
#7

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
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:00 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