ProgressBar in Statusbar ?

Rund um die LCL und andere Komponenten
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

ProgressBar in Statusbar ?

Beitrag von pluto »

Hallo,
seit einiger Zeit versuche ich in einer Statusbar eine Prossesbar zu packen.
aber das klappt nicht.

ich habe meine Foren durchsucht und diesen Code dabei gefunden auf:
http://www.delphi-forum.de/viewtopic.ph ... rogressbar

Code: Alles auswählen

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;


Die Prossesbar verschwindet einfach nur. Mehr nicht. Wird aber im Panel nicht angezeigt.


@Christian
Jetzt nehme ich wieder "nur" code schnipsel und passe sie an, wie würde du denn bei einer sache vorgehen die du noch A: noch nie gemacht hast und B: wo der "schnipsel" nicht geht.

Edit1:
in ARect.left steht nur eine lange - zahl. wird also nicht installisiert bzw. mit werten belegt :(
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich würde die Progressbar einfach über die Statusbar setzen und jetzt sag nicht das geht nicht das hab ich im TCS Programmer so gemacht und funktioniert in Linux wie Windows prächtig.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe eine Lösung gefunden und zwar möchte ich jetzt die Positions angaben selbst Aussrechnen, das ist auch kein Problem.
Evlt. kennt ihr ja noch einen besseren Weg.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

@Christian muss aber bei jeder Vergrößerung angepasst werden, also wenn sich das Form vergrößert..... genauso wollte ich es jetzt auch machen.

Aber Dank für den Tip.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das kann man mit den Anchors super machen...
Bloss gut das du die Lösung wieder gefunden hast was (nachdem ichs gesagt hab)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe es jetzt so gelöst: jetzt muss diese Procedure nur einmal bei FormResize aufgerufen werden und der tag von Statusbar muss geändert werden. Das wollte ich noch später ändern.
Was haltet ihr von diesem Code ? gibt es noch eine andere Lösung ?
und warum geht der Code von oben nicht ?
wegen den Windows Botschaften ?

Code: Alles auswählen

procedure AddCompSB(sb:TStatusBar; control:TWinControl);
var
 l,r:Integer;
procedure SetSize(var left, right:Integer);
var
  i,x,m:integer;
begin
  x:=0; m:=0;
  for i:=0 to sb.Panels.Count-1 do begin
    if i = sb.Tag then begin
      left:=x;
      // Wenn der Zähler kleiner als anzahl ist
      // keine Problem mit +1 gibt.
      if i = sb.Panels.Count-1 then m:=0 else m:=+1;
      // Nimmt die Nächste größe.
      right:=x+sb.Panels[i+m].Width;
      break;
    end;
    x:=x+sb.Panels[i].Width;
 
  end;
end;
 
begin
  SetSize(control.Left,control.Width);
  Control.Top:=sb.Top;
  Control.Height:=sb.Height;
end;
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

das Anchors kenne ich noch gar nicht, könntest du mir ein Beispiel damit geben ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du bist noch nicht über anchors gestolpert ?
Spiel einfach mal im Objektinspector damit rum ein Panel auf ne Form und statt Align die Anchors benutzen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Bis jetzt noch nicht. Du meinst damit könnte man das besser lösen ?
muss ich mal testen. Danke für den Tipp.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Die Idee mit dem Anchors ist nicht schlecht, nur wird die Größe nicht an den Panel Größe gesetzt. Muss ich das Manuel machen ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Setz doch die Statusbar auf ein Panel und die Progressbar aufs selbe Panel dann orientieren sich die Anchors der Progressbar am Panel und nicht an der Form. Aber mit den Anchors auf Rechts +unten gesetzt müsste die Progressbar doch auch da bleiben wo sie hin soll oder ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

du hast recht.
ich musste aber noch Links hinzufügen. Naja geht auch.

Ich finde meine Methode aber nicht schlecht.
MFG
Michael Springwald

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: ProgressBar in Statusbar ?

Beitrag von reiter »

Beim durchsuchen für die statusbar habe ich den Thread hier von Pluto gefunden und das ist auch schon ne Weile her.. ist eigentlich ne feine Sache die progressbar in die statusbar zu packen ...gibts das blos für Windows oder auch für Linux bzw. Mac?
Wie löst ihr das den mit einer progressbar?

Gruß
Reiter

Antworten