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.