Est-il possible d'enlever le curseur d'attente de frappe (je ne sais plus comment ça s'appelle) dans un TEdit autrement qu'avec un enable=false
Est-il possible d'enlever le curseur d'attente de frappe (je ne sais plus comment ça s'appelle) dans un TEdit autrement qu'avec un enable=false
Y'a pas moyen en jouant sur la valeur cursor du contrôle? (Placer la valeur crArrow à la place de crDefault)??
Sur une nouvelle fiche, ajoute un TEdit...
et ensuite, voici le code :
Fortement inspiré de la solution de Zarko Gajic.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 unit Unit1; interface uses Windows, Classes, Controls, StdCtrls, Forms, Messages; const WM_MYEDIT_ENTER = WM_USER + 1; type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Enter(Sender: TObject); procedure Edit1Exit(Sender: TObject); procedure Edit1Change(Sender: TObject); private public procedure WMMyEditEnter(var Message: TMessage); message WM_MYEDIT_ENTER; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMMyEditEnter(var Message: TMessage) ; begin CreateCaret(Edit1.Handle,0,0,0) ; end; procedure TForm1.Edit1Enter(Sender: TObject) ; begin PostMessage(Handle, WM_MYEDIT_ENTER, 0, 0) ; end; procedure TForm1.Edit1Exit(Sender: TObject) ; begin CreateCaret(Edit1.handle,1,1,1) ; end; procedure TForm1.Edit1Change(Sender: TObject) ; begin CreateCaret(Edit1.handle,0,0,0) ; end; end.
Une autre solution
Ce qu'il y a à retenir c'est que le message est à envoyer à la fiche.
Fortement inspiré de la solution de Whiler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const WM_MYEDIT_ENTER = WM_USER + 1; type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Enter(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Edit1Exit(Sender: TObject); public procedure WMMyEditEnter(var Message: TMessage); message WM_MYEDIT_ENTER; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMMyEditEnter(var Message: TMessage) ; begin HideCaret(Edit1.Handle); end; procedure TForm1.Edit1Enter(Sender: TObject) ; begin PostMessage(Handle, WM_MYEDIT_ENTER, 0, 0) ; end; procedure TForm1.Edit1Exit(Sender: TObject) ; begin // ShowCaret(Edit1.Handle); end; procedure TForm1.Edit1Change(Sender: TObject) ; begin HideCaret(Edit1.Handle); end; end.![]()
Envoyé par Fabrice ROUXEL 1
j'adore le bleu souligné
![]()
Variantes beaucoup plus simples pour enlever temporairement le curseur d'attente de frappe (le caret) d'un TEdit.
Si c'est pour empêcher la frappe : en basculant monEdit1.enabled à false tant que la frappe doit être empêchée ... et si le clignotement du caret gène, le faire disparaître simultanément en envoyant le focus ailleurs ... puis de re-basculer à l'inverse à partir du moment où la frappe est ré-autorisée.
(Je ne verrais pas l'intérêt d'enlever le caret sans neutraliser l'effet d'une frappe et la présence d'un caret dans un Edit neutralisé n'est pas une réelle gêne).
Partager