It is currently 21 April 2025, 14:27 Advanced search

Mantenere la selezione sulla riga selezionata

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Mantenere la selezione sulla riga selezionata

Postby teopost » 27 October 2010, 7:48

In alcuni pannelli capita di avere l'ordinamento delle righe in ordine inverso all'ID o alla data di creazione.
In un pannello che mostra i dati in questo modo, e cioè dai recenti a piu' vecchi, un operazione di refresh fa "slittare" tutte le righe verso il basso.
La riga su cui l'utente aveva la selezione prima del refresh però non "segue" il valore precedentemente visualizzato ma slitta su un nuovo record situato nella medesima posizione di prima.
Questo tipo di funzionamento, in alcuni contesti, crea dei problemi che sono solo, e con artifizi poco eleganti, gestibili da codice.
Per farlo occorre memorizzare l'ID nell'evento On activating row (no nell' On change) e poi su ogni operazione che viene fatta cliccando sui campi delle righe effettuare un controllo per verificare che la riga cliccata sia quella memorizzata.
Sarebbe molto utile poter disporre di una funzione di pannello che consenta di tenere "incollata" la riga selezionata anche se un refresh modifica questi dati.
Per fare un esempio concreto della funzionalità che mi piacerebbe avere, se aprite outlook, selezionate la prima riga della posta in arrivo e poi controllate la mail,
vi accorgerete che la riga selezionata scorre verso il basso e sopra di essa compariranno quelle nuove.

Questa è una proposta già inviata progamma con i seguenti feedback:

Alessandro - 16/07/2010 18:49 - Interesse: Molto alto
Modifica veramente interessante

Giosue Anastasi - 02/09/2010 17:32 - Interesse: Molto alto
Daccordissimo
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Mantenere la selezione sulla riga selezionata

Postby g.lanzi » 27 October 2010, 8:59

È un comportamento interessante, in ogni caso finché non viene implementato si può ottenere con pochi eventi:
1) Nell'evento locale di Load della videata si memorizza in un tag del pannello l'indice del campo di ordinamento
2) Nell'evento di GlobalChangeRow si memorizza il valore del campo della riga corrente (anche svuotando se necessario) in un tag, usando la classe IDPanel
3) Nell'evento di GlobalAfterFind si fa if (Tag[indice del campo]) { pannello.FindRecord(Tag[indice del campo], Tag[valore del campo]) }

A questo punto mi sembra che tutte le schermate si comporteranno come desiderato, solo se è presente il tag[indice del pannello] nella load.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3503
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Mantenere la selezione sulla riga selezionata

Postby teopost » 28 October 2010, 10:38

Quello che dici è vero ma se usi l'RD2 hai dei problemi in piu' che non risolvi con l'implementazione che proponi.
Infatti con RD2 la riga selezionata (quella evidenziata in grigio per intenderci) non sempre coincide con quella su cui hai cliccato col mouse.
In un pannello in lista potresti avere icone cliccabili su righe non selezionate e così pure campi editabili su cui hai cliccato con il mouse.
Come sai con RD2 questa azione non attiva necessariamente il cambio riga.
Last edited by teopost on 2 November 2010, 11:36, edited 1 time in total.
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: Mantenere la selezione sulla riga selezionata

Postby Davide » 2 November 2010, 11:27

concordo, è un comportamento fastidioso che mi ha sempre costretto a lunghe dispute con il cliente.
User avatar
Davide
 
Posts: 89
Joined: 26 October 2010, 9:51

Re: Mantenere la selezione sulla riga selezionata

Postby g.lanzi » 3 November 2010, 9:46

Il framework RD2 è maturo e non abbiamo in previsione l'implementazione di nuove funzionalità. Per agire sul comportamento delle videate o per risolvere i problemi che citi possiamo procedere solo con una richiesta di assistenza.

Per quanto riguarda RD3 per adesso è possibile utilizzare il workaround che ho proposto.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3503
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Mantenere la selezione sulla riga selezionata

Postby lucabaldini » 17 November 2010, 8:15

@Teo per quel che so io in RD2 qualunque operazione fatta su un campo effettua prima un cambio riga. Mi spiego meglio. Se la riga selezionata è la prima ed io clicco su una cella cliccabile della quarta riga, il sistema sente il click ma PRIMA di gestire il click effettua il cambio riga attivando la quarta riga poi notifica il click avviando, per esempio, la procedura associata al campo cliccato. Infatti se all'interno della procedura leggi i dati del recordset del pannello trovi proprio i dati relativi alla riga che hai cliccato. Lo stesso capita se metti il cursore in una cella e premi, per esempio, il bottone ELIMINA. Non viene eliminata la riga su cui ti trovavi ma la riga dove è posizionato il cursore. E l'utente vede la cosa dato che portare il cursore in una qualunque cella fa sì che l'applicazione effettui un cambio riga immediato (sempre che la funzionalità di cambio riga immediato di RD2 non sia stata volutamente spenta).

Con questa premessa non ho ancora capito perché in RD2 non funziona ciò che propone Giuseppe e perché hai problemi in più. Puoi aiutarmi a capire esattamente cosa vorresti ottenere?

Se quel che chiedi è solo che quando l'utente (o il sistema) ricarica i dati in un pannello la riga attiva rimanga quella attiva prima dell'operazione di aggiornamento dei dati (un po' come fa Outlook che quando scarica nuova posta la mette "sopra" la e-mail attiva) dovrebbe essere facile ottenerlo con qualcosa del genere:

Immagine.png
Immagine.png (33.65 KiB) Viewed 7928 times
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 17 guests