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??


matze - Mi 10.09.03 20:23

such mal hier im forum !!!
Suche in: Delphi-Forum, Delphi-Library STATUSBAR AND PROGRESS*


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 21:07

Und was macht /ist WM_USER + 10? :shock:

http://www.luckie-online.de/files/tipps_tricks/komponenten.html untere drittel: "Komponente in Statusbar".


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,

Suche in: Delphi-Forum, Delphi-Library 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; //set size of   
 progressbar1.left := r.left; //Progressbar to  
 progressbar1.width := r.right-r.left; //fit with panel 
 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