Ver Mensaje Individual
  #3  
Antiguo 23-08-2010
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
Hola, creo que el error lo tienes por definicion de tipos. Antes que nada, lo que estas comentando con los eventos es posible porque son procedures, no estoy seguro si lo que te pondre va tambien con funciones, si eso lo pruebas

Código Delphi [-]

type TMiTipoDeFuncion = function (Sender : TObject) : boolean of object

...

function TForm1.F1(Sender : TObject): boolean;
begin
...
end;

function TForm1.F2(Sender : TObject) : boolean;
begin
...
end;

var
  MiFuncion : TMiTipoDeFuncion;
begin
case Switch of 
1 : MiFuncion := F1;
2 : MiFuncion := F2;
...
end;

if MiFuncion(Argumento) = true then ...

Algo asi. No se si funcionaria porque creo que los punteros a funciones, no a procedures, se aplican tal como te dice Lord Delfos. De todas maneras, este codigo siguiente si que te funcionaria :

Código Delphi [-]

type TMiProcedureBoolean : procedure (Sender : TObject; var b : boolean) of object;

...

procedure TForm1.P1(sender : TObject;var b : boolean);
begin
...
   b := resultado
end;

...

var
   MiProcedure : TMiProcedureBoolean;
   Resultado : boolean;
begin

case Switch of 
1 : MiProcedure := P1;
2 : MiProcedure := P2;
...
end;

MiProcedure(self,Resultado);

if Resultado then ...

Espero te sirva de ayuda. Un saludo.
Responder Con Cita