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 sous Delphi 7


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Passion pour la programmation
    Inscrit en
    Novembre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Passion pour la programmation
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2015
    Messages : 101
    Points : 123
    Points
    123
    Par défaut Composant TEdit sous Delphi 7
    Bonsoir
    je veux savoir comment travailler avec un edit quand il tient le focus, le contour de edit changeant de couleur.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 456
    Points : 24 868
    Points
    24 868
    Par défaut
    C'est toujours ton histoire de création de composant ?
    Sinon, ta question est incompréhensible, je dirais que tu veux changer la couleur du Edit quand il a le focus

    Rien de plus simple mais cela ne peut pas être ça, ta question, c'est bien trop évident pour quelqu'un qui cherche un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //------------------------------------------------------------------------------
    procedure TxxxForm.edScanEnter(Sender: TObject);
    begin
      edScan.Color := clWindow;
    end;
     
    //------------------------------------------------------------------------------
    procedure TxxxForm.edScanExit(Sender: TObject);
    begin
      edScan.Color := clWebLightCoral;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Homme Profil pro
    Passion pour la programmation
    Inscrit en
    Novembre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Passion pour la programmation
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2015
    Messages : 101
    Points : 123
    Points
    123
    Par défaut
    Merci ShaiLeTroll.

    Est-ce qu' il n' y a pas d'autres méthodes ? Je veux tracer ou dessiner un rectangle dans les dimensions du TEdit , dans la même idée que Edit1.Color
    mais avec le contour de TEdit.

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    peut être comme ça ?
    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
    procedure TForm1.Edit1Enter(Sender: TObject);
    var
      aRect: TRect;
    begin
      with TBrushRecall.Create(Canvas.Brush) do
      try
        Canvas.Brush.Color := clRed;
        Canvas.Brush.Style := bsSolid;
        aRect := Edit1.BoundsRect;
        InflateRect(aRect, 1, 1);
        FrameRect(Canvas.Handle, aRect, Canvas.Brush.Handle)
      finally
        Free;
      end;
    end;
     
    procedure TForm1.Edit1Exit(Sender: TObject);
    var
      aRect: TRect;
    begin
      aRect := Edit1.BoundsRect;
      InflateRect(aRect, 1, 1);
      FrameRect(Canvas.Handle, aRect, Canvas.Brush.Handle)
    end;
    le TEdit se trouve directement sur le canvas de la fiche

    Cordialement,
    @+

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 456
    Points : 24 868
    Points
    24 868
    Par défaut
    TBrushRecall pas sûr que cela existe en D7
    Et dès le moindre invalidate, le trait ne disparait-il pas ?

    J'ai fait cela pour faire une surbrillance sur des TSpeedButton ou une TListBox

    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
     
      TActionShape = class(TShape)
      private
        FColor: TColor;
        procedure SetColor(const Value: TColor);
        function CreateSpecialPen(AColor: TColor): THandle;
      protected
        procedure InitializeColor(APenColor: TColor);
      public
        property Color: TColor read FColor write SetColor;
      end;
     
      TButtonActionShape = class(TActionShape)
      public
        constructor Create(AButton: TSpeedButton; APenColor: TColor = clYellow; AInsideButton: Boolean = True); reintroduce;
      end;
     
      TWinControlActionShape = class(TActionShape)
      private
        type
          THackWinControl = class(TWinControl);
      public
        constructor Create(AWinControl: TWinControl; APenColor: TColor = clYellow; AInsideWinControl: Boolean = False); reintroduce;
      end;
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    { TActionShape }
     
    //------------------------------------------------------------------------------
    procedure TActionShape.InitializeColor(APenColor: TColor);
    begin
      Brush.Style := bsClear;
      FColor := APenColor;
      if Canvas.GetConstratedColor(APenColor) = clBlack then
      begin
        // Pour une couleur claire, on utilise un pointillé épais
        Pen.Handle := CreateSpecialPen(APenColor); // Pen se charge de la libération
      end
      else
      begin
        // Pour une couleur foncée, on utilise un pointillé standard
        Pen.Style := psDot;
        Pen.Color := APenColor;
      end;
    end;
     
    //------------------------------------------------------------------------------
    function TActionShape.CreateSpecialPen(AColor: TColor): THandle;
    const
      LineLengths: array[0..1] of DWORD = (2, 3);
    var
      LogBrush: TLogBrush;
    begin
      LogBrush.lbStyle := BS_SOLID;
      LogBrush.lbColor := ColorToRGB(AColor);
      Result := ExtCreatePen(PS_GEOMETRIC or PS_USERSTYLE or PS_ENDCAP_FLAT or PS_JOIN_BEVEL, 2, LogBrush, 2, @LineLengths[0]);
    end;
     
    //------------------------------------------------------------------------------
    procedure TActionShape.SetColor(const Value: TColor);
    begin
      if FColor <> Value then
      begin
        Pen.Handle := CreateSpecialPen(Value); // Pen se charge de la libération
        FColor := Value;
      end;
    end;
     
    { TButtonActionShape }
     
    //------------------------------------------------------------------------------
    constructor TButtonActionShape.Create(AButton: TSpeedButton; APenColor: TColor = clYellow; AInsideButton: Boolean = True);
    var
      ShapeRect: TRect;
    begin
      inherited Create(AButton.Owner);
     
      ShapeRect := AButton.BoundsRect;
      if AInsideButton then
        InflateRect(ShapeRect, -2, -2)
      else
        InflateRect(ShapeRect, 3, 3);
     
      BoundsRect := ShapeRect;
      // Le Shape étant créé après, son Z-Order fait qu'il sera dessiné par dessus le Bouton
      Parent := AButton.Parent;
      OnClick := AButton.OnClick;
      OnDblClick := AButton.OnDblClick;
     
      if AInsideButton then
        Shape := stRoundRect
      else
        Shape := stRectangle;
     
      InitializeColor(APenColor);
     
      Visible := False;
    end;
     
    { TWinControlActionShape }
     
    //------------------------------------------------------------------------------
    constructor TWinControlActionShape.Create(AWinControl: TWinControl; APenColor: TColor = clYellow; AInsideWinControl: Boolean = False);
    var
      ShapeRect: TRect;
    begin
      inherited Create(AWinControl.Owner);
     
      ShapeRect := AWinControl.BoundsRect;
      if AInsideWinControl then
      begin
        ShapeRect := Rect(2, 2, AWinControl.Width - 4, AWinControl.Height - 4);
        Parent := AWinControl;
      end
      else
      begin
        InflateRect(ShapeRect, 3, 3);
        Parent := AWinControl.Parent;
      end;
     
      BoundsRect := ShapeRect;
      OnClick := THackWinControl(AWinControl).OnClick;
      OnDblClick := THackWinControl(AWinControl).OnDblClick;
     
      if AInsideWinControl then
        Shape := stRoundRect
      else
        Shape := stRectangle;
     
      InitializeColor(APenColor);
     
      Visible := False;
    end;
    Nom : Sans titre.jpg
Affichages : 1119
Taille : 70,4 Ko
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    TBrushRecall pas sûr que cela existe en D7
    Si Depuis D7

    Citation Envoyé par ShaiLeTroll Voir le message
    Et dès le moindre invalidate, le trait ne disparait-il pas ?
    Oui tu as raison j'avais zappé


    Cordialement,
    @+

  7. #7
    Membre régulier
    Homme Profil pro
    Passion pour la programmation
    Inscrit en
    Novembre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Passion pour la programmation
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2015
    Messages : 101
    Points : 123
    Points
    123
    Par défaut
    Nom : editrouge.PNG
Affichages : 960
Taille : 927 octets
    aprés quelque réglage j'écrie ce code dans l'événement OnPaint ca marche

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,
    un truc qui marche très bien et qui ne "coute" pas cher : un panel sans bord sous le TEdit, avec un débord d'un ou deux pixels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm2.Edit1Enter(Sender: TObject);
    begin
       Panel1.Color := clRed ;
    end;
     
    procedure TForm2.Edit1Exit(Sender: TObject);
    begin
       Panel1.color := clBtnFace ;
    end;
    A+
    Charly

  9. #9
    Membre régulier
    Homme Profil pro
    Passion pour la programmation
    Inscrit en
    Novembre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Passion pour la programmation
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2015
    Messages : 101
    Points : 123
    Points
    123
    Par défaut
    Merci A Tous Ce Petit Code a Résolu
    La Solution de Cirec
    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
    procedure TForm1.FormPaint(Sender: TObject);
    begin
    with TBrushRecall.Create(canvas.Brush) do
    try
    Canvas.Brush.Color:=clred;
    Canvas.Brush.Style:=bsSolid;
    aRect:=edit1.BoundsRect;
    InflateRect(aRect,1,1);
    FrameRect(Canvas.Handle, aRect,canvas.Brush.Handle);
    finally
    free;
    edit1.BorderStyle:=bsnone;
     
    end;
    end;
     
    end.

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bonjour,

    tu oublies de déclarer aRect. cela ne peut pas compiler.

    D'autre part, il faut affecter le code de Cirec aux OnEnter et OnExit de chacun des TEdit de ta Form :

    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
    procedure TForm1.EditEnter(Sender: TObject);
    var
      aRect: TRect;
    begin
      // Edit1.BorderStyle := bsnone ;   ==>> à mettre dans le Oncreate de Form1
      with TBrushRecall.Create(Canvas.Brush) do
      try
        Canvas.Brush.Color := clRed;
        Canvas.Brush.Style := bsSolid;
        aRect := (Sender as TEdit).BoundsRect;
        InflateRect(aRect, 3, 3);
        FrameRect(Canvas.Handle, aRect, Canvas.Brush.Handle)
      finally
        Free;
      end;
    end;
    
    procedure TForm1.EditExit(Sender: TObject);
    var
      aRect: TRect;
    begin
      aRect := (Sender as TEdit).BoundsRect;
      InflateRect(aRect, 3, 3);
      FrameRect(Canvas.Handle, aRect, Canvas.Brush.Handle)
    end;
    Si tu le mets dans le OnPaint de ta Form, le cadre rouge sera toujours dessiné, même si le TEdit n'a plus le focus.

    A+
    Charly

  11. #11
    Membre régulier
    Homme Profil pro
    Passion pour la programmation
    Inscrit en
    Novembre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Passion pour la programmation
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2015
    Messages : 101
    Points : 123
    Points
    123
    Par défaut
    j'ai déclaré comme une variable Globale merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Installation des composants TSynEdit sous Delphi 2007
    Par Zaki_SDwin dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/12/2008, 13h12
  2. composants téléphonie sous delphi
    Par djococa dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/08/2007, 21h44
  3. Composants JVCL sous Delphi 2005 personnel
    Par jonathomas dans le forum Delphi
    Réponses: 3
    Dernier message: 21/09/2006, 02h05
  4. Composants XML sous Delphi 5 ?
    Par Laurent Dardenne dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/11/2005, 16h40
  5. Installer un composant .pas sous Delphi 2005 ???
    Par rpoulin dans le forum EDI
    Réponses: 3
    Dernier message: 01/11/2005, 13h38

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