![]() |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
@Madas
Benutzt du die aktuelle Version? Das Autofitting war seit etwa 4.6.x, wenn ich mich recht erinnere langsam, da die Implementierung dummerweise nach dem ersten DoGetCellContentMargin versehentlich mittels WM_SETREDRAW das Zeichnen wieder erlaubte. Das habe ich aber in der 4.8.0 oder 4.8.1 gefixt. Sowohl in synthetischen Tests, wie auch in Real-World-Applikationen ist die Leistung dadurch deutlich gestiegen. Ansonsten arbeite ich inzwischen in der Freizeit, so mir welche bleibt :-), an einem Footer. Den Vista-Code habe ich bereits überarbeitet; wenn der Footer fertig ist, kommt das mit. |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
|
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
Schon irgend eine Meinung, wo man ggf. neue Demos unterbringen könnte? |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
WM_SETREDRAW wird in der VirtualTree.pas genau dreimal aufgerufen. In unserer aktuellen Version (4.7.0) und in der 4.8.5 passiert dies genau so oft und an den gleichen Stellen. Einzige Änderung die an den Stellen hinzukam ist (FUpdateCount = 0). Was aber keine Auswirkung hat. Damit Ihr das Ganze auch mal nachvollziehen könnt, ist im Anhang ein kleines Testprojekt mit "nur" 10000 Knoten (Zeit für Resize wird gestoppt). Ist onBeforeCellPaint als Event registriert dann dauert das Optimieren einer Spalte (unter WinXp) knapp 8s . Ohne onBeforeCellPaint nur 300ms. Das Projekt wurde unter D2009 erstellt und die Version vom VST ist 4.8.5 . |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
Delphi-Quellcode:
das wird von Euch nur dazu benutzt, um jede 2. Zeile anders einzufärben?
procedure TForm1.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); var CachedShadowColor: TColor; begin if (CellPaintMode = cpmPaint) then begin CachedShadowColor := TargetCanvas.Brush.Color; try if (Odd(Node.Index)) then begin TargetCanvas.Brush.Color := RGB(225, 225, 225); TargetCanvas.FillRect(CellRect); end; finally TargetCanvas.Brush.Color := CachedShadowColor; end; end; inherited; end; Wir machen das in einem anderen Event:
Delphi-Quellcode:
und haben derartige Probleme mit Version 4.7.0 noch nicht beobachtet.
procedure TForm1.VST_HostListBeforeItemErase(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect; var ItemColor: TColor; var EraseAction: TItemEraseAction); begin if Odd(Node.Index) then begin ItemColor := col_VST_Line2; // auch TColor($F4F2F2); end else begin ItemColor := col_VST_Line1; end; EraseAction := eaColor; end; Gruß, Christoph |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Naja wozu sollte OnBeforeCellPaint denn deiner Meinung nach sonst zuständig sein, wenn nicht zum anpassen
vom bestimmten Sachen vor dem Zeichnen? Btw: Du kannst die komplette Procedure auch leer lassen, bis auf das "inherited;". Selbst dann dauert es ewig. Wie gesagt bei den Versionen vor 4.6.x lief das Ganze ja auch noch ohne Probleme. Jetzt nicht mehr. |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
Zitat:
Zitat:
Christoph |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
Trotzdem kann es meiner Meinung nach nicht sein, dass ein registrierter Event, dessen Eventhandler praktisch nichts macht, die Performance so in den Keller zieht. Aber vielleicht habe ich da auch einen Denkfehler. :gruebel: |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
Gruß, Christoph |
Re: VirtualTreeView - Wer hat die Weiterentwicklung übernomm
Zitat:
@pertzschc: Du scheinst ja das Beispiel runtergeladen zu haben. Dann leere doch Spaßes halber das OnBeforeCellPaint (kommentiere alles aus). Setze den RootNodeCount auf 100000. Dann siehst du was wir meinen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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