Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    1

    puntatori a funzioni

    Salve,

    ho un combobox che espone una serie di voci (ricavate da una proprietà di un array di una classe), ciascuna delle quali, quando cliccata, deve richiamare una funzione diversa.
    Di sicuro, potrei utilizzare una struttura select case end, di fatto abbinando a ciascun item del combobox la relativa funzione: ma la soluzione mi pare assai poco elegante: ad es.

    Select case Combo.SelectedIndex

    case 0
    fx1()

    case 1
    fx2()
    end select

    Vorrei, piuttosto, prevedere, nella classe di cui espongo i valori della proprietà tramite il combobox, un'altra proprietà che abbia, in definitiva, come parametro, un puntatore a funzione e che mi consenta di risolvere il problema con una sintassi del tipo:


    MyClass(Combo.SelectedIndex).Invoke

    Il concetto mi sembra avere a che fare con i delegate, ma, in definitiva, non so che pesci prendere.
    Qualcuno mi può dare una mano?
    Grazie.
    F.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Questo è uno dei casi in cui la programmazione ad oggetti (OOP) torna utile: sarebbe sufficiente usare una classe base con un metodo "virtuale" e definire nell'evento una variabile appartenente a questo tipo; successivamente, si possono creare classi discendenti che ridefiniscono (override) questo metodo implementando nel modo specifico la funzionalità richiesta; nel Select Case potresti semplicemente creare la classe specifica in base all'elemento della casella, assegnare il riferimento alla variabile del tipo generico e invocare, alla fine, il metodo.

    Ovviamente, i benefici di una simile implementazione, a livello teorico, si hanno solo nel caso in cui il codice sia corposo e complesso.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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.