Je crée mon propre DBGRid et il fonctionne correctement, à l'exception de la liste de sélection. Quel que soit le style de bouton défini pour la grille, il affiche toujours l'éditeur in-situ, ni la liste de sélection ni le bouton ellipse! .Problème de dbgrid et de liste de sélection personnalisé
je ne peux pas l'erreur que je fais ici :(est le code correspondant:
function TMyDBGrid.CreateEditor: TInplaceEdit;
begin
result:=TInplaceEdit.Create(self);
end;
function TMyDBGrid.GetEditStyle(ACol, ARow: integer): TEditStyle;
begin
case Columns[ACol].ButtonStyle of
cbsAuto : Result:=esPickList;
cbsNone : result:=esSimple;
cbsEllipsis : result:=esEllipsis;
end;
end;
Et le constructeur et destructor il suffit d'appeler hérité, avec le constructeur réglage que quelques couleurs pour la grille.
mais il y a un problème: j'ai essayé d'utiliser TDBGridInplaceEdit, mais il est déclaré dans la partie implémentation de l'unité DBgrids. est-il possible de l'utiliser en plus de modifier la source Delphi? – DrWael
@DrW - C'est en effet un problème. Vous pouvez essayer de dériver votre éditeur inplace à partir de TInplaceEditList, qui est plus proche du TGridInplaceEdit, et d'ajouter la fonctionnalité manquante en regardant la source VCL pour TGridInplaceEdit. Mais je ne suis pas sûr que ça marchera non plus, il y a des hard-casts dans la source dbgrid qui transforment l'éditeur en un TGridInplaceEdit. –
Pensez à poser une question sur le problème que vous tentez de résoudre. Il peut y avoir d'autres façons de remplacer l'éditeur. –