Naviga: |
Categoria: Tecniche | Ultimo Aggiornamento: 18/05/06 |
Inviato da: PierPaolo Sichera | Visite: 18575 |
Raffaele Furlotti | 25/02/06 00:00:00 |
Credevo che avessi squarciato il velo della verita' sulla deselezione di una riga nelle List Box. Purtroppo non e' cosi'. Infatti, nonostante l'utilizzo del comando come hai indicato, rimane immutata la memoria della riga precedentemente selezionata. A titolo dimostrativo: inserisci il comando di deselezione degli elementi in una ricerca di records passati alla List Box con 'SELECTION TO ARRAY'. Effettua una ricerca per mostrare una selezione di pochi elementi (per es. 3). Seleziona il 3° elemento. Rieffettua un'ulteriore ricerca tendente (in questo caso) a mostrare una selezione di elementi maggiore della prima. La nuova ricerca dovrebbe annullare la memoria dell'elemento precedentemente selezionato. Invece se usi le frecce giù vedrai che il primo elemento selezionato nell'elenco degli elementi della nuova ricerca e' il 4° elemento. E questo avviene anche nel caso contrario ossia quando il numero dell'elemento selezionato nel primo elenco e' maggiore del numero degli elementi della seconda selezione. Devi risalire di tot. elementi prima di rivedere la riga selezionata. | |
Umberto Migliore | 25/02/06 00:00:00 |
Non è che quando ricrei la Selection to array non azzeri il valore dell'array che identifica la riga selezionata? Cioè dovresti scrivere.. ARRAY TEXT(mioArray;0) SELECTION TO ARRAY([Tabella]Campo; mioArray) mioArray:=0 | |
PierPaolo Sichera | 27/02/06 00:00:00 |
Prova questo: 4D 2004: la variabile associata ad una listbox Metti tutti i valori a False. | |
PierPaolo Sichera | 05/03/06 00:00:00 |
La costante "2" per il comando SELECT LISTBOX ROW significa "Remove from listbox selection" (è l'unica costante presente solo sulle listbox e non su 4DView), cioè gli staresti dicendo "rimuovi dalla selezione la riga zero". Penso sia per questo che, non avendo toccato la selezione, quando fai freccia giù ti riparta dall'ultima riga precedentemente selezionata. | |
Alessandro Casassa | 15/05/06 00:00:00 |
Io ho trovato un metodo abbastanza rudimentale per risolvere la problematica che, però, funziona. SELECT LISTBOX ROW(*;"listBox";1;0) SELECT LISTBOX ROW(*;"listBox";1;2) Con la prima Select seleziono solo la riga 1, deselezionando tutte le altre, con la seconda Select deseleziono la prima riga. Ovviamente, come risultato ottengo la deselezione di tutto. | |
Raffaele Furlotti | 17/05/06 00:00:00 |
Ho provato il metodo indicato da Alessandro Casassa ma devo dissentire sul funzionamento di tale metodo. Il risultato che ottengo e' la ripartenza dal secondo elemento dell'array della ListBox. L'unico vero modo per fare resettare l'elemento in memoria alla ListBox riportardolo a 'zero', e' cliccare in una parte priva di elementi della ListBox, oppure riaprendo la finestra e ricreando la ListBox ex novo. Il limite del comando SELECT LISTBOX ROW è che non e possibile dirgli di selezionare l'elemento 'zero' perchè così facendo si crea la selezione di tutti gli elementi. Eseguendo (paradossalmente): SELECT LISTBOX ROW(*;"listBox";0;1) ' fa virare tutti gli elementi a true SELECT LISTBOX ROW(*;"listBox";0;2) ' tutti gli elementi diventano false e la variabile listBox nel TRACE risulta realmente assegnata a zero, però poi al successivo utilizzo della freccia, (per spostarsi nella lista) la selezione riparte sempre dall'ultimo elemento selezionato. | |
PierPaolo Sichera | 18/05/06 00:00:00 |
Nella vita mai dire mai. Una soluzione al tuo problema potrebbe darla la faq sulla selezione circolare. |
Se accedi con utente e password, puoi aggiungere dei commenti.
Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad
Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad