PlaceHolder de Edit en delphi c'est a dire :mettre un text cache [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019
-
 elkaderr -
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

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
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,
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

;);););););););););););
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 ...
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

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 .
Messages postés
7
Date d'inscription
vendredi 29 décembre 2017
Statut
Membre
Dernière intervention
3 janvier 2019

MAINTENANT JE TROUVE QUE LA FONCTION NE MARCHE PAS OU JE NE SAIT PAS COMMENT LE PLACER AIDE MOIS SVP
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
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,


Merci Cirec ...je te remercie .