Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponenten anpassen / TProgressbar / Wo ist der Canvas?
Stephan.Woebbeking - Di 14.06.11 10:49
Titel: Komponenten anpassen / TProgressbar / Wo ist der Canvas?
Hallo,
wenn ich eine Komponente (in dem Fall TProgressbar) anpassen will, kann ich die ableiten. Wie kann ich denn jetzt das veränderte Verhalten darstellen? Einen Canvas habe ich nicht. Den Brush habe ich gefunden, aber was tu ich damit ohne den zugehörigen Malbereich? Das müsste bei anderen Komponenten doch bestimmt ähnlich sein?
Stephan
jaenicke - Di 14.06.11 11:47
Du müsstest dir mit GetDC den Decive Context holen können. Da aber eine Progress Bar ein spezielles Control ist, würde ich dir raten die komplett neu zu schreiben. Viel kannst du vom Original eh nicht brauchen.
Stephan.Woebbeking - Di 14.06.11 16:28
Ja, das GetDC habe ich auch gesehen, mir fiel aber nicht ein, was ich mit dem DC anfangen könnte... Außerdem widerstrebt es mir eine komplette Komponente neu aufzubauen wenn es die schon gibt. Ich hab im Forum etwas gelesen was mir ermöglicht hat ein Shape über die Bar zu legen. So geht es, aber mit einer spezialisierten Komponente wäre es schon nett... Aber halt nicht wenn ich dafür diese Art Redundanz erzeugen muss. Naja, vielleicht hab ich ja noch 'ne Idee wenn ich ausgeschlafen bin. ;)
jaenicke - Di 14.06.11 17:26
Stephan.Woebbeking hat folgendes geschrieben : |
Aber halt nicht wenn ich dafür diese Art Redundanz erzeugen muss. |
Welche Redundanz? :nut:
Im Gegenteil, es gibt doch eben gerade keine Redundanz, sondern deine Komponente kann von dem Original vielleicht 5% des Codes brauchen, braucht aber eigentlich ganz andere Sachen...
Man sollte als Basiskomponente immer eine nehmen, die möglichst viel mit dem gewünschten Ergebnis gemein hat. und das ist bei dir ganz bestimmt nicht TProgressBar (vom Namen TProgressBar einmal abgesehen...).
Das einzige was du davon wirklich nutzen kannst, ist die Eigenschaft Position. Das ist eine Zeile plus das Setzen via Message, wobei du letzteres bei einer eigenen Komponente aber gar nicht brauchst. StepIt und StepBy gibt es auch noch. Aber das war es.
Also warum die langsamere Variante mit dem Setzen der Eigenschaften über Messages usw., wenn du das ganze doch eh selbst machen willst? Das ist irgendwie von hinten durch die Brust ins Auge geschossen...
Und GetDC brauchst du bei einer anderen Basisklasse nicht, da gibt es dann Canvas.
Stephan.Woebbeking - Mi 22.06.11 17:45
Hallo, sorry für die späte Antwort...
Naja, also ich denke ich brauche schon die ganze Komponente... Ich wollte auf dem Progressbar noch einen Strich darstellen, der gewissermassen den "höchsten" Punkt für einen Moment festhält. Das hätte ich gern in der Komponente verankern. Da ich da aber keine Idee weiter zu hatte, habe ich ein Shape darüber gelegt, dessen Position ich entsprechend manipuliere. So geht's, aber wie gesagt, eine eigene Komponente wäre auch schön gewesen...
Danke jedenfalls für die Hinweise!
Stephan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!