Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Est-il possible de faire une selection multiple dans une datawindow et si oui, comment ?
Dernière modification par Mr Pink Eyes (11-07-2007 14:06:22)
Hors ligne
oui c'est possible.
je pense que c'est à toi de le gérer , si dans l'événement clicked tu codes ça :
this.SelectRow(row,true)
ça fera que sur chaque ligne que tu cliques sera ajoutée à la sélection
et si tu fais
For li_cpt = 1 to this.rowcount() this.SelectRow(row,False) next this.SelectRow(row,true)
ça va d'abord déselectionner toutes les lignes puis ne sélectionner que celle sur laquelle tu viens de cliquer.
Après à toi de raffiner le comportement selon qu'on maintient la touche Control enfoncée avant de cliquer ou pas par exemple.
Dernière modification par rincevent (11-07-2007 13:33:55)
Hors ligne
Merci beaucoup !
Hors ligne
Mr Pink Eyes a écrit:
Merci beaucoup !
je ne te remercie pas...de m'avoir battu au plongeon...
Hors ligne
pick ouic a écrit:
Mr Pink Eyes a écrit:
Merci beaucoup !
je ne te remercie pas...de m'avoir battu au plongeon...
Et à 30 seconds aussi ;)
Hors ligne
rincevent a écrit:
oui c'est possible...
ça va d'abord déselectionner toutes les lignes puis ne sélectionner que celle sur laquelle tu viens de cliquer
Deux remarques :
1) Je me suis permis de modifier ton message en mettant code=pb en minuscules seul moyen d'activer la coloration syntaxique.
2) Si tu fais :
this.SelecRow(0,False) this.SelecRow(row,true)
C'est pareil mais ça t'évite une boucle
Hors ligne
Okay, c'est bon à savoir! Par contre y a eu une faute de frappe c'est SelectRow mais c'était compréhensible quand même
Hors ligne
shahin a écrit:
1) Je me suis permis de modifier ton message en mettant code=pb en minuscules seul moyen d'activer la coloration syntaxique.
ahhhh voilà ! je me disais bien que c'était pas nickel l'affichage mais je comprenais pas pq, merci de ton intervention (et du conseil pour éviter la boucle aussi)
Hors ligne
si tu veux faire de la multi selection avec les touches Control, KeyShift et les fleches
variable instance : Long ii_lastrow
sur event clicked de la dw
Long ll_begin_block // Début de bloc Long ll_end_block // Fin de bloc Long ll_i // Compteur Boolean lb_memo If row > 0 Then //gestion de la sélection if (row = ii_lastrow) and (not KeyDown (KeyShift!)) and (not KeyDown (KeyControl!)) then lb_memo = This.IsSelected (row) this.SelectRow (0, False) this.SelectRow (row, Not lb_memo) elseif (row = ii_lastrow) then this.SelectRow (row, Not This.IsSelected (row)) end if end if
creer un event ue_selection sur la DW
Long ll_begin_block Long ll_end_block Long ll_i if KeyDown (KeyShift!) then //repérage du bloc de sélection if ii_lastrow > al_row then ll_begin_block = al_row ll_end_block = ii_lastrow else ll_begin_block = ii_lastrow ll_end_block = al_row end if this.SelectRow (0, False) //sélection ou desélection if this.IsSelected (ll_begin_block) and this.IsSelected (ll_end_block) then for ll_i = ll_begin_block to ll_end_block this.SelectRow (ll_i, False) next else for ll_i = ll_begin_block to ll_end_block this.SelectRow (ll_i, True) next end if elseif KeyDown (KeyControl!) then if this.IsSelected (al_row) then this.SelectRow (al_row, False) else this.SelectRow (al_row, True) end if else IF al_row > 0 and al_row <= this.rowcount() and & Not KeyDown(KeyUpArrow!) and Not KeyDown(KeyDownArrow!) Then this.SelectRow (0, False) this.SelectRow (al_row, True) End IF end if ii_LastRow = al_row
sur event rowfocuschanged de la dw
this.Post Event ue_selection (CurrentRow)
Hors ligne
Merci! Je m'en suis inspiré pour créer une selection multiple juste via le ctrl + click :
if not(keydown(KeyControl!)) then this.SelectRow(0,false) end if this.SelectRow(row,not(this.isSelected(row)))
Hors ligne