the docs pour instances de Maintenant, je sais comment associer un éditeur avec une cellule: p> et je sais comment associer un éditeur avec une grille entière: p> mais je ne sais pas comment définir un éditeur pour une seule colonne. Cette solution évidente n'est pas une bonne solution: p> car si j'ajoute des lignes à la grille (qui est une opération courante), les nouvelles lignes n'ont pas l'éditeur jusqu'à ce que Je le réglais spécifiquement. P> L'autre solution de contournement évidente consiste à associer une classe d'éditeur générique avec toute la grille et instanciez un éditeur spécifique à une colonne à l'exécution basée sur le numéro de colonne. P> La documentation implique clairement que je ne devrais pas avoir à recourir à la solution de contournement. Mais cela n'offre pas non plus (au moins n'importe où que je puisse trouver) une autre façon de le faire. P> Donc, la question est, comment puis-je définir un éditeur pour une colonne de grille entière? P> p> wx.grid.gridcelleditor code> dire
wx.grid.gridcelleditor code> ... peut être associé aux attributs de cellule pour des cellules individuelles, des lignes, des colonnes ou même pour toute la grille. P>
blockquote>
3 Réponses :
La solution la plus évidente pour cela, un nom de méthode comme "SetDefaultDitoritorColumn", ne semble pas exister. P>
Mais je pense que l'idée de la grille est de spécifier un éditeur pour un type de données plutôt que pour une seule colonne. De cette façon, vous pouvez avoir plus d'une colonne avec le même type de données dans votre grille et utiliser le même éditeur. P>
C'est là que Si vous ne voulez que modifier uniquement l'un des deux, rendez-vous ou éditeur, vous pouvez également appeler grid.registerdaTaType (auto, typename, rendu, éditeur) code> fait son entrée. P>
grid.getdefaulrendererPortype () code> et
grid.getdefauletoritoryype () code> . p>
Est-ce que cela ne fait que déplacer le problème? Je devrais enregistrer des types de données personnalisés, car les colonnes contiennent des chaînes dessinées à partir de différents ensembles. Et il n'ya également aucun moyen évident de définir le type de données d'une colonne, uniquement pour les cellules. Donc, lorsque j'ajoute une ligne, je devrais définir le type de données de chaque cellule ajoutée, qui n'est pas moins de travail que de définir directement l'éditeur.
Jetez un coup d'œil à la méthode de la grille'setColformatCustom', cela peut être ce que vous recherchez.
N'est-ce pas cette fonction effectuée par ce qui suit? : p>
Ces fonctions définissent à la fois l'éditeur et le rendu de la colonne en question. P>
L'approche dans les deux autres réponses consiste à créer un type de données, associez un éditeur avec le type de données, puis associer le type de données avec une colonne. Découplage de l'éditeur du numéro de colonne est une bonne idée si vous avez plusieurs colonnes avec le même type de données, et ces solutions sont donc probablement la meilleure approche générique.
Mais je voulais une approche plus simple qui associe un éditeur avec une colonne spécifique car, dans mon application, chaque colonne est un type de données différent. Partager le type de données entre colonnes n'a aucun sens. Donc, cette réponse est une ajustement plus proche de la question initiale. P>
Tout est tout tourne autour de la classe confusement nommée mais la classe afin de définir un éditeur pour la colonne d'une grille est p> Mais si vous souhaitez définir le même éditeur pour deux colonnes, n'appelez pas wx.grid.gridcellattr code>. Vous pouvez être pardonné pour supposer que l'élément de nom
attr code> signifie essentiellement l'alignement et la couleur, car c'est ce que cela signifie, par exemple,
wx.textattr code>. Et le constructeur le plus clairement documenté de cette classe est
gridcellattr (coltext, colback, police, halign, Valign) code> qui suggère à nouveau que
attr code> concerne l'alignement et la couleur. P >
wx.grid.gridcellattr code> est en fait une classe de descripteur de propriétés de cellule très générique avec plus de 30 méthodes de réglage et d'alignement et de couleur, comme prévu, mais aussi (entre autres) Taille, mode lecture / écriture, rendu et éditeur em>. p>
setingcolattr () code> avec la même instance de
gridcellattr code>, car vous allez faire référence à la référence Comptez les erreurs lors de l'arrêt du programme si vous le faites. Au lieu de cela, faites p>