1. Чтобы использовать обработчик события OnConnectionLost, вы должны добавить модуль MemData в раздел uses Вашего модуля.
2. В вашем примере неправильно определен созданный вами обработчик события OnConnectionLost. Вам следует заменить:
Код: Выделить всё
procedure MyDB1ConnectionLost(Sender: TObject);
на:
Код: Выделить всё
procedure MyDB1ConnectionLost(Sender: TObject; Component: TComponent;
ConnLostCause: TConnLostCause; var RetryMode: TRetryMode
);
и соответственно:
Код: Выделить всё
procedure TForm1.MyDB1ConnectionLost(Sender: TObject);
begin
RetryMode = rmReconnectExecute;
end;
на:
Код: Выделить всё
procedure TForm1.MyDB1ConnectionLost(Sender: TObject; Component: TComponent;
ConnLostCause: TConnLostCause; var RetryMode: TRetryMode);
begin
RetryMode = rmReconnectExecute;
end;
3. В процедуре TForm1.FormCreate вам следует присвоить обработчику события OnConnectionLost компонента TMyConnection созданный вами обработчик:
Код: Выделить всё
MyDB1.OnConnectionLost := MyDB1ConnectionLo
st;
Для корректного использования обработчика событий OnConnectionLost Вам следует изменить свой пример следующим образом:
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBAccess, MyAccess, MemDS, MemData;
type
TForm1 = class(TForm)
MyDB1: TMyConnection;
Myq1: TMyQuery;
Myq2: TMyQuery;
Mys1: TMyDataSource;
Mys2: TMyDataSource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure MyDB1ConnectionLost(Sender: TObject; Component: TComponent;
ConnLostCause: TConnLostCause; var RetryMode: TRetryMode);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
//MyDB1.LoginPrompt := False;
MyDB1.OnConnectionLost := MyDB1ConnectionLost;
MyDB1.Options.LocalFailover:=True;
MyDB1.Options.Charset := 'cp1251';
MyDB1.Server := '4.101.152.112';
MyDB1.Port := 3306;
MyDB1.Database := 'v91490ey_video';
MyDB1.Username := 'v91490ey_video';
MyDB1.Password := '455555';
try
MyDB1.Open
except
ShowMessage('Не удалось установить соединение');
Exit;
end;
Myq1.Open;
Myq2.Open;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
MyDB1.Open
end;
procedure TForm1.MyDB1ConnectionLost(Sender: TObject; Component: TComponent;
ConnLostCause: TConnLostCause; var RetryMode: TRetryMode);
begin
RetryMode = rmReconnectExecute;
end;
end.