Ver Mensaje Individual
  #7  
Antiguo 25-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jars.
Cita:
Empezado por jars Ver Mensaje
...
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
  { Aquí el código de tu funcion para conectar al servidor }

  Result:= Boolean(Random(2)); // (Sólo para el ejemplo)
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
  //... Otras cosas que debas hacer 
  Randomize; // (Sólo para el ejemplo)

  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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita