Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
17.05.2012, 03:15:31
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Einsteiger Forum
| | |-+  Progressbar zur Laufzeit in Statusbar erstellen und wieder löschen
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Progressbar zur Laufzeit in Statusbar erstellen und wieder löschen  (Gelesen 3196 mal)
Thomas
Newbie
*
Offline Offline

Beiträge: 32


« am: 21.08.2008, 21:43:11 »

Hallo,

ich generiere in meine Programm zur Laufzeit eine Progressbar auf einem Statusbar:

Code:
function TFrmJPGIndex.ProInStaBarCreate(StatusBar: TStatusBar; var ProgressBar: TALProgressBar; PanelItem: Word): Boolean;
var
  k, PbLeft: Integer;
begin
  Result := False;
  if PanelItem > (StatusBar.Panels.Count - 1) then
    Exit;
  PbLeft := StatusBar.Left;
  for k := 0 to PanelItem - 1 do
    PbLeft := PbLeft + StatusBar.Panels.Items[k].Width;
  ProgressBar := TALProgressBar.Create(StatusBar); //Wird mit Parent-Obj gelöscht
  with ProgressBar do
  begin
    Parent        := StatusBar;
    Left          := PbLeft + 2;
    Top           := 2;
    Height        := Statusbar.Height - 2;
    Width         := StatusBar.Panels[PanelItem].Width - 2;
    BarColorStyle := cs2Colors;
    Min           := 0;
    Max           := 100;
    Percentage    := True;
    ShowPosText   := True;
    PosTextSuffix := ' %';
  end;
  Result := True;
end;

Dies funktioniert super.
Aber nun meine Frage:
Wie lösche ich die Progressbar wieder?
Mit .free habe ich das Phänomen, daß es  nur beim ersten löschen sauber funktioniert. Nach dem zweiten Lauf bleibt die Progressbar sichtbar. Nach einem Minimieren und Maximieren der Form, ist die Statusbar wieder sauber. Refresh und Repaint brachten keinen Erfolg.

Gruß aus Köln
Thomas
Gespeichert
gutro
Newbie
*
Offline Offline

Beiträge: 40


« Antworten #1 am: 21.08.2008, 22:04:36 »

Hallo Thomas!

Wenn du die Progressbar öfter brauchst, dann statt löschen setze doch einfach Visible auf false und wenn du sie wieder brauchst Visible auf true.

Gruß gutro
Gespeichert
grenzgaenger
Global Moderator
Full Member
*****
Offline Offline

Beiträge: 232


« Antworten #2 am: 26.08.2008, 21:12:51 »

probiere mal deine statusbar zu refreshen, vielleicht ist hier 'n kleiner bug drin ...
Gespeichert
Thomas
Newbie
*
Offline Offline

Beiträge: 32


« Antworten #3 am: 18.09.2008, 21:38:17 »

Hallo,

das ist sehr merkwürdig. Weder Refresh noch Repaint bringen eine Lösung. Egal ob auf der Form oder auf die Statusbar. Aber wenn ich nacheinander zuerst Form.Width um 1 erhöhe und anschließend wieder reduziere, so verschwindet die Progressbar.

Na Ja ... nicht besonders elegant, aber es funktioniert.

Gruß aus Köln
Thomas
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #4 am: 19.09.2008, 09:54:41 »

Du brauchst dein Progressbar nicht zu löschen (wie oben bereits erwähnt).
Stattdessen änderst Du die Eigenschaft "Parent" und "Visible".
In etwa:
Progressbar.Visible:=False;
Progressbar.Parent:= Application.MainForm;

Das Austauschen des Parent sollte eine Aktualisierung erzwingen.
Gespeichert

Prof.Y
Arpoon
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS