bonjours a tous;
comment tester la case a cocher d'une ligne de SMDBGrid ?
bonjours a tous;
comment tester la case a cocher d'une ligne de SMDBGrid ?
la SMDBGrid est un composant non standard et non inclu dans Delphi par défaut, comme c'est une lib externe, il faut tu consultes la documentation !
Sinon, pour un TDBGrid classique, il faut rappeler que tous les données sont contenus dans un TDataSet, il est tout à fait possible de gérer une case à cocher dedans en lui dédiant une colonne boolean et en effectuant le Dessin d'une CheckBox comme dans la FAQ : Comment mettre une case à cocher dans une DBGrid ? ou en utilisant DrawFrameControl
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
bjr ShaiLeTroll;
justement, je n'ai pas trouve la documentation dans le net
la solution propose dans la FAQ ne m'arrange pas parceque je ne cherche pas a ajouter un champ boolean dans la table, je cherche juste a donner la possibilite pour selectionner des lignes pour faire a autre traitement.
S'agit-il de la case à cocher créer par l'option [eoCheckBoxSelect] ?
et de l'option dgMultiSelect.
oui SergioMasterS'agit-il de la case à cocher créer par l'option [eoCheckBoxSelect] ?
et de l'option dgMultiSelect.
la CheckBox dans la zone du Indicator (eoCheckBoxSelect),
c'est SelectedRows du TDBGrid fournissant une Collection de TBookmark !
C'est une fonctionnalité existante du TDBGrid améliorée dans TSMDBGrid :
Comment gérer la sélection multiple sur un DBGrid ?
Profite, tu as le code du TSMDBGrid, lit donc les fonctions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 function TSMDBGrid.ActiveRowSelected: Boolean; procedure TSMDBGrid.ToggleRowSelection;
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Salut,
Pour faire cela voici un exemple
Bye
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // ... if SMDBGrid1.SelectedRows.Count > 0 then begin with SMDBGrid1.DataSource.DataSet do begin for i:=0 to SMDBGrid1.SelectedRows.Count - 1 do begin // on ce place sur la ligne cochée GotoBookmark(Pointer(SMDBGrid1.SelectedRows.Items[i])); // ton traitement end; end; end; // ...
merci bcp mes amis;
BuzzLeclaire, ton code marche parfaitement, c'est ca ce que je cherche.
mais j'ai decouvris une anomalie dans (eoCheckBoxSelect)
pour cocher ou decocher un checkbox la ligne correspondante doit etre selectionne sinon si vous essayez de cocher une ligne non selectionne alors la ligne selectionne qui prends l'effet.
ce que je veux dire c'est
quand tu clique sur n'importe quel checkbox un autre checkbox aura coche (de la ligne selectionne)
C'est probablement le comportement normal de la TSMDBGrid, d'ailleurs, comme je disais, il suffit de lire le code, on voit que c'est bel et bien l'enregistrement en cours qui est ajouté à SelectedRows !
Est-ce un bug ou un manque d'ergonomie ?
Faudrait modifier le code de TSMDBGrid.MouseUp pour qu'il déplace le curseur la ligne du pseudo CheckBox cliqué avant de l'ajouter à SelectedRows via TSMDBGrid.ToggleRowSelection !
Selon si tu maintiens Shift et que dgMultiSelect est dans Options, tu dois avoir un comportement différent ! plus proche de ce que tu souhaite !
Faudrait se diriger vers des composants plus poussés comme TMS ou DevExpress, c'est payant !
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager