Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ProgressBar in StatusBar integrieren
Delete - Mi 10.09.03 18:25
Titel: ProgressBar in StatusBar integrieren
Salü zusammen
Ich möchte eine ProgressBar in meine StatusBar integrieren.
Wie ich die ProgressBar über die ganze StatusBar lege, ist mir klar.
Jedoch möchte ich die StatusBar nur in einem einzigen Panel anzeigen.
hat jemand eine Ahnung, wie das gehen könnte??
ErnestoChe - Mi 10.09.03 20:23
Hi,
das geht z.B. folgendermaßen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure PutCtrlInPanel(wCtrl: TWincontrol; StatusBar: TStatusBar; PANEL_ID: Integer); var ARect: TRect; begin StatusBar.Perform((WM_USER + 10), PANEL_ID, Integer(@ARect)); wCtrl.Parent := StatusBar; wCtrl.BoundsRect := ARect; end;
procedure TfrmMain.FormShow(Sender: TObject); begin PutCtrlInPanel(ProgressBar1, StatusBar1, 2); end; |
Mit dieser Methode kann man auch andere WinControls in eine Statusbar einfügen, wie z.B. einen Button.
MFG
- Ernesto -
Delete - Mi 10.09.03 22:58
Vielen Dank euch allen!
Werde die Funktion am nächsten Montag in der Firma testen... habe bis dahin eben noch Schule.. :x
ErnestoChe - Mi 10.09.03 23:06
Hi,
WM_USER
Was gefällt Dir an dem Code nicht, dass du nochmal einen Link auf Code setzst, der fast das gleiche macht? Funktioniert doch einwandfrei. Bei dir etwa nicht? Kriegst du einen Fehler?
Ausserdem ist WM_USER geschickter als SB_GETRECT, da man die CommCtrls.pas nicht einbinden muss.
Und das hier
Delphi-Quelltext
1:
| wCtrl.BoundsRect := ARect; |
ist ebenfalls geschickter als das
Delphi-Quelltext
1: 2: 3: 4:
| progressbar1.top := r.top; progressbar1.left := r.left; progressbar1.width := r.right-r.left; progressbar1.height := r.bottom-r.top; |
MFG
- Ernesto -
Delete - Do 11.09.03 03:18
Ich frage, weil WM_USER+10 eien benutzerdefinierte Nachricht ist. Woher weiß jetzt diese Zeile:
Delphi-Quelltext
1:
| StatusBar.Perform((WM_USER + 10), PANEL_ID, Integer(@ARect)); |
was es damit anfangen soll?
ErnestoChe - Do 11.09.03 09:08
Hi,
Luckie hat folgendes geschrieben: |
Ich frage, weil WM_USER+10 eien benutzerdefinierte Nachricht ist. Woher weiß jetzt diese Zeile:
Sourcecode:
StatusBar.Perform((WM_USER + 10), PANEL_ID, Integer(@ARect));
was es damit anfangen soll? |
Weil
(WM_USER + 10) dasselbe ist wie
SB_GETRECT, sprich die Selbe Konstante. Daher finde ich es besser als SB_GETRECT, weil man nicht die CommCtrl.pas einbinden muss, wenn man sie sonst nicht braucht.
Hättest auch gleich so fragen können, dann hätt ich dich nicht missverstanden :wink:
MFG
- Ernesto -
Delete - Do 11.09.03 09:21
OK. Dann hätte ich das aber so gemacht:
Delphi-Quelltext
1: 2:
| const SB_GETRECT = WM_USER + 10; |
Dann wäre es gleich um einiges klarer gewesen.
Delete - Mo 15.09.03 12:46
Titel: JUHUII....
Es funktioniert Einwandfrei.. :-)
*freude herscht*
florian - Fr 13.08.04 13:36
Titel: Re: JUHUII....
DaBass hat folgendes geschrieben: |
Es funktioniert Einwandfrei.. :-)
*freude herscht* |
tjo..... bei mir eigentlich auch, nur ist die progressBar mit der "Luna Haut" :lol: etwas zu hoch... wat muss ich am code änder, damit dat dingens (die progressBar) nich ganz so hoch ist?
danke für die hilfe im voraus! :D
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!