11
votes

Mettez une boîte à TCHeck à l'intérieur d'un TstringGrid dans Delphes

Je veux mettre un tcheckbox à l'intérieur d'un tstringgrid dans Delphi dans toutes les cellules de certaines colonnes. J'utilise Delphi Xe.


0 commentaires

3 Réponses :


9
votes

N'essayez pas de placer un TCHeckBox Contrôle à l'intérieur d'un TStringGrid . Utilisez l'événement ONDRAWCELL de la grille avec l'API Win32 Drawframecontrol () Fonction, pour dessiner une image d'une commande de case à cocher à l'intérieur de chaque cellule au besoin. Vous pouvez utiliser le onclick / Onmouse ... événements avec les objets de la grille [] [] [] pour garder une trace de l'état vérifié de chaque cellule au besoin. Je trouve que cela est beaucoup plus facile à gérer, car tstringgrid n'a pas été conçu pour accueillir de vrais contrôles.


0 commentaires

29
votes

Vous devez dessiner vos propres cases à cocher, de préférence à l'aide de thèmes visuels, si activé. C'est un croquis simple de la façon de faire: xxx

bien sûr, dans un scénario réel, le tableau coché n'est pas une constante et que vous pourriez souhaiter Enregistrez le S métrique et h Poignée de thème entre les événements de peinture cellulaire. Mais le principe est ici.

Ce qui manque ici est une fonction pour alter l'état des cases à cocher. Vous voudrez probablement basculer l'état dans un onclick gestionnaire. Si vous êtes vraiment sérieux, vous souhaiterez également répondre au mouvement de la souris et afficher l'effet de la souris sur les cases sur les cases à cocher si des thèmes sont disponibles.

EDIT par Bleuâtre: pour basculer Case à cocher State , Cette réponse explique comment vous pouvez utiliser invalider la méthode .


5 commentaires

Andreas voudriez-vous vous déranger si j'ai emprunté ce code et je l'ai mis dans la grille de chaîne JVCl? Ce serait un bel addition.


@Warren P: N'hésitez pas à utiliser le code comme vous le souhaitez. @Ken: Désolé, je n'ai pas pu résister!


merci, cela fonctionne et il sera bon d'avoir ceci sur la grille JVCl


@Andreasrejbrand Si nous voulons gérer votre propre ONCLICK, cela signifie-t-il que nous voulons répéter cette procédure, ou quoi? Comment pouvons-nous vérifier le statut du thème dessiné? Donnez-moi un indice s'il vous plaît.


@Andreasrejbrand Merci pour cette impressionnante solution. ∞ + 1



3
votes

J'utilise une grille virtuelle appelée ExgramView par Roman Mochalov, qui prend en charge les cases à cocher.

Ma propre fourchette modifiée de GridView, portée pour Unicode, etc., nommée Texgridview, au lieu de TGridView, et avec une démonstration de cases à cocher est sur Bitbucket ICI AS / WPOSTMA / EXGRIDView.

Le composant ExgridView a une propriété Cochez la case dans l'inspecteur de propriétés, qui doit être défini sur TRUE, puis vous devez configurer vos propriétés de colonne afin que la colonne dispose d'un type de case à cocher défini sur la case à cocher ou la touche radio. Ensuite, vous devez mettre en œuvre le rappel d'événement GetCheckstate. Voir la démo incluse sur le projet BitBucket.

La source d'origine pour ce code était ici mais ce n'est pas construire sur des versions récentes. Ma version Bitbucket est testée et travaille avec Delphi 2007, 2009 et toutes les versions à jour à compter de 2016 (Delphi 10 Seattle).

Entrez la description de l'image ici


3 commentaires

Comment puis-je ajouter la case à cocher sur une grille de l'ExgramView de Roman Mochalov ???


@Warrenp je travaille avec le TMS advstringgrid, mais cela prend-il en charge l'état grisé de ses cases à cocher (je ne le pense pas)? Comment puis-je gérer ma coche-case grise? Puis-je la colorer d'une manière ou d'une autre?


Pourquoi ne pas demander à TMS? Ils soutiennent très bien leurs trucs.