AGB  ·  Datenschutz  ·  Impressum  







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

Gute VCL Controls machen?

Ein Thema von Zerolith · begonnen am 28. Apr 2004 · letzter Beitrag vom 4. Mai 2004
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Gute VCL Controls machen?

  Alt 28. Apr 2004, 17:01
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
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Gute VCL Controls machen?

  Alt 28. Apr 2004, 17:06
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
rebugger

Registriert seit: 29. Okt 2002
Ort: Auerbach
190 Beiträge
 
Delphi 7 Professional
 
#3

Re: Gute VCL Controls machen?

  Alt 28. Apr 2004, 17:07
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 ?
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Gute VCL Controls machen?

  Alt 29. Apr 2004, 07:31
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
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Gute VCL Controls machen?

  Alt 29. Apr 2004, 07:48
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Gute VCL Controls machen?

  Alt 4. Mai 2004, 22:07
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.
Günter
  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 21:49 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