Bonjour
Envoyé par
tim501
Le champ est initialisé a Edite1. Clique devant le premier caractère (=position 0) provoque la prise de focus du champ de facto. Et insertion caractère. Donc OnChange devrait être exécuté et le curseur devrait être en position 4 après. Ce qu'il ne fait pas. Il avance d'une position et se met sagement en 1 ce qui est normal si précisément on ne fait rien sur le curseur lui-même.
Le champ est initialisé a Edite1 donc si je comprends bien Edit1.Text ='Edite1'
Je clique devant le premier caractère : '|Edite1'
J'insère un caractère : a
Je vois un résultat correct après insertion : aEdi|te1. J'utilise une form vide avec un TEdit et le code suivant
1 2 3 4 5 6 7 8
| procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:='Edite1';
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
Edit1.SelStart:=4;
end; |
Vous n'avez pas mis d'autres codes qui pourraient avoir priorité sur l'évènement onChange du TEdit ?
Par exemple, si la propriété KeyPreview de votre Form est true alors un code tel que
1 2 3 4
| procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Edit1.SelStart:=0;
end; |
court-circuite (est exécuté après) le onChange de votre TEdit;
Pour les TAB, je n'ai pas rencontré le problème, ce qui ne veut pas dire évidemment qu'il n'existe pas... mais simplement que je ne peux pas vous aider puisque je ne peux pas simuler la panne.
Utilisez-vous une version déclarée "stable" de Lazarus et sous quel OS ? Dans les SVN, il peut y avoir ponctuellement ce genre de "petits" bugs à signaler au bug tracker s'il n'a pas été corrigé dans la dernière release.
Testé sur 0.9.29 [SVN 25959]/FPC 2.4.1-XP
Bonne journée. Cordialement. Gilles
Partager