PlaceHolder de Edit en delphi c'est a dire :mettre un text cache

Résolu
elkaderr
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019
- 29 déc. 2017 à 11:20
 elkaderr - 1 janv. 2018 à 08:05
bonjour ;
je suis un debutant en delphi et je veux une petite aide de vous ;
mon probleme :je veux faire oumettre un texte dans le font de Edit en delphi ;
c'est la meme chose q'on peut faire avec html telque on fait :
<input type="text" placeholder="entrer le prenom" name="prenom">
donc je veux faire la meme chose que ca mais en delphi ;
merci d'avance ;

3 réponses

Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
29 déc. 2017 à 19:13
Bonjour,

PlaceHolder == Cue Banner.
en D7 c'est très simple à faire.

Il te faut 1 TXPManifest (indispensable ne fonctionne pas sans) 2 TEdit 1 TButton & 1 TLabel:
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;


tout simplement.

Cordialement,
0
elkaderr
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

30 déc. 2017 à 16:46
;);););););););););););
hmdlh kolchi mebroukh ;
je suit fiere de mois mais aussi au membre qui veulent m'aide merci a vous ;

avant tout merci cirec je pense qui il est le meme qui se trouve dans developper.com ;
si ce n'est pas le cas merci a tous;
la solution :attention il faut mettre XPManifest1: TXPManifest; a ton programme sinon il ne marche pas ;
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.


Cordialement ...
0
elkaderr
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

29 déc. 2017 à 23:02
MERCI MERCI @+ Cirec..OUI OUI C'EST CA ...MAINTENANT JE VEUX CONNAITRE COMMENT APLLER CES FONCTIONS ET PROCEDURES DANS LE CORPS PRINCIPALE ...MERCI D'AVANCE .
0
elkaderr
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

30 déc. 2017 à 14:04
MAINTENANT JE TROUVE QUE LA FONCTION NE MARCHE PAS OU JE NE SAIT PAS COMMENT LE PLACER AIDE MOIS SVP
0
Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
31 déc. 2017 à 15:20
Content pour toi ;)
mais s'il te plait évite l'écriture en MAJUSCULE c'est très pénible à lire.

Bon, pour ton dernier souci
j'ai mis les fonctions dans une unité dédiée avec une fonction supplémentaire ce qui permet une compatibilité de D7 à Tokyo 10.2
unit crCueBanner;

interface
uses Windows
     {$if CompilerVersion < 20.00}
       // à partir de D2009 vous devez activer les styles les options du projet
     , XPMan
     {$else}
       // à partir de D2009 les fonctions "Edit_SetCueBannerText" & "Edit_GetCueBannerText"
       // existent déjà. Nous les utiliserons par redirection.
     , CommCtrl
     {$ifend};

// fonction étandue permettant le choix ShowOnFocus: Boolean
// qui permet ou non de voir le Cue Banner Text quand l'edit à le focus
// active pour toutes les versions de Delphi
function Edit_SetCueBannerTextEx(hwnd: HWND; CueText: PWideChar; ShowOnFocus: Boolean = True): BOOL;{$if CompilerVersion >= 20.00} inline; {$ifend}


{$if CompilerVersion < 20.00}
//avant D2009 nous devons les déclarer et les implémenter
function Edit_SetCueBannerText(hwnd: HWND; CueText: PWideChar): BOOL;
function Edit_GetCueBannerText(hwnd: HWND; CueText: PWideChar; BufLen: Longint): BOOL;
{$else}
// comme elle existent depuis D2009
type
TEdit_SetCueBannerText = function (hwnd: HWND; CueText: PWideChar): BOOL;
TEdit_GetCueBannerText = function (hwnd: HWND; CueText: PWideChar; BufLen: Longint): BOOL;

// on va les utiliser
var
Edit_SetCueBannerText: TEdit_SetCueBannerText;
Edit_GetCueBannerText: TEdit_GetCueBannerText;
{$ifend}

implementation
const
  EM_SETCUEBANNER             = $1501;
  EM_GETCUEBANNER             = $1502;

function Edit_SetCueBannerTextEx(hwnd: HWND; CueText: PWideChar; ShowOnFocus: Boolean = True): BOOL;{$if CompilerVersion >= 20.00} inline; {$ifend}
begin
  Result := BOOL(SendMessage(hwnd, EM_SETCUEBANNER, wParam(ShowOnFocus), lParam(CueText)));
end;
{$if CompilerVersion < 20.00}
function Edit_SetCueBannerText(hwnd: HWND; CueText: PWideChar): BOOL;
begin
  Result := BOOL(SendMessage(hwnd, EM_SETCUEBANNER, wParam(False), 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;
{$else}
initialization
// redirige les fonctions existantes
Edit_SetCueBannerText := @CommCtrl.Edit_SetCueBannerText;
Edit_GetCueBannerText := @CommCtrl.Edit_GetCueBannerText;

{$ifend}

end.

je t'ai fait un petit projet de démo
ce qui devrait t'aider à comprendre.

Cordialement,


0
Merci Cirec ...je te remercie .
0