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 :

Glyph, bmp ou autre dans Title DBGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Glyph, bmp ou autre dans Title DBGrid
    Bonjour, bonsoir,

    Je cherche déséspérement un lien un tuto, un fascicule qui expliquerais comment mettre un icon, un glyph ou autre image dans la ligne de titre d'un Dbgrid au clique sur la colonne.

    A ce jour j'arrive à affiche une image, mais il y a autant d'images que de ligne lolololol.

    Voici mon code :

    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
    procedure TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
      With TDBGrid(Sender) do
      Begin
        if Column.FieldName = ColonneCliquee then
        Begin
      //Colorer en bleu le titre cliqué
          Column.Title.Font.Color := clBlue; // Sa marche
          ImageList1.Draw(Canvas, Rect.Right-18, Rect.Top-18, 4); // le délire total
        end
        else
          Column.Title.Font.Color := clWindowText;
     
     
      end;
    end;
    tous les liens que j'ai pu trouver ne m'aide pas ou alors propose des dbgrid spécials payants.

    Pouvez-vous m'aiguiller ?

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    N'affiche ton image que si State vaut gdFixed.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par Lung Voir le message
    N'affiche ton image que si State vaut gdFixed.
    Salut Lung,

    J'vaias déjà essayé cette méthode mais cela donne rien au clique

    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 TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
      With Sender as TDBGrid Do With Canvas Do
      Begin
        if (gdfixed in state) then
        Begin
          if Column.FieldName = ColonneCliquee then
          Begin
            Column.Title.Font.Style := [fsBold];
            ImageList1.Draw(Canvas, Rect.Right-14, Rect.Top-17, 5);
        end;
        end
        else
          Column.Title.Font.Style := [];
      end;
    
    end;
    Une autre piste ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Un vieux code, j'avais pondu ça, après tout, cela n'a besoin de dessiner qu'au click sur la colonne, ...

    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    //------------------------------------------------------------------------------
    procedure TFrmEasySearchSejourModule.DBGridSearchSejourTitleClick(
      Column: TColumn);
    var
       iegf: TEnumGridField;
       IndexEGF: Integer;
       ic: Integer;
       IndexName: String;
    begin
         if FlagColumnMoved then begin
            FlagColumnMoved := False;
            Exit;
         end;
     
         // Recherche d'une Colonne déjà en Cours de Tri
         IndexEGF := -1;
         for iegf := Low(TEnumGridField) to High(TEnumGridField) do begin
             if GRID_FIELD_TRI[iegf] <> ettNone then begin
                IndexEGF := Ord(iegf);
                Break;
             end;
         end;
     
         // Est-ce qu'une Colonne est déjà en Cours ?
         if IndexEGF >= Ord(Low(TEnumGridField)) then begin
            iegf := TEnumGridField(IndexEGF);
            // Une est déjà en cours, mais est-ce la même que celle du Click
            if Column.FieldName <> GRID_FIELD_NAME[iegf] then begin
               // Une Colonne est déjà en Cours mais ce n'est pas celle du Click donc RAZ
               GRID_FIELD_TRI[iegf] := ettNone;
               for ic := 0 to DBGridSearchSejour.Columns.Count - 1 do begin
                   if DBGridSearchSejour.Columns.Items[ic].FieldName = GRID_FIELD_NAME[iegf] then begin
                      DBGridSearchSejour.Columns.Items[ic].Title.Caption := GRID_FIELD_LIB[iegf]; // Plus de Tri
                      DrawDBGridArrowSort(DBGridSearchSejour, DBGridSearchSejour.Columns.Items[ic], ettNone);
                      Break;
                   end;
               end;
     
               // C'est une Nouvelle Colonne pour le Tri donc il faut la chercher
               IndexEGF := -1;
               for iegf := Low(TEnumGridField) to High(TEnumGridField) do begin
                   if Column.FieldName = GRID_FIELD_NAME[iegf] then begin
                      IndexEGF := Ord(iegf);
                      Break;
                   end;
               end;
            end;
         end else begin
             // C'est la première colonne à être Triée
             IndexEGF := -1;
             for iegf := Low(TEnumGridField) to High(TEnumGridField) do begin
                 if Column.FieldName = GRID_FIELD_NAME[iegf] then begin
                    IndexEGF := Ord(iegf);
                    Break;
                 end;
             end;
         end;
     
         MDSSearchSejour.IndexDefs.Clear();
         // Est-ce bien une Colonne Triable
         if IndexEGF >= Ord(Low(TEnumGridField)) then begin
            iegf := TEnumGridField(IndexEGF);
            // Changement du Tri selon le Statut en Cours
            case GRID_FIELD_TRI[iegf] of
                 ettNone, ettDescending : begin
                      GRID_FIELD_TRI[iegf] := ettAscending;
                      Column.Title.Caption := GRID_FIELD_LIB[iegf] + '  ^    ';
                      DrawDBGridArrowSort(DBGridSearchSejour, Column, ettAscending);
                      IndexName := 'ASC_' + GRID_FIELD_NAME[iegf];
                      // MDSSearchSejour.IndexDefs.Add(IndexName, GRID_FIELD_NAME[iegf], [ixCaseInsensitive]);
                      MDSSearchSejour.AddIndex(IndexName, GRID_FIELD_NAME[iegf], [ixCaseInsensitive]);
                 end;
                 ettAscending : begin
                     GRID_FIELD_TRI[iegf] := ettDescending;
                     Column.Title.Caption := GRID_FIELD_LIB[iegf] + '  v    ';
                     DrawDBGridArrowSort(DBGridSearchSejour, Column, ettDescending);
                     IndexName := 'DESC_' + GRID_FIELD_NAME[iegf];
                     // MDSSearchSejour.IndexDefs.Add(IndexName, GRID_FIELD_NAME[iegf], [ixDescending, ixCaseInsensitive]);
                     MDSSearchSejour.AddIndex(IndexName, GRID_FIELD_NAME[iegf], [ixDescending, ixCaseInsensitive]);
                 end;
            end;
         end;
         MDSSearchSejour.IndexDefs.Update();
         MDSSearchSejour.IndexName := IndexName;
         // MDSSearchSejour.IndexFieldNames := GRID_FIELD_NAME[TEnumGridField(IndexEGF)];
    end;
     
    //------------------------------------------------------------------------------
    procedure TFrmEasySearchSejourModule.DrawDBGridArrowSort(const DBGrid: TDBGrid; const Column: TColumn; const Direction: TEnumTypeTri);
     
      // Fonction Interne
      function Min(A,B: Integer): Integer;
      begin
        if A < B then
         Result := A
        else
         Result := B;
      end;
     
    var
       X, Y: Integer;
       ic: Integer;
       TmpBitMap: TBitMap;
       TextWidth, FinalWidth, FinalHeight: Integer;
       FlagVisible: Boolean;
    begin
         // Exit;
         FlagVisible := False;
         FinalWidth := ImageListGrid.Width;
         FinalHeight := ImageListGrid.Height;
     
         X := 0;
         for ic := 0 to DBGrid.Columns.Count - 1 do begin
             if DBGrid.Columns.Items[ic].ID = Column.ID then begin
                TmpBitMap:= TBitMap.Create();
                try
                   TmpBitMap.Width := Screen.Width;
                   TmpBitMap.Canvas.Font := DBGrid.Columns.Items[ic].Title.Font;
                   TextWidth := TmpBitMap.Canvas.TextWidth(Trim(DBGrid.Columns.Items[ic].Title.Caption));
                   FinalWidth := Min(ImageListGrid.Width, DBGrid.Columns.Items[ic].Width - TextWidth + TmpBitMap.Canvas.TextWidth('  ')); // - '12' + '1234' Espace
                   FinalHeight := Min(ImageListGrid.Height, FArrow.Parent.Height);
                   FlagVisible := True;
                   Inc(X, TextWidth + TmpBitMap.Canvas.TextWidth('  '));
                   if DBGrid.Ctl3D then begin
                      Dec(X, 1);
                   end;
                   Break;
                finally
                       TmpBitMap.Free();
                end;
             end else begin
                 Inc(X, DBGrid.Columns.Items[ic].Width);
                 if dgColLines in DBGrid.Options then begin
                    Inc(X, 1);
                 end;
             end;
         end;
         Y := 0;
         if DBGrid.BorderStyle = bsSingle then begin
            Inc(Y, 1);
         end;
         if DBGrid.Ctl3D then begin
            Inc(Y, 1);
         end;
     
         case Direction of
              ettNone : begin
                  FArrow.Visible := False;
              end;
              ettAscending : begin
                  FArrow.Clear();
                  ImageListGrid.Draw(FArrow.Canvas, 0, 0, 0);
                  FArrow.Left := X;
                  FArrow.Top := Y;
                  FArrow.Width := FinalWidth;
                  FArrow.Height := FinalHeight;
                  FArrow.Visible := FlagVisible;
                  if FArrow.Visible then FArrow.BringToFront();
              end;
              ettDescending : begin
                  FArrow.Clear();
                  ImageListGrid.Draw(FArrow.Canvas, 0, 0, 1);
                  FArrow.Left := X;
                  FArrow.Top := Y;
                  FArrow.Width := FinalWidth;
                  FArrow.Width := FinalHeight;
                  FArrow.Visible := FlagVisible;
                  if FArrow.Visible then FArrow.BringToFront();
              end;
         end;
    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

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut ShaiLetroll,

    tu n'aurais pas plus simple ?? lol.. sinon tanpis je vais décortiquer...

    enfin cela me semble trés difficile.

    Merci tout de même de ton aide.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    En fait, c'est une grosse tricherie, j'instancie à la volée un TPanelImage (FArrow), je lui met la grille comme Parent, et après c'est un jeu d'enfant !
    Bidouille quand tu nous tiens !

    Après j'ai géré une uzine à gaz pour savoir le sens du tri, et la colonne en cours, ... j'avoue avec le recul, j'aurais pu mieux 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    type
      TPanelImage = class(TPanel)
        FImage: TImage;
        FCanvas: TCanvas;
      public
        constructor Create(AOwner: TComponent; AParent: TWinControl); override;
        destructor Destroy; override;
      protected
        procedure Clear;
      published
        property Image: TImage read FImage write FImage;
        property Canvas: TCanvas read FCanvas write FCanvas;
      end;
     
    // -----------------------------------------------------------------------------
    // Classe TPanelImage                                                          -
    // -----------------------------------------------------------------------------
    constructor TPanelImage.Create(AOwner: TComponent; AParent: TWinControl);
    begin
         inherited Create(AOwner);  
     
         Self.Parent := AParent;
         Self.BevelInner := bvNone;
         Self.BevelOuter := bvNone;
         Self.BoundsRect := Rect(0, 0, 0, 0);
         Self.Enabled := False;
         Self.Visible := False;
     
         FImage := TImage.Create(Self);
         FImage.Parent := Self;
         FImage.Align := alClient;
         FImage.Transparent := True;
         FImage.Enabled := False;
     
         FCanvas := FImage.Canvas;
    end;
     
    // -----------------------------------------------------------------------------
    destructor TPanelImage.Destroy;
    begin
         // Pour FImage, le Panel devrait normalement s'en occuper grâce à sa propriété Owner
         FCanvas := nil;
     
         inherited Destroy();
    end;
     
    // -----------------------------------------------------------------------------
    procedure TPanelImage.Clear;
    begin
         FImage.Canvas.Pen.Color := FImage.Picture.Bitmap.TransparentColor;
         FImage.Canvas.FillRect(Rect(0, 0, FImage.Width, FImage.Height));
    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

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Rapidement

    J'ai trouvé la solution en 1 seul ligne de plus par rapPort à mon code initiale.

    Code initial :

    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
    procedure TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
      With TDBGrid(Sender) do
      Begin
        if Column.FieldName = ColonneCliquee then
        Begin
      //Colorer en bleu le titre cliqué
          Column.Title.Font.Color := clBlue; // Sa marche
          ImageList1.Draw(Canvas, Rect.Right-18, Rect.Top-18, 4); // le délire total
        end
        else
          Column.Title.Font.Color := clWindowText;
      end;
    end;
    Je le colle ici dés que je reviens

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    très étrange ton Top - 18 !

    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
    type
      TCustomGridHack = class(TCustomGrid);
    
    procedure TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
      With TDBGrid(Sender) do
      Begin
        if (Column.FieldName = ColonneCliquee) and
          (Rect.Bottom <= TCustomGridHack(Sender).RowHeights[0]) then
        Begin
          //Colorer en bleu le titre cliqué
          Column.Title.Font.Color := clBlue; // ça marche
          ImageList1.Draw(Canvas, Rect.Right - 18, Rect.Top + 2, 4); 
        end
        else
          Column.Title.Font.Color := clWindowText;
      end;
    end;
    Tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if (Column.FieldName = ColonneCliquee) and
          (Rect.Top = ???) then
    ça doit être 0, 1 ou 2, pas plus ... j'ai pas vérifié ...
    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

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut Troll,

    J'ai testé ta soluce, mais elle n'affiche pas mon Icone.

    Voilà ce que j'ai fais (en rouge) :

    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 TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
    
      With Sender as TDBGrid Do With Canvas Do
      Begin
        if (Column.FieldName = ColonneCliquee) And (Rect.Top < 30) then
        Begin
          //Colorer en bleu le titre cliqué + Icone en titre
          Column.Title.Font.Style := [fsBold];
          ImageList1.Draw(Canvas, Rect.Right-14, Rect.Top-17, 5);
        end
        else
          Column.Title.Font.Style := [];
      end;
    end;
    Un peu tordu mais ca marche nikel, c'est peu servir à pas mal de personne surement.

    Le Rect.Right-14 et le top-17, c'est pour être bien placé par raport à la taille de mon icone de 16*16

    Tu en pense quoi ?

  10. #10
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    J'avais pas vue ton deuxieme code Troll.

    Désolé. C'est excatement ce que j'avais trouvé.

    Merci beaucoup de ton aide. t'"es un chef.

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Re une derniere fois

    Le véritable code que j'ai mis est celui-ci, il vaut mieux utiliser celui-ci car sinon l'icone scintille !!

    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
    procedure TFTravail.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    Begin
    
      With Sender as TDBGrid Do With Canvas Do
      Begin
        if (Column.FieldName = ColonneCliquee) then
        Begin
          // gras le text
          Column.Title.Font.Style := [fsBold];
          if Rect.Top < 30 then
    
          ImageList1.Draw(Canvas, Rect.Right-14, Rect.Top-17, 5);
        end
        else
          Column.Title.Font.Style := [];
      end;
    
    end;
    La cela scintille pas du tout l'icone, je sais pas pourkoi mais sa marche lolol

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Le Rect.Right-14 et le top-17, c'est pour être bien placé par raport à la taille de mon icone de 16*16

    Tu en pense quoi ?
    Ben, le Right- 14, rien de surprenant, tu aligne l'icone à la droite la barre (tu risque d'ailleurs d'écraser le libellé, ou tu as triché en agrandissant la colonne ?)
    mais le Top - 17, ça me suprend plus, Top devrait contenir 0, et Bottom 17, ... étrange ...

    EDIT : Mais oui, en fait, cela fait le Draw que sur la première ligne de donnée, donc tu dessine au dessus de cette ligne, ce qui donne l'entête ... et moi qui pensait que mon code était de la bidouille
    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

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

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. inserer une image dans un dbgrid delphi
    Par cello dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 18h51
  3. Données dans une DBgrid
    Par camino dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/02/2004, 03h40
  4. lenteur d'affichage de requete dans un DBGrid
    Par nico27 dans le forum InterBase
    Réponses: 9
    Dernier message: 23/06/2003, 13h54
  5. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01

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