Filtrare i risultati

  1. 5 days ago

    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

  2. 3 days ago

    Antonio R

    Nov 13 Pre-Release Testers, Xojo Pro Europe (Italy)

    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

or Sign Up to reply!