Hola jars.
Cita:
Empezado por jars
...
Ecfisa, no importa lo que haga con la verificación, lo que quiero saber es como matar la creación del form, es decir que muestre el mensaje de error y no se muestre el form.
...
|
¡ Pero claro que importa !, si no requiere la intervención de un usuario, no es necesario el uso de un formulario...
Si vas a usar un formulario, coincido con Neftali en que de ese modo no es la mejor opción, pero podrías hacer algo como esto.
Formulario de conexión:
Código Delphi
[-]
...
const
WM_AFTER_CREATE = WM_USER + 301;
type
TfrmConnect = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FModalResult: TModalResult;
procedure WmAfterCreate(var Msg: TMessage); message WM_AFTER_CREATE;
public
end;
var
frmConnect: TfrmConnect;
implementation
function IsServerConnect: Boolean;
begin
Result:= Boolean(Random(2)); end;
procedure TfrmConnect.WmAfterCreate(var Msg: TMessage);
begin
if not IsServerConnect then
FModalResult:= mrCancel
else
FModalResult:= mrOk;
Close;
end;
procedure TfrmConnect.FormCreate(Sender: TObject);
begin
Randomize;
PostMessage(Handle, WM_AFTER_CREATE, 0, 0);
end;
procedure TfrmConnect.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ModalResult:= FModalResult;
end;
Ejemplo de llamada:
Código Delphi
[-]
procedure TfrmMain.ButtonConnect(Sender: TObject);
var
R: TModalResult;
begin
with TfrmConnect.Create(nil) do
try
R:= ShowModal;
finally
Free;
end;
if R = mrCancel then
begin
MessageBox(0,'Conexión fallida','',MB_ICONERROR);
Application.Terminate;
end;
end;
Por supuesto que el formulario de conexión no debera figurar en la lista de auto creación.
Saludos