Delphi-PRAXiS

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 Gute VCL Controls machen? (https://www.delphipraxis.net/21161-gute-vcl-controls-machen.html)

Zerolith 28. Apr 2004 16:01


Gute VCL Controls machen?
 
Hallo!

hmm ja der Titel is n bissl komsich - mir is aber nix besseres eingefallen.

Folgendes ich habe mir ein nettes Control geschrieben dass mir auf ein Panel mehere Unterpanels zeichnet. Diese unterpanels sind mit Rahmen (Canvas Malerei) verziert. haben einen Titel (Canvas.TextOut)

dann hat jedes dieser "unter-Panels" ein RichEdit.

links neben dem Titel is noch ein Speedbutton zum auf und zuklappen.

So.... in einer Schleife werden ca 50 - 100 Panels hinzugefügt und auch gezeichnet.

DAS IST VIEL ZU LANGSAM!!!! Diese blöde bildflackerei etc.

Wie macht man gute, schnelle, und Grafisch ansprechende Komponenten??!?!?! mit Canvas malerei bestimmt nicht! (oder doch?)

Danke,
Daniel

Phoenix 28. Apr 2004 16:06

Re: Gute VCL Controls machen?
 
Eine Idee wäre, die Controls erst zu erzeugen, Ihnen aber noch keinen Parent zuzuweisen. Dann packst Du einen Verweis auf die Komponente in eine Objectlist.

Hinterher gehst Du alle Elemente der ObjectList durch und weist Ihnen hintereinander direkt den Parent zu.

Damit verhinderst Du, das immer erst erstellt & gezeichnet, erstellt & gezeichnt wird, sonder du erzeugst erst alle Controls und lässt die dann auf einen Schlag zeichnen.

rebugger 28. Apr 2004 16:07

Re: Gute VCL Controls machen?
 
Komponenten sind auch nicht dazu da, dass du eine einzige Komponente auf deine Form setzt und dein Fenster fertig hast, sondern, dass du mehrere Zusammensetzt.
Wieso trennst du das ganze nicht ein bißchen und versuchst die Canvas-Malerei zu optimieren oder zu ersetzen ?

Zerolith 29. Apr 2004 06:31

Re: Gute VCL Controls machen?
 
Morgen erstmal!

Danke für die Antworten!

Also die Idee mit dem noch nicht zugewiesenen Parent gefällt mir gut, werd ich mal probieren.

Mir ist die Idee mit einem Draw-Timer gekommen. Und zwar dass ich vielleicht, hmm, alle 30ms das ding neu zeichne und nicht bei jeder kleinigkeit.

Ich weiß aber noch nicht wie ich das Realisieren soll.

@rebugger: hmmm das zeug gehört einfach in eine Komponente. Ein Grid ist auch kein leeres Panel und man muss nicht jede Zelle einzeln erzeugen, dem grid zuweißen usw.

Meine Kompo soll ja in gewisser weiße so ähnlich werden. nur dass ich keine simple zelle sondern eine, ehh nennen wir's ne komplexe Zelle, habe (siehe erster post).

Erläutere mir bitte genauer wie ich die malerei optimieren soll - gibts ne kurzform für 2x Canvas.Rectangle ??? oder was meinst du mit optimieren

Jens Schumann 29. Apr 2004 06:48

Re: Gute VCL Controls machen?
 
Hallo,
es ist immer geschickter erst auf einer TBitmap zu malen und das "Bild" dann mit BitBlt auf die
Zielcanvas zu kopieren. Geht ziemlich fix. Also ohne flackern und so. Auch wenn das Fenster maximiert ist.

GuenterS 4. Mai 2004 21:07

Re: Gute VCL Controls machen?
 
gibt es nicht auch 2 Methoden "BeginUpdate" und "EndUpdate"

Vielleicht würde es helfen am Anfang BeginUpdate und am Ende EndUpdate aufzurufen, die sollen denk ich das Update dazwischen verhindern, so dass nur noch einmal bzw. nach EndUpdate upgedated wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 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