Newsgroup: it.comp.lang.delphi
Titolo: Passare una procedure ad una procedure

Salve a tutti, in delphi è possibile passare come parametro ad una procedure
un'altra procedure?
Esempio :
 procedura(Parametro,Nuova_Procedura);
Grazie
Antonio.
-- 
uno standard deve essere standard. windows non e` uno standard, e` solo
un OS molto diffuso.

 Antonio.
Type plio=procedure(x:String);
Var
     aa     : string;
procedure ciao(x:String);
begin
   aa := 'ciao'+x;
end;
procedure Pippo(x:String);
begin
   aa := 'pippo'+x;
end;
procedure calla(x:plio);
begin
  x('11');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  aa := '';
  calla(ciao);
  caption := aa;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  aa := '';
  calla(pippo);
  caption := aa;
end;
per maggiori informazioni richiedi, purtroppo sono di corsa.
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975"


Allora ti spiego meglio il mio problema : Ho un datamodule in cui dichiaro
una procedure che riceve come arametri di ingresso un clientdataset ed una
procedura ,ora da un form devo chiamare la procedure passando appunto i due
parametri di cui sopra.
Spero di aver capito i tuoi esempi ora provo cmq nel caso ti dovesse venire
un'altra idea fammi sapere.
Grazie mille
Antonio.


[...]
aggiungerei solo che nel caso la procedura plio di
callBack sia un metodo di una classe bisogna
dichiararla in questa maniera
Type plio=procedure(x:String) OF OBJECT;
posto dopo i saluti una demo insignificante con cui ho
testato il tutto :)
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/
---------------------------------------------------------------------------
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  CallBackProcedureType = Procedure(CallBackParam: String) Of Object;
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CallBack(CallBackParam: String);
    procedure Esecuzione(EsecuzioneParam: String; CallBackProcedure: CallBackProcedureType);
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
        //Inizia l'esecuzione di una procedura che
        //richiede una procedura di ritorno da chiamare alla fine
        //dell'esecuzione
        Esecuzione('Inizia l''esecuzione',CallBack);
end;
procedure TForm1.CallBack(CallBackParam: String);
begin
        //Verifica la chiamata della procedura di ritorno
        //scrivendo nella label il valore passati
        Label1.Caption := CallBackParam;
end;
procedure TForm1.Esecuzione(EsecuzioneParam: String;
  CallBackProcedure: CallBackProcedureType);
begin
        //Esegue delle operazioni
        Label1.Caption := EsecuzioneParam;
        Label1.Refresh;
        //simula operazioni di lunga durata
        Sleep(2000);
        //chiama la procedura di ritorno passandogli il risultato
        //delle operazioni
        CallBackProcedure('Esecuzione terminata dopo 2 sec.');
end;
end.
-------------------------------------------------------------------------


Grazie mille molto gentile, č proprio quello che mi serviva... !!!
Saluti
Antonio.