sisi231
Messages postés207Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention29 mars 2013
-
8 mai 2006 à 09:39
sisi231
Messages postés207Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention29 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.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 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;