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

 Delphi Discussion :

Comment aligner le caption à droite


Sujet :

Delphi

  1. #1
    Débutant  
    Inscrit en
    Mars 2008
    Messages
    1 123
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1 123
    Points : 170
    Points
    170
    Par défaut Comment aligner le caption à droite
    comment alligner le caption d'une Form à doitemerci d'avance

  2. #2
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    yop
    via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label1.Alignment:=taRightJustify;
    en vérifiant d'avoir:
    la propriété de label1.AutoSize égale à false

    ++

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 474
    Points : 1 344
    Points
    1 344
    Par défaut Caption de la form !
    Bonjour à toutes et à tous,

    @ f-k-z, c'est le caption du Tform qui doit être aligné sur la droite et non celui d'un Tlabel.

    @ sky88, as tu pensé que ta forme donc "le caption", peut être influencée avec le thème qui se trouve sur les différents PC ou avec des skins.

    Sinon : form1.Caption := ' espace espace.......... Mon application';

    A creuser.

    @+,

    Cincap

  4. #4
    Membre éprouvé
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Points : 928
    Points
    928
    Par défaut
    Au temps pour moi cincap

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 474
    Points : 1 344
    Points
    1 344
    Par défaut En interceptant les messages !
    @ Sky88, voici une méthode :

    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
         procedure WMNCPaint(var Msg: TWMNCPaint) ; message WM_NCPAINT;
         procedure WMNCACTIVATE(var Msg: TWMNCActivate) ; message WM_NCACTIVATE;
         procedure DrawCaptionText() ;
     
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.DrawCaptionText;
    const
       captionText = 'Mon application';
    var
       canvas: TCanvas;
    begin
       canvas := TCanvas.Create;
       try
         canvas.Handle := GetWindowDC(Self.Handle) ;
         with canvas do
         begin
           Brush.Style := bsClear;
           Font.Color := clWhite ;
           Font.Style := [fsBold];
           Font.Name := 'MS sans Serif';
     
           TextOut(Self.Width - 250, 10, captionText) ; // -250 = alignement à droite,  10 = centrage sur la barre de titre
         end;
       finally
         ReleaseDC(Self.Handle, canvas.Handle) ;
         canvas.Free;
       end;
    end;
     
    procedure TForm1.WMNCACTIVATE(var Msg: TWMNCActivate) ;
    begin
       inherited;
       DrawCaptionText;
    end;
     
    procedure TForm1.WMNCPaint(var Msg: TWMNCPaint) ;
    begin
       inherited;
       DrawCaptionText;
    end;
    end.
    Le caption de ta forme est toujours actif, il suffit de ne mettre aucune valeur pour ne voir que l'affichage de ton caption à droite.

    @+,

    Cincap

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 474
    Points : 1 344
    Points
    1 344
    Par défaut Une autre façon !
    @ Sky88, une autre façon de faire :

    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
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
        procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); 
    var 
      ACanvas : TCanvas;
      TheRect: TRect;
     
    begin 
      inherited; 
      ACanvas := TCanvas.Create; 
      try 
        ACanvas.Handle := GetWindowDC(Form1.Handle);
        with ACanvas do begin 
          Brush.Color := clActiveCaption; 
          Font.Name := 'Tahoma'; 
          Font.Size := 8; 
          Font.Color := clred; 
          Font.Style := [fsItalic, fsBold];
          TextOut(Self.Width -260 + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
          Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height))/2) +4,'Mon application');
        end; 
      finally 
        ReleaseDC(Form1.Handle, ACanvas.Handle); 
        ACanvas.Free; 
      end; 
    end;
    Pour changer l'alignement par rapport à droite et au centre, il faut changer les valeurs :

    TextOut(Self.Width -260 + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
    Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height))/2) +4,'Mon application');

    Car -260 correspond au texte 'Mon application' et +4 au centre de ma barre de titre avec un thème Windows.

    @+,

    Cincap

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    En cherchant une méthode pour changer le font du caption d'une Form, je suis tombé sur cet article intéressant. J'ai essayé la solution proposée en modifiant le font.style par exemple, mais je n'ai pas l'impression que le caption soit modifié ?! Avez vous une idée ?

    Sinon, il y a un autre exemple ici :
    http://www.scalabium.com/faq/dct0059.htm

    Merci beaucoup par avance,

    VR

    PS: OS=Vista, VB6

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 474
    Points : 1 344
    Points
    1 344
    Par défaut
    @ villerose_ws, ceci fonctionne sur Vista malgré le Thê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
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
        procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); 
    var 
      ACanvas : TCanvas;
      TheRect: TRect;
     
    begin 
      inherited; 
      ACanvas := TCanvas.Create; 
      try 
        ACanvas.Handle := GetWindowDC(Form1.Handle);
        with ACanvas do begin 
          Brush.Color := clActiveCaption; 
          Font.Name := 'Tahoma'; 
          Font.Size := 8; 
          Font.Color := clred; 
          Font.Style := [fsItalic, fsBold];
          TextOut(Self.Width -260 + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
          Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height))/2) +4,'Mon application');
        end; 
      finally 
        ReleaseDC(Form1.Handle, ACanvas.Handle); 
        ACanvas.Free; 
      end; 
    end; 
    end.
    @+,

    Cincap

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    merci cincap pour la réponse
    mais je viens de ressayer...ça ne marche pas
    est-ce qu'il y a des properties/options à modifier ?!

    VR

    PS/: Ah en effet, ça marche si dans "Paramètres de l'apparence\Modèle de couleurs", on choisit "Windows Vista Basic" comme modèle

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/01/2013, 17h15
  2. [GridView] Comment aligner à droite le contenu d'une colonne ?
    Par Stephanie79 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 23/09/2008, 13h07
  3. comment aligner le texte d'un INPUT à droite
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/02/2008, 09h08
  4. Réponses: 3
    Dernier message: 31/10/2006, 12h07
  5. Comment aligner des éléments d'un TEdit à droite ?
    Par bertrand_declerck dans le forum Composants VCL
    Réponses: 18
    Dernier message: 15/06/2005, 18h46

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