It is currently 9 October 2026, 17:33 Advanced search

Gestione di una selezione multipla

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

Gestione di una selezione multipla

Postby r.bennati » 6 September 2013, 17:08

In un pannello db oriented, vorrei gestire una selezione multipla.
Una volta che ci sono delle righe selezionate, metterei un bel pulsante che mi 'scrive' in un'altra tabella, con una insert, gli id delle righe selezionate.

Gli esempi parlano tutti di un ciclo for each, ma la sintassi dell'help è notevolmente diversa da quella dell'attuale versione di inde. NOn riesco a capire come fare....
Questo è l'esempio, ma risulta impossibile da replicare.
// ********************************************************************
// Fired when a user selects a row using the Multiple Selection feature
// ********************************************************************
event Prodotti.Prodotti.OnChangeSelection(
boolean Selected // True if the row has been selected
boolean Final //
inout boolean Cancel // Set to TRUE to cancel the selection
)
{
int i = 1 // Per ciclare sulle righe
int s = 0 // Per sommare le scorte
//
// Al termine del cambio di selezione, posso conteggiare le quantità
if Final
{
// Ciclo su tutti i prodotti e vedo quelli selezionati...
for each row (Prodotti)
{
record Prodotto
...
//
if Prodotti.IsRowSelected(i)
{
s := s + Prodotto.Scorte
}
i := i + ONE
}
Prodotti.LabelTotale.Caption := MSG Scorta Prodotti +c ToString(s)
}
}

User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby a.maioli » 6 September 2013, 17:20

L'esempio è ancora valido. Quale parte risulta impossibile da inserire nel code editor?

Per creare il foreach tieni conto che dopo aver inserito il blocco for each, basta mettere il cursore in fondo alla riga e premere spazio e poi selezionare il pannello.
User avatar
a.maioli
Pro Gamma
Pro Gamma
 
Posts: 1090
Joined: 29 September 2010, 12:47

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 10:53

Si era proprio la for each che non riuscivo a scrivere.
Scrivendo foreach lui appena davo spazio mi impostava:

for each row
select
from

Non avevo capito che dovevo tornare indietro a mettere il cursore fino alla fine della prima riga per ottenere la foreach di pannello e non di tabella.
In effetti non mi è proprio intuitivo l'approccio... sono abituato a scrivere codice procedurale.
Last edited by r.bennati on 9 September 2013, 15:02, edited 1 time in total.
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 14:46

Mi rimane però un problema:

Se non ho capito male, la chiamata con Final = True dovrebbe arrivare quando si seleziona la spunta [√].
Ma quale? Quella di conferma del Pannello in alto, o quella che switcha tra Seleziona Tutto / Selezione niente / Disattiva selezione ?
selezione.jpg
selezione.jpg (57.34 KiB) Viewed 8596 times

Perchè rilevo che nel secondo caso va, mentre nel primo no (non viene rilasciato l'evento con Final = True).
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby g.cassanelli » 9 September 2013, 15:51

Se la form che hai mostrato è chiamata come modale, nell'evento EndModal vedi il risultato Final dato dall'icona della form (quello in alto a SX per intenderci).
Se è chiamata modale e non ritorna nella EndModal il risultato allora c'è qualche cosa che non va.
Nel secondo caso probabilmente va se selezioni tutto, ma non credo sia un caso generalizzato: l'obiettivo è far scegliere.
Informatica ! Meglio lavorare con il granito, è duro, ma è stabile ! - Computer Science ! Better to work with granite, it's hard, but it's stable !

Giuseppe Cassanelli http://www.lab-ud.com
User avatar
g.cassanelli
 
Posts: 2653
Joined: 9 November 2010, 19:00
Location: BOLOGNA

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 16:02

Grazie per la veloce risposta... Sono bloccato.

Avevo compreso che l'evento EndModal scatta nella form 'padre' che apre la form di selezione quando questa viene chiusa, non nella form 'figlia'. E' corretto?
Mi stati dicendo che devo aspettarmi l'evento 'Final =True' della selezione dentro la form padre?

La situazione è questa:
La form Padre mostra dei record.
Un tasto di toolbar apre una form modale chiamala 'Selezione'.
Io lì mi aspetto di selezionare alcuni record.
Nel ciclo foreach di un evento "OnChangeSelection" appendo in una IMDB tutti gli id dei rek selezionati.
Nell'evento endmodal della form Padre, se arriva dalla Selezione di cui prima, faccio una insert di quei record in una tabella.
L'evento EndModal, è quello della form Padre, non della form di selezione. E' questo l'errore?

E perchè scatta "OnChangeSelection" con Final=True quando switcho fra Seleziona Tutto / Seleziona Niente / Mostra Selezione ?
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 16:15

No, mi sa che andavo bene, gli eventi sono giusti al loro posto... forse c'è qualcosa che non va nel FW...
Aggiungo altre due info:

1) Se seleziono alcuni record e Blocco / Sblocco i dati, allora la selezione funziona e Final=True lo intercetto correttamente. Edit: Idem se collassi e rieaspandi il pannello
Altrimenti, se non passo per blocca/sblocca, cliccando la spunta la form si chiude senza che accada nulla.

2) Usando il tasto di spunta che Attiva/Disattiva Selezione, Seleziona tutto / niente, rimane il riquadrino orfano a spasso per lo schermo e non si chiude più, anche se chiudi la form.
Accade sia con Chrome che con Firefox.
Last edited by r.bennati on 9 September 2013, 16:28, edited 1 time in total.
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 16:27

Perchè rilevo che nel secondo caso va, mentre nel primo no (non viene rilasciato l'evento con Final = True).


No, dal debug sembra che l'evento con FInal=True vada bene, è lo status di ciascuna riga che non risulta 'selected' finchè non accade qualcosa al pannello.
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Re: Gestione di una selezione multipla

Postby g.cassanelli » 9 September 2013, 17:30

Tutto quello che hai detto nel primo dei tre messaggi è giusto solo che il FINAL dell'evento OnChangeSelection ha un significato ben diverso: ti indica l'ultimo record selezionato nel ciclo di scatti che fa l'evento sull'insieme delle righe selezionate.
Ma direi che, per quello che ho capito, di quell'evento non dovresti avere proprio bisogno.
Informatica ! Meglio lavorare con il granito, è duro, ma è stabile ! - Computer Science ! Better to work with granite, it's hard, but it's stable !

Giuseppe Cassanelli http://www.lab-ud.com
User avatar
g.cassanelli
 
Posts: 2653
Joined: 9 November 2010, 19:00
Location: BOLOGNA

Re: Gestione di una selezione multipla

Postby r.bennati » 9 September 2013, 22:45

Quella if (final) dell'esempio non lascia dubbi, se il debug mi mostra l'esecuzione di righe al suo interno vuol dire che final vale true.
Il problema é che devo stimolare il pannello perché se no non vede le righe selezionate!
User avatar
r.bennati
 
Posts: 487
Joined: 29 April 2013, 12:38
Location: Novi Ligure (AL)

Next

Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: Google [Bot] and 63 guests