Mettez un TCheckBox à l'intérieur d'un TStringGrid dans Delphi
Je veux mettre un TCheckBox
à l'intérieur d'un TStringGrid
à Delphes dans chaque cellule d'une colonne spécifique. Je suis l'aide de Delphi XE.
source d'informationauteur alexzm1 | 2011-03-14
Vous devez vous connecter pour publier un commentaire.
Vous devez tirer vos propres cases à cocher, de préférence à l'aide de thèmes visuels, s'il est activé. C'est une simple esquisse de la façon de le faire:
Bien sûr, dans un scénario réel, la
Checked
tableau n'est pas une constante, et vous pourriez économiser de l's
métriques eth
thème de la poignée entre la cellule évènements de peinture. Mais le principe est là.http://privat.rejbrand.se/stringcheck1.png
http://privat.rejbrand.se/stringcheck2.png
Ce qui manque ici est une fonction de modifier l'état des cases à cocher. Vous aurez probablement envie de passer à l'état dans un
OnClick
gestionnaire. Si vous êtes vraiment sérieux, vous aurez également souhaitez réagir au mouvement de la souris et de l'affichage au survol de la souris l'effet sur les cases à cocher si les thèmes sont disponibles.ÉDITION par bleuâtre: À bascule case à cocher étatcette réponse explique comment vous pouvez utiliser
Invalidate
méthode.N'essayez pas de placer un
TCheckBox
de contrôle à l'intérieur d'unTStringGrid
. L'utilisation de la grilleOnDrawCell
événement avec l'API Win32DrawFrameControl()
fonction de la place, afin de dessiner une image d'un contrôle de Case à cocher à l'intérieur de chaque cellule en tant que de besoin. Vous pouvez utiliser leOnClick/OnMouse...
événements avec la grille de l'Objects[][]
propriété de garder une trace de chaque cellule de l'état activé en tant que de besoin. Je trouve que c'est beaucoup plus facile à gérer, carTStringGrid
n'a pas été conçu pour accueillir de contrôle.- Je utiliser une grille virtuelle appelée ExGridView par Romain Mochalov, qui prend en charge des cases à cocher.
Mon modifiée à la fourche de la GridView, porté pour l'Unicode, etc, nommé TExGridView, au lieu de TGridView, et avec une démo de cases à cocher est sur bitbucket ici comme /wpostma/exgridview.
La ExGridView composant a une Case à cocher de la propriété dans l'inspecteur des propriétés qui doit être défini à true, Alors vous devez configurer votre les propriétés de la Colonne, de sorte que la Colonne a une case à cocher le type d'ensemble de case à cocher ou un bouton radio. Ensuite, vous devez mettre en œuvre la GetCheckState de rappel d'événement. Voir la démo incluse sur le bitbucket projet.
La source d'origine de ce code a été ici mais il n'est pas constructible sur les versions récentes. Mon bitbucket version est testée et fonctionne avec Delphi 2007, 2009, et toutes les versions jusqu'à la date à compter de 2016 (Delphi 10 Seattle).