Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Bien, si es así, podrías mirar de usar un truquillo con el evento OnActivate

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
begin
  // Si las comprovaciones me hacen cerrar el formulario, pos se cierro
  if comprovaciones then
    Close;

  // Sólo quiero que se lance una vez este evento, así que quito el OnActivate
  OnActivate := nil;
end;

A ver ahora que tal
Responder Con Cita
  #2  
Antiguo 11-06-2004
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 24
apicito Va por buen camino
Gracias 1000.
Responder Con Cita
  #3  
Antiguo 11-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Lo mismo pero con interfaces

Wop!

Aunque el truco que te comenta Cadetill funciona a las 100 maravillas, aquí te dejo otra manera de hacerlo. Para mi es mejor, porque se usa un método explícito de la clase en lugar del evento OnActivate. Cuando busques en el proyecto tras dos años, te será mucho más fácil de seguir.
La ides es definir una interfaz que contenga un solo método:
Código Delphi [-]
type IValidaForm = interface
  function Valida: Boolean;
end;

El form que queremos que pueda "autovalidarse" antes de mostrarse, lo declaramos implementando la interfaz:

Código Delphi [-]
type TForm1 = class(TForm, IValidaForm)
...
  public Valida: Boolean;
..
end;

implementation

public TForm1.Valida: Boolean;
begin
  Result := MisCondiciones;
end;

Ahora solo nos queda controlar la validación desde el form "padre":

Código Delphi [-]
procedure TFormPadre.MuestraHijo;
begin
  with TForm1.Create(Self) do
  begin
    try
      if Valida then
        ShowModal;
    finally
      Free;
    end;
  end;
end;

Esto mismo lo podrías hacer sin interfaz, simplemente creando el método Valida en el form. La potencia que te da este mecanismo aparece cuando necesitas que varios forms tengan este comportamiento y no necesariamente tenga que derivar de una misma clase. Puedes crear un procedimiento para crear los forms:
Código Delphi [-]
function CreateValidaForm(FormClass: TFormClass): TForm;
var
  IForm: IValidaForm;
begin
  Result := FormClass.Create(Self);
  if Succeded(Result.QueryInterface(IValidaForm, IForm) and 
   IForm.Valida then
     Result.ShowModal
  else
    FreeAndNil(Result);   
end;
__________________
E pur si muove
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:07:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi