Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

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 Panel mit vielen Buttons baut sich langsam auf (https://www.delphipraxis.net/188444-panel-mit-vielen-buttons-baut-sich-langsam-auf.html)

NielsB 4. Mär 2016 09:40

Panel mit vielen Buttons baut sich langsam auf
 
Hallo zusammen,
folgende Situation: Ich arbeite an einer VCL-Anwendung mit XE7, die auf Systemen mit Intel Atom N2600 CPU laufen muss. Die Anwendung soll mittels VCL Styles optisch etwas aufgehübscht werden, allerdings treten dabei sichtbare Performanceprobleme auf.
Am meisten fällt es auf, wenn auf einem Formular ein Panel mit etwa 60 Buttons eingeblendet werden soll:
Code:
Panel1.Left:=0;
Panel1.Top:=0;
Panel1.Visible:=True;
Das Panel inklusive Buttons erscheint nicht auf einmal, sondern wird stückweise aufgebaut. Ich habe bereits versucht, DoubleBuffered bei allen Komponenten zu aktivieren, das Panel mit Invalidate/Update/Repaint auf einmal zu zeichnen, ParentBackground und FullRepaint zu deaktivieren, DisableAlignment vor dem Anzeigen auszuführen, sowie einige andere Tipps - alles ohne irgendeine Veränderung.
Auf meinem Entwicklungsrechner ist das Problem nur schwierig zu erkennen, da dieser anscheinend zu schnell ist. Allerdings besteht das Problem auch ohne Verwendung von VCL Styles, es ist aber nur per Zeitlupe zu erkennen. Ich habe keine weiteren Ideen, wie man das Problem lösen könnte und wäre über jede Hilfe dankbar.

Schöne Grüße
NielsB

Sherlock 4. Mär 2016 12:15

AW: Panel mit vielen Buttons baut sich langsam auf
 
Verstehe ich das korrekt, daß auch ohne Styles auf dem Zielsystem der Aufbau zu langsam ist? Ansonsten liegt das eben in der Natur der Sache: Betriebssystemkomponenten werden beim "stylen" nachträglich übertüncht. Ich würde darauf verzichten. Früher galt mal die Maxime, daß der Anwender seinem System mit Absicht das aktuelle Aussehen gegeben hat, da muß eine Anwendung nicht wie ein Fremdkörper hervorstechen. Zumal dadurch nicht immer die Bedienbarkeit erhöht wird.

Sherlock

Bernhard Geyer 4. Mär 2016 12:52

AW: Panel mit vielen Buttons baut sich langsam auf
 
Die Atoms haben eine sehr inperformante GPU. Wenn Du dann auch noch ein sehr alte Treiberversion hast ist eher zufall das man überhaupt was auf den Bildschirm sieht (um es überspitzt auszudrücken).
Versuch mal auf jeden Fall einen aktuellen Treiber zu bekommen.

NielsB 4. Mär 2016 13:21

AW: Panel mit vielen Buttons baut sich langsam auf
 
Das ist richtig. Vielleicht verstehe ich hier etwas generell falsch, aber Übergänge zwischen Formularen passieren auch nicht "in einem Frame", sondern sind immer partielle Änderungen am Bild. Je weniger Objekte auf dem Bildschirm sind, desto weniger merklich ist der Übergang. Ich würde allerdings gerne einen sauberen Übergang haben, sodass alle Veränderungen erst zwischengespeichert werden und das Resultat dann fertig angezeigt wird.
Die Styles machen das Problem nur deutlicher sichtbar, aber es besteht auch, wenn ich ein neues Projekt aus nur einem Frame, einem Panel und einigen Buttons besteht, ohne Einbindung von Styles.

Bernhard Geyer 4. Mär 2016 13:24

AW: Panel mit vielen Buttons baut sich langsam auf
 
Hast du schon mal die Treiber kontrolliert?
Mit fehlerhaften Treibern habe ich schon die tollsten Dinge erlegt (z.B. wurde außerhalb des Formulars gezeichnet an eine Stelle die überhaupt nicht mehr zum Programm gehört)

uligerhardt 4. Mär 2016 13:26

AW: Panel mit vielen Buttons baut sich langsam auf
 
Vielleicht hilft auch MSDN-Library durchsuchenDeferWindowPos.
Edit: Oder WM_SETREDRAW+RedrawWindow.

NielsB 4. Mär 2016 13:41

AW: Panel mit vielen Buttons baut sich langsam auf
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1332074)
Hast du schon mal die Treiber kontrolliert?
Mit fehlerhaften Treibern habe ich schon die tollsten Dinge erlegt (z.B. wurde außerhalb des Formulars gezeichnet an eine Stelle die überhaupt nicht mehr zum Programm gehört)

Ich werde morgen nachschauen, habe ich gerade keine Möglichkeit zu. Auf meinem Entwicklungspc erscheinen die Buttons in eine Art 'Welle' von rechts nach links, wenn auch sehr schnell.

zagota 4. Mär 2016 13:45

AW: Panel mit vielen Buttons baut sich langsam auf
 
Zitat:

Zitat von NielsB (Beitrag 1332045)
Code:
Panel1.Left:=0;
Panel1.Top:=0;
Panel1.Visible:=True;

Schon versucht?
Code:
Panel1.Left:= Screen.Width + 1; // Sollte natürlich das Formular sein auf dem das Panel liegt.
Panel1.Top:=0;
Panel1.Visible:=True;
Panel1.Left:= 0;
oder
Code:
SendMessage(Panel1.Handle, WM_SETREDRAW, 0, 0);
try
  Panel1.Left:= 0;
  Panel1.Top:=0;
  Panel1.Visible:=True;
finally
  SendMessage(Panel1.Handle, WM_SETREDRAW, 1, 0);
  RedrawWindow(Panel1.Handle, nil, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
end;
oder ein Kombination aus beiden.

cu

haentschman 4. Mär 2016 14:43

AW: Panel mit vielen Buttons baut sich langsam auf
 
Hallo...:P

Kannst du mal das Formular zeigen? Mich würde mal interessieren warum ein Formular 60 Buttons benötigt. :wink:

Sir Rufo 4. Mär 2016 15:10

AW: Panel mit vielen Buttons baut sich langsam auf
 
60 Buttons (die aufgehübscht werden sollen) auf einem "schwachem" Rechner - es riecht nach POS oder ählichem ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.
Seite 1 von 5  1 23     Letzte »    

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