Entwickler-Ecke
Sonstiges (Delphi) - ProgressBar beschriften
Coder - Mi 22.09.04 15:17
Titel: ProgressBar beschriften
Hi.
Wie kann ich einen Text auf/in einer ProgressBar anzeigen?
neojones - Mi 22.09.04 15:44
Mit nem Label dass de drüber legst.
Tobias1 - Mi 22.09.04 15:46
Das geht nicht! Man kann das Label nicht nach vornebringen!
Coder - Mi 22.09.04 15:46
jupp.
Tobias1 - Mi 22.09.04 15:52
Geht das mit Canvas?!
neojones - Mi 22.09.04 15:55
Mit nem Panel vor der Progressbar.
Brush.Style auf bsClear und neu zeichnen.
Coder - Mi 22.09.04 15:58
Wie, neu zeichnen??
Mit FillRect?
BenBE - Mi 22.09.04 20:29
Normalerweise beschrifte ich meine Progressbars mit nem Edding ...
Ansonsten probier ich öfters auch Update, Repaint und Invalidate aus ...
MartinPb - Mi 22.09.04 21:55
Möglich wäre ein Label in die Progressbar einzubauen. Da man kein Label über die ProgressBar legen kann, legt man es eben rein. Hier ein Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| with Label1 do begin Parent := ProgressBar1; Transparent := True; Alignment := taCenter; Layout := tlCenter; Align := alClient; Font.Style := [fsBold]; Font.Color := clGreen; end; |
Die ProgressBar und das Label sollte schon vorher existieren. Der Code verschiebt den Label dann in die Progressbar. Dann wird der Label Hintergrund durchsichtig gemacht und das Label so angeordnet, daß er permanent mittig in der ProgressBar bleibt. Dann wird der Font noch so verändert, daß besser lesbar ist.
wulfskin - Mi 22.09.04 22:40
Alternativ kannst du dir auch eine eigene Komponente erstellen, bei der du das Zeichnen überschreibst und am Ende noch Text darauf malst.
Hier hab ich mal ein bisschen Quelltext, mit dem du Text auf die ProgressBar zeichnen kannst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var hDC: THandle; R: TRect; begin with ProgressBar1 do begin hDC := GetWindowDC(Handle); try if hDC <> 0 then begin R := ClientRect; SetBKMode(hDC, TRANSPARENT); SetTextColor(hDC, RGB(255, 255, 255)); DrawText(hDC, 'TEST', 4, R, DT_SINGLELINE or DT_VCENTER or DT_CENTER); end; finally ReleaseDC(Handle, hDC); end; end; |
Gruß Hape
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt.
Coder - Fr 15.10.04 19:12
thx, hat geklappt. :)
rstaeker - Sa 26.02.05 21:54
wulfskin hat folgendes geschrieben: |
Alternativ kannst du dir auch eine eigene Komponente erstellen, bei der du das Zeichnen überschreibst und am Ende noch Text darauf malst.
Hier hab ich mal ein bisschen Quelltext, mit dem du Text auf die ProgressBar zeichnen kannst: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var hDC: THandle; R: TRect; begin with ProgressBar1 do begin hDC := GetWindowDC(Handle); try if hDC <> 0 then begin R := ClientRect; SetBKMode(hDC, TRANSPARENT); SetTextColor(hDC, RGB(255, 255, 255)); DrawText(hDC, 'TEST', 4, R, DT_SINGLELINE or DT_VCENTER or DT_CENTER); end; finally ReleaseDC(Handle, hDC); end; end; | Gruß Hape
|
Sorry, daß ich diesen alten Thread noch mal aktiviere.
Die Lösung scheint genau das zu sein, was ich suche, aber ich hab vergeblich versucht, eine Paint procedure zu finden. Wo kann ich diesen Text oben reinschreiben.
MfG Rene
sintec - Mo 21.05.07 15:14
wulfskin hat folgendes geschrieben: |
Alternativ kannst du dir auch eine eigene Komponente erstellen, bei der du das Zeichnen überschreibst und am Ende noch Text darauf malst.
Hier hab ich mal ein bisschen Quelltext, mit dem du Text auf die ProgressBar zeichnen kannst: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var hDC: THandle; R: TRect; begin with ProgressBar1 do begin hDC := GetWindowDC(Handle); try if hDC <> 0 then begin R := ClientRect; SetBKMode(hDC, TRANSPARENT); SetTextColor(hDC, RGB(255, 255, 255)); DrawText(hDC, 'TEST', 4, R, DT_SINGLELINE or DT_VCENTER or DT_CENTER); end; finally ReleaseDC(Handle, hDC); end; end; | Gruß Hape
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt. |
Hallo erstmal,
der obere Code passt super zu meinem Programm, nur das Problem ist, dass ich als Text den Status in Prozent ausgebe und da mallt er alles rüber so dass man die zahlen nicht erkennen kann.
Wie kann man machen, dass er vorher den Text löscht und den neuen darauf malt?
BenBE - Mo 21.05.07 16:14
Dann musst Du die Position deines drübergemalten Textes ggf. etwas anpassen ...
sintec - Di 22.05.07 08:37
So sieht es aus mit dem Text in dem ProgressBar (sieh Anhang)
BenBE hat folgendes geschrieben: |
Dann musst Du die Position deines drübergemalten Textes ggf. etwas anpassen ... |
Was meinst du damit und wie soll es aussehen?
arj - Di 22.05.07 10:45
Im Zweifelsfalle könnte man vielleicht auch eine neue Komponente schreiben, die eine Ableitung von der ProgressBar ist,
und dann den Text überschreiben.
Oder gleich ne eigene Komponente schreiben. ;)
elundril - Di 22.05.07 10:46
bin gerade dabei! is auch schon fast fertig!
lg el
sintec - Di 22.05.07 11:07
elundril hat folgendes geschrieben: |
bin gerade dabei! is auch schon fast fertig!
lg el |
könntest du dann bitte den Code hier posten?
elundril - Di 22.05.07 14:00
ich kann dann die komponente Posten! ;-)
lg el
sintec - Di 22.05.07 14:50
Das ist nett
danke im voraus
Delete - Di 22.05.07 15:46
Wenn es nur um die Prozent geht, warum keine TGauge aus den Beispielen verwenden?
sintec - Mi 23.05.07 08:32
Luckie hat folgendes geschrieben: |
Wenn es nur um die Prozent geht, warum keine TGauge aus den Beispielen verwenden? |
Die Gauge habe ich jetzt gefunden.
Kann mir einer erklären wie man damit umgeht?
Delete - Mi 23.05.07 10:50
Genauso wie mit allen anderen Komponenten auch.
Jochen W. - Mi 23.05.07 11:17
sintec hat folgendes geschrieben: |
Kann mir einer erklären wie man damit umgeht? |
Was verstehst du denn nicht?
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!