Effacement et TRichEdit

Résolu
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 - 8 mai 2006 à 09:39
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 - 8 mai 2006 à 14:38
Bonjour !

J'ai besoin d'aide pour simuler un effacement d'un caractère avant ou après le curseur dans un TRichEdit avec son ReadOnly à True car je veux contrôler tous les faits et gestes de l'utilisateur donc je réécrit l'effacement.

J'ai pensé à envoyer un message WM_CHAR à mon TRichEdit avec le caractère 8 (pour avant) mais rien ne se passe.

Merci de m'aider.

@+

SISI231

3 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
8 mai 2006 à 12:38
Bonjour sisi231,

Voici un moyen d'effacer un caractère avant ou après le curseur.
Il y a peut-être une solution plus "élégante", mais elle marche : sauf pour l'effacement d'une ligne vide (ajouter dans ce cas du code pour supprimer la line).

procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((Key = VK_BACK) and (RichEdit1.SelStart > 0))
or (Key = VK_DELETE) then
begin
with RichEdit1 do
begin
if Key = VK_BACK then
Selstart := SelStart -1; // on part du caractère avant le curseur
SelLength := 1; // on sélectionne ce caractère
end;
if true // tes conditions pour permettre d'effacer
then
begin
RichEdit1.ReadOnly := false;
RichEdit1.SelText := ''; // effacement du caractère
RichEdit1.ReadOnly := true;
Key := 0; //pour supprimer le beep
end;
end;
end;

J'espère avoir pu t'aider.
Thierry
3
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
8 mai 2006 à 13:06
Correction :
pas besoin de mettre ReadOnly := false.
3
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
8 mai 2006 à 14:38
Merci ça marche !
SISI231
0
Rejoignez-nous