ProgressBar- Eigenschaften!?

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?

LG; Marcus

Hallo Marcus,

in solchen Fällen liest man erst einmal die Dokumentation.

Der Doppelklick funktioniert hier tatsächlich nicht. Ich weiß nicht warum (Bug?). Der übliche Weg ist aber gangbar und führt auch zum Ziel.

Gruß
HJH

Ich hatte es schonmal geschrieben, finde es aber gerade nicht.

Es liegt daran, dass Windows kein OnClick Ereigniss für die Progressbar hat. Deswegen kann der Designer darauf nicht reagieren.

paresy

Hallo Paresy,

das verstehe ich jetzt nicht.

Ein Label kennt auch keinen OnClick Event und trotzdem kann man im Entwurfsmodus mit Doppelklick den Property Editor aufrufen.

Warum dann nicht auch bei der ProgressBar?

Gruß
HJH

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.

Gruß,

Toni

Progressbar.zip (657 Bytes)

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.

paresy

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 :wink:

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. :smiley:

Download oben geupdatet…

Toni

Ok. Hast mich überzeugt. Werde das bei gelegenheit einbauen :smiley:

paresy

…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.:smiley:

Egon

Hallo Egon,
ist ja fast peinlich, wie einfach die Lösung war :wink:
Problem gelöst- vielen Dank!!!

LG; Marcus

Hi Toni.

Ich wollte mir die Sache soeben anschauen.

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.

paresy

Schau mal ob der designmode dies akzeptiert.

Gruß,

Toni

Progressbar.zip (768 Bytes)