Bonjour.
Je voudrais mettre un texte dans un TEdit, comme dans le code HTML suivant :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" placeholder="entrer le prenom" name="prenom">
Merci d'avance.
Bonjour.
Je voudrais mettre un texte dans un TEdit, comme dans le code HTML suivant :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" placeholder="entrer le prenom" name="prenom">
Merci d'avance.
Bonjour,
Tu peux utiliser le composant TButtonedEdit (dans la rubrique standard). Il dispose de la propriété Text qui correspond au texte saisit par l'utilisateur, et de la propriété TextHint qui est le texte affiché dans le TButtonedEdit lorsque celui est vide.
merci pour votre reponse mais ;
le textEdit mettre un texte dans le Edit et apres que tu veux faire une connexion a la base de donnee et tu click sur button de recupperation du ce champs ,si tu ne cencentre bien tu laisse ce champs avec la valeur initiale qui se strouve dans textEdit;
merci d'avance.
Bonjour,
Quelle version de Delphi ? Quel type de programme VCL ou FMX ?
Désolé mais je ne comprends pas...
Le TButtonedEdit permet justement d'avoir également des boutons (à droite ou à gauche du champ Edit) qui permettent d’enclencher des actions (exécution d'une requête SQL par exemple). Si la requête ne renvoie rien, la zone d'édition est vide et du coup la valeur de TextHint sera affichée dans le champ Edit.
Je ne pense pas que le TButtonedEdit était présent dans cette version de Delphi...
Bonjour,
En D7, je pense qu'il faut le faire "à la main" :
- au départ, mettre le texte "Entrer votre prénom" dans le Text du TEdit avec une font en gris
- dans le onEnter du TEdit : Effacer le texte, mettre la Font en normal et attendre la frappe de l'utilisateur
A+
Charly
PS : Je n'ai pas testé si cela fonctionne bien
Bonjour,
pour D7 c'est simple:
sur une Fiche déposez un TXPManifest (indispensable) un TButton
et un TEdit et complétez comme suit:je précise que ce texte se voit que si le TEdit est vide (Text := '') et que le TEdit n'ait pas le Focus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const EM_SETCUEBANNER = $1501; EM_GETCUEBANNER = $1502; procedure TForm1.Button1Click(Sender: TObject); var Value: WideString; begin Value := 'Entrez votre Texte ici'; SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, LPARAM(PWideChar(Value))); end;
pour que Cue Banner s'affiche aussi quand l'Edit à le focus:Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part SendMessage(Edit1.Handle, EM_SETCUEBANNER, 1, LPARAM(PWideChar(Value)));
@+
Bonjour Cirec,
je pense que ce n'est pas tout à fait ce qu'il veut ? Avec PlaceHolder, le texte "Entrer votre texte ici" est dans le TEdit en grisé. Quand l'utilisateur entre une valeur le texte grisé s'efface et la texte entré prend sa place.
A+
Charly
je ne connais pas le fonctionnement du PlaceHolder mais ce que tu me décris c'est ce que ma méthode fait !
au passage la méthode que j'emploie ne fait qu'utiliser une fonction prévue par Windows depuis XP
ici c'est nommé Cue Banner et d'après une rapide recherche :
PlaceHolder == Cue Banner
Donc c'est exactement le comportement attendu
Fait le teste (je suppose que tu ne l'as pas fait vu le commentaire )
Cordialement,
@+
Oui tu as raison c'est bien le fonctionnement de PlaceHolder.
Ce qui m'a trompé c'est le Button1. J'ai fait tout mis dans OnShow :
et ça marche parfaitement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const EM_SETCUEBANNER = $1501; EM_GETCUEBANNER = $1502; procedure TForm1.FormShow(Sender: TObject); var Value: WideString; begin Value := 'Entrez votre Texte ici'; SendMessage(Edit1.Handle, EM_SETCUEBANNER, 1, LPARAM(PWideChar(Value))); end;
A+
Charly
c'est bien ce que je me disaisEnvoyé par Charly910
voici une autre version plus "souple" & plus réutilisable
Cordialement,
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 const EM_SETCUEBANNER = $1501; EM_GETCUEBANNER = $1502; function Edit_SetCueBannerText(hwnd: HWND; CueText: PWideChar; ShowOnFocus: Boolean = True): BOOL; begin Result := BOOL(SendMessage(hwnd, EM_SETCUEBANNER, wParam(ShowOnFocus), lParam(CueText))); end; function Edit_GetCueBannerText(hwnd: HWND; CueText: PWideChar; BufLen: Longint): BOOL; begin Result := BOOL(SendMessage(hwnd, EM_GETCUEBANNER, wParam(CueText), lParam(BufLen))); end; // utilisation de Edit_SetCueBannerText procedure TForm1.FormCreate(Sender: TObject); begin Edit_SetCueBannerText(Edit1.Handle, 'Entrez votre Texte ici'); Edit_SetCueBannerText(Edit2.Handle, 'Votre nom'); end; // utilisation de Edit_GetCueBannerText procedure TForm1.Button1Click(Sender: TObject); var aCueTxt: array[0..255] of WideChar; begin if Edit_GetCueBannerText(Edit1.Handle, aCueTxt, 256) then Label1.Caption := aCueTxt; end;
@+
Je voudrais savoir comment utiliser la solution proposée par Cirec.
VOICI LE CODE :
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 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const EM_SETCUEBANNER = $1501; EM_GETCUEBANNER = $1502; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Value: WideString; begin //form1.Color:=Clred ; Value := 'Entrez votre Texte ici'; SendMessage(Form1.Edit1.Handle, EM_SETCUEBANNER, 1, LPARAM(PWideChar(Value))); end; end.
Je suis fier de moi. Merci pour votre aide.
Attention, il faut mettre XPManifest1: TXPManifest; à ton programme sinon il ne marche pas.
Cordialement.
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, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; XPManifest1: TXPManifest; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const EM_SETCUEBANNER = $1501; EM_GETCUEBANNER = $1502; implementation {$R *.dfm} function Edit_SetCueBannerText(hwnd: HWND; CueText: PWideChar; ShowOnFocus: Boolean = True): BOOL; begin Result := BOOL(SendMessage(hwnd, EM_SETCUEBANNER, wParam(ShowOnFocus), lParam(CueText))); end; function Edit_GetCueBannerText(hwnd: HWND; CueText: PWideChar; BufLen: Longint): BOOL; begin Result := BOOL(SendMessage(hwnd, EM_GETCUEBANNER, wParam(CueText), lParam(BufLen))); end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.Color:=Clred; Edit_SetCueBannerText(Edit1.Handle, 'Entrez votre Texte ici'); end; end.
Bonjour ! Que diriez-vous d'ajouter cette solution à la FAQ ?
Bonjour,
moi je dirais qu'il faudrait peu de chose, avec le code plus 'souple', pour en faire un composant
Alors là ... l'année 2018 commence bien. Merci Cirec pour cette info très intéressante
Une autre solution :
https://www.developpez.net/forums/d3...e/#post2395205
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager