Delphi: FireDac Connection блокирует приложение

Я работаю над приложением с формой входа при запуске.

Пока пользователь не пишет данные для входа в систему, я хотел бы незаметно подключиться к серверу SQL.

Проблема заключается в том, что, когда у меня медленное соединение или неправильный путь к серверу, приложение ищет сервер или пытается подключиться, и в это время приложение не отвечает.

Для подключения я использую эту процедуру:

//-- SQL connect --//
procedure TSql.Connect;
var
  DriverId: String;
  i: Byte;
begin
  try
    Screen.Cursor:=crAppStart;

    //connection DriverName
    DriverId:=Server[FServerType].DriverId;
    FConnection.DriverName:=DriverId;

    //connection Params
    FConnection.Params.Clear;
    FConnection.Params.Add('DriverID='+DriverId); //mandatory
    if FConnString.Count>0 then
       for i := 0 to FConnString.Count-1 do FConnection.Params.Add(FConnString.Strings[i]);

    try
      FConnection.Open;
      FQuery.Connection:=FConnection;
    except
      on E : Exception do ShowError(_('Connection could not be established!'),E);
    end;
  finally
    Screen.Cursor:=crdefault;
  end;
end;

Пожалуйста, помогите мне с некоторым предложением о том, как это можно сделать. Я читал о темах и Application.ProcessMessages но мне не удалось заставить его работать гладко.

1 ответ

Решение

Создайте новую тему и сделайте для нее все, что нужно, чтобы основная форма не зависала, а пользователь не увидит ничего, что вы могли бы увидеть в этой игре.

Другие вопросы по тегам