Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
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
 



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 09:41:48.


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