9
votes

Comment supprimer complètement la barre de sélection d'un contrôle Trichedit?

sur le côté gauche de chaque ligne dans un Trichedit Il y a un espace invisible dans lequel le curseur passe à une flèche de droite et lorsque vous cliquez sur la ligne entière, la ligne est sélectionnée. Il est facile de le voir lorsque l'alignement de texte de Trichedit est centré ou droit. Je crois que cet espace s'appelle une barre de sélection .

Une telle barre n'existe pas dans le contrôle tmemo .

Ma question:

Comment supprimer cette barre de sélection, de sorte que le comportement du curseur soit le même que dans TMEMO ?

J'utilise Delphi 7 et il n'y a pas de propriétés trichedit pour contrôler ce comportement.

Il y a une valeur eco_selectionbar que vous pouvez utiliser avec le message em_setOptions , mais il ajoute ou supprime une petite partie de la barre de sélection (utile que lorsque vous souhaitez ajouter une barre de sélection à un trichedit qui a un alignement gauche).


1 commentaires

+1 bonne question et je ne pense pas que vous ayez un moyen de désactiver ce comportement


3 Réponses :


0
votes

Essayez d'utiliser SETWINDOWOWONG () CODE> Pour supprimer le style de fenêtre ES_SELLECTION CODE> de la fenêtre de richedit, par exemple:

type
  TMyRichEdit = class(TRichEdit)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

Procedure TMyRichEdit.CreateParams(var Params: TCreateParams);
Begin
  inherited;
  Params.Style := Params.Style and not ES_SELECTIONBAR;
End;


1 commentaires

ES_SELLECTION La barre n'est jamais ajoutée aux styles, alors retirez ce qui ne change pas.



0
votes

Il n'y a pas de moyen documenté pour désactiver ce comportement pour le contrôle d'édition riche. Il n'y a pas de styles, de messages ou de fonctions qui offrent un moyen de désactiver ce comportement.

Le style es_selectionbar que vous avez mentionné permet d'ajouter une petite marge lorsque le texte est laissé aligné. Le wrapper Delphi à la commande d'édition riche n'inclut pas le style es_selectionbar de sorte que ce n'est pas comme si vous pouvez le supprimer car il n'est jamais là en premier lieu.

Pour le texte aligné centré et droit, la zone de sélection est toujours présente, quelle que soit la présence ou autrement du style es_selectionbar . En fait, le style es_selectionbar semble ne faire aucune différence au tout au comportement du contrôle du texte aligné centré et droit.

Je pense que si vous inverserez l'ingénieur de la mise en œuvre de cette zone de sélection, vous seriez en mesure de supprimer le comportement en modifiant la procédure de la fenêtre de la commande d'édition riche.


0 commentaires

1
votes

Merci à tout le monde pour vos réponses.

Comme il semble y avoir une manière "appropriée" de le faire, j'ai conçu la solution suivante: xxx

Ce n'est pas élégant du tout, mais cela fait le travail.

Notez que ce code ne permet pas de double-cliquez sur la sélection complète de la ligne et ne gère pas la sélection de texte complète triple-clic. Pour cela, vous devrez probablement utiliser une classe d'intercepteurs par exemple.


0 commentaires