Come da titolo avrei bisogno di generare un evento ogni volta che avviene un cambiamento in una list box, togliendo o aggiungendo un item
purtrobbo la listbox non prevede l'evento change
Come posso fare?
Grazie
ok chiaro
essendo le routine dislocate in diversi punti del programma volevo evitare di scrivere più volte il richiamo alla routine di cambiamento
più che altro per evitare di dimenticare qualche cosa per la strada e non complicare ulteriormente il codice
Grazie per le risposte
puoi usare click o select, cioè quando si clicca o si seleziona un elemento, oppure quando vai a inserire o eliminare un item non fai altro che richiamare l'eventoQuando ho cominciato a scrivere la risposta la tua non era ancora arrivata, però, per quello che ricordo, non credo che gli eventi click e select, possano essere generati automaticamente, potrebbe eventualmente richiamarli con:
le routine dislocate in diversi punti del programmasono tutte dentro la form della ListBox o meno.
INHERITS ListBox
EVENT NewItem
PUBLIC SUB Add(Text AS String, OPTIONAL {Index} AS Integer = -1)
SUPER.Add(Text, Index)
RAISE NewItem
ENDPUBLIC ListBox1 AS CListBox
PUBLIC SUB _new()
ListBox1 = NEW CListBox(ME.Panel1) AS "ListBox1"
END
PUBLIC SUB Form_Open()
END
PUBLIC SUB Annulla_Click()
ME.ListBox1.Add("Ciao")
END
PUBLIC SUB ListBox1_NewItem()
Message("Hai aggiunto un nuovo elemento alla lista!")
ENDINHERITS ListBox
EVENT NewItem @ milio :Codice: [Seleziona]Interessante. Potresti spiegare brevemente il meccanismo INHERITS e se vi siano altri casi pratici in cui convenga usarlo?INHERITS ListBox
EVENT NewItem
Ricordo di avere letto qualcosa su una guida quando ho cominciato ad approcciarmi con Gambas, ma, inutile dirti che non l'ho capito; questa potrebbe essere l'occasione per fare un salto di qualità conoscitiva.
Grazie anticipate. :)
...
da quanto ho capito permette di derivare da una classe esistente una nuova classe nella quale aggiungo metodi o eventi personalizzati
...
:2birre: :2birre:...
da quanto ho capito permette di derivare da una classe esistente una nuova classe nella quale aggiungo metodi o eventi personalizzati
...
;)...è proprio così! Bravissimo!
Come scritto nel wiki, l'uso di INHERIT, ti permette di creare classi simili da un template con funzionalità generiche.A me risulta purtroppo difficile capire il funzionamento dell'insieme 'ingranaggi' del tipo, Classi, Inherit, Template. Per cui per andare avanti più speditamente sarei portato ad inserire nei singoli controlli deviatori logici da interrogare per scoprire la gestione del flusso di programma.
Le classi derivate vengono poi specializzate, inserendogli funzionalità aggiuntive, in aggiunta a quelle ereditate dal template.
Il come usarle poi, è dipendente dalla logica che vuoi applicare, ma è necessario fare bene attenzione, e capire bene al concetto, prima di mettersi a scrivere codice confuso.
... Penso che il tuo bel programmino faccia uso di un db, per cui l'analisi e l'estrazione di dati, con particolari condizioni (vedi totale resta giorno attuale, o giorni precedenti) si possa fare tranquillamente con delle query apposite, che nulla hanno a vedere con il concetto di ereditarietà di classe.Si, certo, ma ciascun controllo della frame dovrà gestire a seconda delle necessità, all'apertura della Form, la digitazione dei componenti della resta di cassa di una giornata precedente a quella corrente ed alla fine, per la quadratura della giornata corrente, i componenti della resta di cassa propri della giornata corrente , quindi la ricerca e l'inserimento nel DB dei dati appartenenti alle stesse tabelle utilizza parametri con contenuti diversi.
Un buon esempio di INHERITS è la classe PDFWRITER , guardatela che è una classe stupenda e vi fa risparmiare molto tempo per le vostre stampeTi sei accorto che nella form allegata recentemente che contiene un pulsante Stampa? :D