IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Composant TEdit avec texte affiché si vide


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Composant TEdit avec texte affiché si vide
    bonjour,

    Quelqu'un connait il un composant TEdit qui affiche un texte grisé tant que le TEdit.Text est vide (comme l'invite de saisie du nom d'utilisateur au démarrage de Vista). Merci.

  2. #2
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Salut,vous n'avez pas besoin d'utiliser un autre composant.TEdit peut trés bien réaliser ce que vous voulez faire.Il suffit d'utiliser la propriété "color" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF edit1.text='' then edit1.font.color:=clInactiveBorder;//c'est un gris
    Maintenant c'est à vous de voir ou placer cette instruction,vous pouvez par exemple la mettre au niveau de la procedure OnChange de Edit1.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  3. #3
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Ou aussi pour que ce soit plus simple au niveau de votre code mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF edit1.text='Tapez ici votre nom' then edit1.font.color:=clInactiveBorder;//c'est un gris
    Comme ca quand vous remettez la valeur par defaut de votre Edit il se met en gris sans avoir a faire d'autre manip
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Moi je ferais ça comme ça : tu utilises TEdit et tu codes comme suit les événements OnEnter et OnExit :
    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
    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
      if Edit1.Tag <> 0 then
      begin
        Edit1.Font.Color := clBlack;
        Edit1.Text := '';
        Edit1.Tag := 0;
      end;
    end;
     
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if Edit1.Text = '' then
      begin
        Edit1.Font.Color := clGrey;
        Edit1.Text := 'Placez votre texte ici';
        Edit1.Tag := 1;
      end;
    end;
    Et dans le OnShow de ta fiche, sauf si le composant qui a le focus est l'edit en question :
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre du Club
    Inscrit en
    Août 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Août 2007
    Messages : 48
    Points : 43
    Points
    43
    Par défaut
    J'ai toujours un composant ApplicationEvents et je fourre dans son évenement OnIdle toutes les manips de ce genre.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Voici un exemple que j'ai bricolé rapidement pour si tu veux en écrire un toi même

    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
    49
    50
     
    type
      TMyEdit = class(TCustomEdit) // ou TEdit pour ne pas avoir à re-publier  
                                   // toutes les propriétés de TEdit ;-)
      private
        procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
        procedure CMEnter(var Message: TCMGotFocus); message CM_ENTER;
        procedure CMExit(var Message: TCMExit);   message CM_EXIT;
      end;
     
    implementation
     
    procedure TMyEdit.CMEnter(var Message: TCMGotFocus);
    begin
      inherited;
      invalidate; // force le redessin de TMyEdit 
    end;
     
    procedure TMyEdit.CMExit(var Message: TCMExit);
    begin
      inherited;
      invalidate; // force le redessin de TMyEdit 
    end;
     
    procedure TMyEdit.WMPaint(var Message: TWMPaint);
    const
      cTexteVide = 'Tapez ici votre texte'; // ici une constante mais peut faire
                                            // l'objet d'un propriété publiée pour 
                                            // le rendre paramétrable 
    var
     _rect: TRect;
     cnv: TCanvas;
    begin
      inherited;
      // code exécuté seulement si Caption est vide et l'on n'est pas en saisie
      if (not Focused) and (Caption = '') then
      begin
        cnv := TCanvas.Create;
        cnv.Handle := GetDC(Handle);
        try
          _rect := Rect(0, 0, Width, Height);
          cnv.Font := Font;
          cnv.Font.Color := clInactiveCaption;
          cnv.TextRect(_rect, 2, 2, cTexteVide);
        finally
          ReleaseDC(Handle, cnv.Handle);
          cnv.Free;
        end;
      end;
    end;
    Yan.


    devYan.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/05/2010, 19h47
  2. Composant personnalisé avec textes
    Par Patrice Henrio dans le forum Composants
    Réponses: 1
    Dernier message: 26/09/2009, 01h15
  3. [Lazarus] Composant Tedit avec bouton calendrier
    Par weberick dans le forum Lazarus
    Réponses: 2
    Dernier message: 30/11/2008, 19h43
  4. Box avec texte ne s'affiche pas sous IE mais sous FF et Safari
    Par newbiemac dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/05/2007, 17h45
  5. Afficher un cadre(avec texte) à coté de la souris
    Par frechy dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/01/2006, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo