AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi SpeedButton verschwindet bei Datenbank-Connect
Thema durchsuchen
Ansicht
Themen-Optionen

SpeedButton verschwindet bei Datenbank-Connect

Ein Thema von Gambit · begonnen am 3. Jun 2005 · letzter Beitrag vom 3. Jun 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

SpeedButton verschwindet bei Datenbank-Connect

  Alt 3. Jun 2005, 14:11
Hi,

ich habe auf meiner Form einen SpeedButton gelegt. Bei OnClick soll eine Connection zu einem Datenbankserver übers Internet aufgebaut werden.
Obwohl ich das Verbinden zur Datenbank in einem Thread laufen lasse, verschwindet der SpeedButton bis der Thread beendet ist.
Wie kommt denn das?

Gruß

Gambit

PS: Das Verschwinden des SpeedButtons ist analog des Verhaltens eines normalen Buttons der erst zurückspringt, wenn der Thread beendet ist bzw die Datenbankverbindung aufgebaut ist...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: SpeedButton verschwindet bei Datenbank-Connect

  Alt 3. Jun 2005, 14:52
Bist du sicher, dass der Codein einem eigenen Thread ausgeführt wird, und nicht im Mainthread?

Zeig' mal den Code vom Buttonclick ...

  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: SpeedButton verschwindet bei Datenbank-Connect

  Alt 3. Jun 2005, 15:04
ich habe mal die entscheidende Routine aus der OnClick-Methode rauskopiert:

Delphi-Quellcode:
MDBCon:= TConnectThread.Create(false, DB_DataModul.ZConDBMaster, ini.MDBName,
                                     INetHostAdress, ini.IniUserName, ini.IniUserPass,
                                     ConPort);
MDBCon.WaitFor;
dann der Thread:

Delphi-Quellcode:
constructor TConnectThread.create(CreateSuspended: boolean; Connection: TZConnection;
                                  DBName, Host, User, Pass: String; ConPort: Integer;
                                  const Protocol: String = 'mysql-4.0');
begin
  inherited create(CreateSuspended);
  //Priority:= tpIdle;
  freeOnTerminate:= false;
  fErrCode:= -1;
  fCon:= Connection;

  fCon.Database:=DBName;
  fCon.HostName:= Host;
  fCon.User:= User;
  fCon.Password:= Pass;
  fCon.Port:= ConPort;
  fCon.Protocol:= Protocol;
end;

procedure TConnectThread.Execute;
begin
  {Try
    fCon.Connected:= true;
    fErrCode:= 0;
  except
    fErrCode:= 1;
  end; }


  Synchronize(Connect);
end;
anfangs hatte ich es ohne Synchronisation probiert, da keine VCL-Komponenten in der Execute-Methode angesprochen werden. Die Synchronisation hat aber auch nix gebracht...die synchronisierte Connect-Methode enthält also den gleichen Code wie der ausgeklammerte Teil der Execute-Methode. Thread-Priority ändern hat auch nix gebracht...
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#4

Re: SpeedButton verschwindet bei Datenbank-Connect

  Alt 3. Jun 2005, 15:24
Es liegt wohl am WaitFor. Aber ohne WaitFor geht es ja nicht, ich muss ja erstmal wissen, ob eine Verbindung aufgebaut werden konnte ehe ich eine Abfrage an die Datenbank schicke...

Edit: Es funzt, wenn ich zwischen dem Konstruktor des Threads und dem WaitFor ein
SpdBtnUpdateMDB.Update; einbaue. Ob das aber so alles der wahre jakob ist, weiß ich nicht...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz