Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Delphi] procedura in un evento

    durante la creazione di un oggetto vorrei assegnargli all'evento OnClick (o a qualsiasi altro) una procedura da me creata.... come posso fare?

    il codice usate per la creazione dell'oggetto è questo:
    var
    NT:TToolButton;
    begin
    NT:=TToolButton.Create(Self);
    NT.Caption:='ciao';
    NT. ecc... ecc...
    end;


    un esempio di procedura potrebbe essere questo:
    procedure TForm.BtnClick(Sender:TObject);
    begin
    ShowMessage('...');
    end;


    ringrazio anticipatamente...
    ciao,
    Nicola.
    I DON'T WANT TO HATE, I JUST WANT TO GROW! WHY CAN'T I LET ME LIVE AND BE FREE?BUT I DIE VERY SLOWLY ALONE.

  2. #2
    Cioè vuoi che vengano eseguiti due processi contemporaneamente?

  3. #3
    voglio che all'evento onclick gli si assegni una procedura creata da me...
    non so se poi verranno eseguiti due processi...
    I DON'T WANT TO HATE, I JUST WANT TO GROW! WHY CAN'T I LET ME LIVE AND BE FREE?BUT I DIE VERY SLOWLY ALONE.

  4. #4
    Quindi mentre il controllo si sta creando (in TForm.ControlCreate( Self) ) vuoi che venga eseguita la procedure TForm.ControlClick() ? Basta richiamare la stessa in questo modo

    ControlClick( Self ) ;

  5. #5
    scusami... sono io che mi sto spiegando male..
    quello che hai detto tu l'ho capito... ma io non volevo quello...
    provo a rispiegarlo e ad essere più chiaro...

    devo creare una serie di oggetti del tipo TMenuItem (quel "TToolButton" di prima era un esempio) e, durante la sua creazione, ad ogni oggetto vorrei assegnare una procedura da me creata al proprio evento OnClick.
    se, ad esempio, creata la procedura con nome Proc1 la potessi assegnae in questo modo NI.OnClick=Proc1 (dove NI è l'oggetto da me creato di tipo TMenuItem) io sarei apposto...

    mi sa che ho confuso le vostre idee molto più di prima... mi scuso ma non so proprio come esprimermi.

    grazie ancora e scusatemi.
    I DON'T WANT TO HATE, I JUST WANT TO GROW! WHY CAN'T I LET ME LIVE AND BE FREE?BUT I DIE VERY SLOWLY ALONE.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Assegnazione routine di evento a runtime

    E' possibile assegnare un gestore di evento ad un controllo creato a runtime. Per farlo, devi creare un metodo che sia compatibile con il prototipo di procedura che si aspetta l'evento.

    Nel caso dell'evento OnClick del TButton, il metodo ha questa forma:
    codice:
    procedure TMiaClasse.ButtonClick(Sender: TObject);
    begin
    
    end;
    Attenzione! Deve trattarsi di un metodo e non di una procedura statica. Aggiungi un metodo alla classe del form che conterrà il tuo pulsante e assegna l'evento a runtime in questo modo.

    codice:
    procedure TForm1.CreaPulsante;
    var
      MyButton: TButton;
    begin
      MyButton := TButton.Create(Self);
      MyButton.Parent := Self;
      MyButton.OnClick := ButtonClick;
    end;
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    grazie alka... ma provando e riprovando ero riuscito a farlo funzionare da solo, ma, indaffarato com'ero, non ho potuto neanche segnalarlo sul forum.
    il problema era che io assegnavo all'evento non solamente il nome della procedura (ad es. BtnClick) ma specificavo anche i parametri passando il Self come oggetto di tipo TObject (in poche parole passavo all'OnClick BtnClick(Self))...
    grazie lo stesso...
    e scusami se t'ho fatto perdere un po' di tempo...

    ciao,
    Nicola.
    I DON'T WANT TO HATE, I JUST WANT TO GROW! WHY CAN'T I LET ME LIVE AND BE FREE?BUT I DIE VERY SLOWLY ALONE.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.