ich ein Problem bei der Darstellung eines Statusfenster beim Aktivieren von ZConnect zum MSSQL-Server...
Gedacht ist, das ein Fenster mit dem Status "Verbindung wird geöffnet" angzeigt wird, wenn die Verbindung
zum SQLServer aktiviert wird. Das finde ich hilfreich, wenn z.B. der Server nicht erreichbar ist. Im diesem Fall
sieht der User nichts bis zum Timeout mit der Fehlermeldung und kann nicht erkennen, ob das Programm
noch läuft...
Zur Info: Unit2 das Statusfenster, Unit3 das DataModule mit ZConnection.
Wenn "ShowMessage('Pause'); //zum Test, ob Fenster geht" in Quelltest ist wird das Fenster angezeit...
Wenn nicht, ist kein Fenster sichtbar. Erst wenn die Fehlermeldung kommt und "Form2.Close; //nicht vorhanden, wird das Fenster beim Öffnen der Message angezeigt ".
Als ob Form2.Show nicht schnell genug ist und DataModule1.ZConnection1.Connect die Anzeige stoppt.
Auch ein "DataModule1.ZConnection1.Connect" in Form2.OnSchow brachte keine Änderung.
Hat jemand einen Ansatz zur Lösung?
Gruß
Karsten
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
Unit2, Unit3;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.show;
ShowMessage('Pause'); //zum Test, ob Fenster geht
//with DataModule1.ZConnection1 do
begin
if Connected then Disconnect;
HostName := 'Server\SQLEXPRESS';
Database := 'Database';
User := 'User';
Password := 'Password';
Protocol := 'FreeTDS_MsSQL>=2005';
LibraryLocation := 'sybdb.dll';
end;
try
DataModule1.ZConnection1.Connect;
except
on e:exception do
begin
Form2.Close; //nicht vorhanden, wird das Fenster
//beim Öffnen der Message angezeigt
ShowMessage(e.Message);
Application.Terminate;
end;
end;
Form2.Close;
end;
end.