OVH Cloud OVH Cloud

Intégrer des cases à cocher dans une DataGrid

7 réponses
Avatar
Antoine Dinimant
Bonjour à tous !

J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.

Les colonnes d'une DataGrid peuvent être réglées sur un format "case à
cocher", mais cela ne change en fait pas grand-chose (le True est
réprésenté par un 1 au lieu d'un -1). Par ailleurs, les colonnes ont une
propriété Button, qui fait apparaître un bouton de liste déroulante
(liste vide, hélas). A ce bouton correspond un événement
DataGrid1_ButtonClick, mais la MSDN est assez laconique à ce sujet :
"cet événement vous permet d'écrire le code permettant de dérouler les
contrôles associés comme case à cocher, liste déroulante, etc."

Quelqu'un a-t-il déjà fait cela ? Auriez-vous quelques explications ou
des exemples ?

7 réponses

Avatar
Bismark Prods
il y a là un exemple en VB.net ! et d'autres mais pas de VB6 car il faut
dériver le style de la colonne et cela n'est pas possible en VB6 je crois.

http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q480q


"Antoine Dinimant" a écrit dans le message de
news:
Bonjour à tous !

J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.

Les colonnes d'une DataGrid peuvent être réglées sur un format "case à
cocher", mais cela ne change en fait pas grand-chose (le True est
réprésenté par un 1 au lieu d'un -1). Par ailleurs, les colonnes ont une
propriété Button, qui fait apparaître un bouton de liste déroulante
(liste vide, hélas). A ce bouton correspond un événement
DataGrid1_ButtonClick, mais la MSDN est assez laconique à ce sujet :
"cet événement vous permet d'écrire le code permettant de dérouler les
contrôles associés comme case à cocher, liste déroulante, etc."

Quelqu'un a-t-il déjà fait cela ? Auriez-vous quelques explications ou
des exemples ?



Avatar
Pierre Alexis [MVP]
Salut Antoine,

Tu as écrit :

J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.



Voilà ce que j'avais écrit il y'a quelques temps à ce propos :

Le DataGrid ne permettant d'afficher des cases à cocher, une solution est
d'employer un MSFlexGrid. Attention ce contrôle ne permet pas non plus
d'afficher des cases à cocher. Par contre on peut spécifier une police
différente pour chaque cellulle. Sachant cela, il suffit d'employer la
police "Marlett" pour les cellules
concernées et ensuite de mettre comme valeur "a". Cela aura pour effet
d'afficher une case à cocher.

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Antoun
merci !

btw

Pierre Alexis [MVP] a écrit:
Salut Antoine,

Tu as écrit :


J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.




Voilà ce que j'avais écrit il y'a quelques temps à ce propos :

Le DataGrid ne permettant d'afficher des cases à cocher, une solution est
d'employer un MSFlexGrid. Attention ce contrôle ne permet pas non plus
d'afficher des cases à cocher. Par contre on peut spécifier une police
différente pour chaque cellulle. Sachant cela, il suffit d'employer la
police "Marlett" pour les cellules
concernées et ensuite de mettre comme valeur "a". Cela aura pour effet
d'afficher une case à cocher.



Avatar
Antoun
merci beaucoup !

btw, aurais-tu des astuces pour calculer le .top d'un contrôle à
positionner par dessus une ligne spécifique de la DataGrid (ou d'une
FlexGrid) ? en théorie, ça devrait être simple, mais en pratique j'ai
toujours un décalage dû à

- la ligne de titre, qui est légèrement moins haute que le .RowHeight
des autres lignes

- l'épaisseur des RowDivider, que je ne connais pas...

Pierre Alexis [MVP] a écrit:
Salut Antoine,

Tu as écrit :


J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.




Voilà ce que j'avais écrit il y'a quelques temps à ce propos :

Le DataGrid ne permettant d'afficher des cases à cocher, une solution est
d'employer un MSFlexGrid. Attention ce contrôle ne permet pas non plus
d'afficher des cases à cocher. Par contre on peut spécifier une police
différente pour chaque cellulle. Sachant cela, il suffit d'employer la
police "Marlett" pour les cellules
concernées et ensuite de mettre comme valeur "a". Cela aura pour effet
d'afficher une case à cocher.



Avatar
Bismark Prods
astucieux ! ne crois tu pas qu'il doit etre possible de sous-classer le
datagrid pour y implémenter une case a cocher comme c'est possible en .net ?

"Pierre Alexis [MVP]" a écrit dans le message de
news:
Salut Antoine,

Tu as écrit :

> J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
> consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
> colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
> les proposer à la saisie sous forme de case à cocher.

Voilà ce que j'avais écrit il y'a quelques temps à ce propos :

Le DataGrid ne permettant d'afficher des cases à cocher, une solution est
d'employer un MSFlexGrid. Attention ce contrôle ne permet pas non plus
d'afficher des cases à cocher. Par contre on peut spécifier une police
différente pour chaque cellulle. Sachant cela, il suffit d'employer la
police "Marlett" pour les cellules
concernées et ensuite de mettre comme valeur "a". Cela aura pour effet
d'afficher une case à cocher.

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/




Avatar
Pierre Alexis [MVP]
Salut Simon,

Tu as écrit :

astucieux ! ne crois tu pas qu'il doit etre possible de sous-classer le
datagrid pour y implémenter une case a cocher comme c'est possible en .net ?



Peut-être, mais en .Net c'est beaucoup plus facile.... VB classique ne
permettant pas de dériver des contrôles...

Au fait peut-être psa aussi astucieux que cela, car un peu bricolage... Cette
police marlette n'étant pas présente sur tous les systèmes, il ne faudra pas
oublier de l'installer... A déconseiller je pense...

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Pierre Alexis [MVP]
Salut Antoine,

Tu as écrit :

J'ai une BDD avec un client VB6. Sur l'un des formulaires, la
consultation et la saisie se font par une DataGrid. Mais comme j'ai 7
colonnes qui sont des champs booléens, j'aimerai pouvoir les afficher et
les proposer à la saisie sous forme de case à cocher.



Sinon tu peux aussi t'inspirer de la méthode employée dans cette fiche pour
placer un checkbox sur une cellule :

HOWTO: Edit and Tab with the MSFlexGrid Control
http://support.microsoft.com/default.aspx?scid=KB;en-us;q241355

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/