![]() |
ProgressBar bei Verbinden durchlaufen lassen
Guten Tag ich benutze eine JvspecialProgress Bar um während des Vebindens zu einem Mysql Server anzuzeigen, dass momentan gearbeitet wird. Um die Bar durchlaufen zu lassen benutze ich diesen Code:
Delphi-Quellcode:
Die Startvariable wird am anfang des Verbindens auf true gesetzt:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if startbar=true then begin if JvSpecialprogress1.Position=JvSpecialprogress1.Maximum then JvSpecialprogress1.Position:=0 else JvspecialProgress1.StepIt; end else JvSpecialprogress1.Position:=0; end;
Delphi-Quellcode:
Wenn ich jetzt auf den Button klicke wird die ProgressBar aber erst gestartet, nachdem der MessageDlg angezeigt wurde, und wird nach dessen Schließen auch gleich wieder beendet. Liegt das an dem Timer? Oder wie kann man das anders lösen?
procedure TForm1.connectbtnClick(Sender: TObject);
begin startbar:=true; if connectbtn.Caption='Verbinden' then startconnection(db,host,benutzer,pass) else begin mysql_close(_myCon); MessageDlg('Die Verbindung wurde erfolgreich getrennt',mtinformation,[mbOK],0); connectbtn.Caption:='Verbinden'; end; startbar:=false; end; |
Re: ProgressBar bei Verbinden durchlaufen lassen
während dein Programm verbindet willst du gleichzeitig animiert etwas anzeigen? Arbeitest aber nur mit einem Thread?
|
Re: ProgressBar bei Verbinden durchlaufen lassen
also das sollte sowas wie ne warteanzeige sein: auf der form läuft die Progressbar durch und das Programm verbindet mich. Ist das nicht einfach so möglich ohne einen weiteren Thread zu öffnen? Aber während er verbindet ist doch nicht alles andere blockiert oder?
|
Re: ProgressBar bei Verbinden durchlaufen lassen
Hi,
das geht so nicht! Ich denke mal, dass die Verbindungs-Methoden blockierend sind. Diese solltest du dann in einen eigenen Thread auslagern. Ein Ereignis nach erfolgter Verbindung aus dem Thread heraus kann dann deine Anzeige löschen. Gruß oki |
Re: ProgressBar bei Verbinden durchlaufen lassen
und wie lagert man einen thread aus?
|
Re: ProgressBar bei Verbinden durchlaufen lassen
Das ist ein etwas komplexeres Thema was ohne konkrete Fragestellungen wohl den Rahmen hier sprengen würde.
Ich würde dir empfehlen ersteinmal ein Tutorial zu lesen, z.B. ![]() Also ich sprach hier nur für mich, aber wenn du eine genauere Fragestellung hast, bin ich eher bereit, Sachen zu erklären :wink: Edit: Das Tutorial ist vielleicht doch nicht so passend. Man lernt zwar mehr als in anderen, aber mit den API-Funktionen zu Threads musst du dich eigentlich nicht herumschlagen. Such lieber nochmal selber, die Klasse heißt eben TThread (ist ein Kapitel im Tutorial da), eine wichtige Methode wäre vielleicht noch Synchronize()... |
Re: ProgressBar bei Verbinden durchlaufen lassen
vielen dank erstmal ich glaube wenn das so aufwendig ist lass ich das erstmal lieber sollte ja nur darstellen, das man warten soll ich schreib das jetzt in ein label oder eine statusleiste oder sowas.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz