Hallo zusammen,
vermutlich stell ich mich etwas ungeschickt an- aber wie um Himmels Willen sage ich einer Progress Bar, dass der Balken den Zustand einer Variable darstellen soll (Position)???
Ein Doppelklick auf die ProgressBar macht leider nicht das bekannte Fenster zum Festlegen der Properties auf…
Wie also geht das?
Das ist zwar grundsätzlich richtg, aber dafür gibts ja OOP.
Ich kenn ja nun die Designer-Innereinen nicht aber am besten hooked man sich auf ein artverwantes Event wie zum Beispiel onMouseDown und deklariert an einer geeigneten Stelle einer abgeleiteten Klasse die gewünschte property. Das Resultat ist eine 1:1 Kopie des Windows-Progressbars die dem Original in nichts nachsteht mit einem zusätzlichem onClick Event.
Klingt jetzt sau-kompliziert, ist aber ein „Dreizeiler“. Hab ihn grad mal aus dem Kopf getippt und nur kurz getestet. Da ich nicht weiss was für eine Delphiversion ihr einsetzt hab ich es als Klasse in eine „Universalkomponente“ verpackt. Sinnvollerweise wird die Datei in die dafür vorgesehene dcluser.dpk compiliert. Dadurch landet die Komponente im Delphi-Reiter und du kannst sie, wie das original aich, einfach aufs Form ziehen.
Wie Tonic gesagt hat: Es gäbe bestimmt eine Möglichkeit diese Funktion nachzubauen. Da es hier aber schonmal ein Doppelklick und keine Einzelklick ist, wird die Sache noch ein wenig komplizierter. Ich kann mir die Sache angucken und muss abwägen, ob es nicht irgendwelche Seiteneffekte geben könnte.
Microsoft hat sich bestimmt etwas dabei gedacht, kein OnClick Event für die ProgressBar zu schicken. Beim Label gibt es ein OnClick Event.
Als ich grad feststellte, dass paresy tatsächlich Recht hat und die WM_LBUTTONDBLCLK WindowsMessage im Falle TProgressbar, auch mit allen Tricks, nicht gefeuert wird (Ich nehme mal an, dass meintest du mit „etwas komplizierter“), packte mich der Ehrgeiz
Hab mal eine schlichte kleine Komponente mit Click und DoubleClick ausgerüstet. Sie benimmt sich exakt wie man es auch bei Windows-Komponenten erwarten würde - Soweit ich es testen kann. Nebenwirkungen brauchst du normalerweise nicht befürchten. Ich „fummel“ ständig an den Standardkomponenten rum.
…nun habt ihr mich ziemlich abgehängt! Vielleicht habe ich mich unglücklich ausgedrückt.- Ich wollte etwas ganz einfaches:
Die Progress bar soll wie ein Thermometer eine Temperatur anzeigen. Also als Länge des grünen Balkens eine Variable nehmen. Es kann doch nicht im Sinne des Erfinders sein, dass man nur statische Werte vorgeben kann? Und da hatte ich gedacht, dass man die erwähnte Variable einfach über Doppelklick auf die Progress bar im Edit-Modus des Designers ändern kann, wie bei allen anderen Objekten auch…
Den Link im 2. Beitrag ganz oben hatte ich nactürlich als erstes konsultiert- aber genau das funktioniert ja bei mir nicht!
Hallo!
Klick auf das Objekt, dann im Objectinspektor in der Zeile bei IPSYMCON
1P/0E draufclicken da wo dann 3 Punkte zu sehen sind.
Dann erscheint der IPSYMcon Property Editor, die Variable eintragen.
All klar? Geht eben nicht mit einfach draufklicken.
Das Problem lässt sich aber mit deinem Ansatz nicht lösen, da der Designer im Designmodus den Doppelklick direkt in der Messageschleife abfängt. (Also eine Ebene tiefer)
Man könnte jetzt versuchen die Nachricht hinterher zu injizieren… aber dazu müsste ich ein wenig mehr nachforschen.