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

Messages postés
4
Date d'inscription
vendredi 29 décembre 2017
Dernière intervention
30 décembre 2017
- - Dernière réponse :  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 ;
Afficher la suite 

Votre réponse

3 réponses

Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
0
Merci
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,
elkaderr
Messages postés
4
Date d'inscription
vendredi 29 décembre 2017
Dernière intervention
30 décembre 2017
-
;);););););););););););
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 ...
Commenter la réponse de Cirec
Messages postés
4
Date d'inscription
vendredi 29 décembre 2017
Dernière intervention
30 décembre 2017
0
Merci
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 .
elkaderr
Messages postés
4
Date d'inscription
vendredi 29 décembre 2017
Dernière intervention
30 décembre 2017
-
MAINTENANT JE TROUVE QUE LA FONCTION NE MARCHE PAS OU JE NE SAIT PAS COMMENT LE PLACER AIDE MOIS SVP
Commenter la réponse de elkaderr
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
0
Merci
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 .
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.