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 :

Afficher un caractère graphique dans un titre de colonne TStringGrid


Sujet :

Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Afficher un caractère graphique dans un titre de colonne TStringGrid
    Je voudrais pouvoir stocker un caractère graphique dans un titre de colonne de TStringGrid.
    Le but est d'afficher en titre de la colonne le sens du tri.

    Je pense qu'il faut jouer sur le canvas de la cellule mais comment y afficher le caractère graphique.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    as tu essayé quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      TonStringGrid.ControlStyle := TonStringGrid.ControlStyle + [csAcceptsControls];
      TonImage.Parent := TonStringGrid;

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Je ne connaissais pas cette propriété.

    J'ai fait cela
    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
       If State = [gdFixed] Then Begin
           lMarge := (Grille.ColWidths[ACol] -
                      Grille.Canvas.TextWidth(Grille.Cells[ACol, ARow])) Div 2;
           lTexte := '';
           While Grille.Canvas.TextWidth(lTexte)< lMarge Do lTexte := ltexte + ' ';
           lTexte := lTexte + Grille.Cells[ACol, ARow];
           lTexte := lTexte + '   ';
           Grille.Canvas.TextOut(rect.left+2,
                                 rect.top+2,
                                 lTexte);
     
           if (arow = 0) And (Acol = nColTri) then begin
              lMarge := Grille.Canvas.TextWidth(lTexte);
              lFont  := Grille.Canvas.Font.Name;
              Grille.Canvas.Font.Name := 'Map Symbols';
              If cSensTri = 'A' Then lSymbol := Chr(37);
              If cSensTri = 'D' Then lSymbol := Chr(38);
              Grille.Canvas.TextOut(Rect.Left + lMarge,
                                    rect.top+2,
                                    lSymbol);
              Grille.Canvas.Font.Name := lFont;
           end;
           Exit;
       End;
    Mon problème maintenant c'est que la police 'Map Symbols' varien en fonction de la version de Windows.

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Mon problème maintenant c'est que la police 'Map Symbols' varien en fonction de la version de Windows.
    sur mon Windows, je n'ai pas cette fonte. Alors que fait un fureteur en cas de fonte non présente sur la bécane du quidam ?

    Faut chercher une fonte commume aux Windows...

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Faut chercher une fonte commume aux Windows
    Si quelqu'un la connait je prend
    Je pense que je vais plutôt mettre une image dans le canvas de l'entete

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Je pense que je vais plutôt mettre une image dans le canvas de l'entete
    En effet, s'il ne s'agit que d'un titre...

    Mais au fait, as-tu tenté avec l'Arial ?

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Citation Envoyé par Delphi-ne
    Je pense que je vais plutôt mettre une image dans le canvas de l'entete
    Et si tu dessinais un petit triangle sur le canevas comme on le retrouve souvent !

    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
     
    TDirectionTri = (dtDown, dtUp, dtNone);
     
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      DirectionTri: TDirectionTri;
      //----------------------------------------------------------------------------
      procedure DessinFlecheTri(x, y: integer; aDirection: TDirectionTri);
      begin
        with TStringGrid(Sender).Canvas do
        begin
          if aDirection = dtUp then
            begin
              Pen.Color := clBtnShadow;
              MoveTo(x, y + 6);
              LineTo(x + 3, y);
              Pen.Color := clWindow;
              LineTo(x + 4, y);
              LineTo(x + 7, y + 6);
              LineTo(x + 1, y + 6);
            end
          else
            begin
              Pen.Color := clBtnShadow;
              MoveTo(x + 6, y);
              LineTo(x, y);
              LineTo(x + 3, y + 6);
              Pen.Color := clWindow;
              LineTo(x + 4, y + 6);
              LineTo(x + 7, y);
            end;
        end;
      end;
      //----------------------------------------------------------------------------
    begin
     
      DirectionTri := dtDown; // Choisi de façon empirique pour illustrer l'exemple
     
      if (gdFixed in State) and (ARow = 0) and (DirectionTri <> dtNone) then
      begin
        with Rect, TStringGrid(Sender) do
        begin
          DessinFlecheTri(Rect.Right - 15, Rect.Top + 5, DirectionTri);
          Rect.Left := Rect.Left + 2;
          Rect.Top := 2;
          DrawText(Canvas.handle,
                   PChar(Cells[ACol, ARow]),
                   -1,
                   Rect,
                   DT_WORDBREAK or DT_NOPREFIX);
        end;
      end;
    end;
    @+ Claudius

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    C'est ce que je pensais faire mais je n'avais pas osé demandé le code.
    Merci beaucoup je vais intégrer cela.

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

Discussions similaires

  1. Comment afficher des caractères hébreux dans filezilla ?
    Par JerryOne3 dans le forum Internet
    Réponses: 4
    Dernier message: 15/12/2008, 22h57
  2. caractère grec dans un titre d'axes?
    Par Truth dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/07/2008, 11h07
  3. afficher n caractères textuel dans chaine html
    Par p_m_g dans le forum Langage
    Réponses: 5
    Dernier message: 19/09/2007, 01h03
  4. Caractères unicodes dans le titre d'une JFrame
    Par dazz_x dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 19/04/2006, 15h29

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