Ho creato un programma che, partendo da due variabili (x e y) trovava il valore di un terzo elemento (z) per ciascuna combinazione di x e y.
Premendo un bottone compaiono tutti i risultati in diverse righe nella TextArea.
Ora per vorrei poter filtrare i risultati, quindi per esempio mostrare i soli risultati (righe x y z) tali che (z/y+x)/(x-z) < valore di un TextField (es. 2).
Come potrei fare?
Grazie
una soluzione generale potrebbe aggiungere alla funzione di calcolo un parametro che indica un delegate che rappresenta la funzione di filtro
ad esempio crea un delegate funzioneFiltro(x as integer, y as integer, z as integer) as boolean
poi crea una funzione
function MostraTutti(x as integer, y as integer, z as integer) as boolean
return true
end function
function FiltraPerValore(x as integer, y as integer, z as integer) as boolean
dim v as integer=Interger.FromText(TextField2.text.toText)
if (z/y+x)/(x-z)<v then return true
end function
Modifica la tua funzione di calcolo in modo che abbia il parametro filtra as funzioneFiltro=nil
e come prima riga:
if funzioneFiltro=nil then funzioneFiltro=weakAddressOf mostraTutti
In questo modo se non passi il filtro ottieni tutti i risultati
poi al momento in cui “stampi” i risultati
if funzioneFiltro.invoke(x, y, z) then stampa(x, y,z) //dove stampa il tuo codice per stampare i risultati
In questo modo puoi utilizzare tutte le funzioni di filtro che vuoi