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
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.
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.
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 ?
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:=0to sb.Panels.Count-1dobegin if i = sb.Tagthenbegin left:=x; // Wenn der Zähler kleiner als anzahl ist // keine Problem mit +1 gibt. if i = sb.Panels.Count-1then m:=0else 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;
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 ?
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?