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

Lazarus Pascal Discussion :

TDBGrid : ajustement automatique de RowHeights sur des contenus multilignes [Lazarus]


Sujet :

Lazarus Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut TDBGrid : ajustement automatique de RowHeights sur des contenus multilignes
    Bonjour,

    Si cela peut vous être utile, comme je n'ai pas trouvé de code sous Lazarus réglant ce problème, je me suis basé sur la résolution d'un problème identique que j'ai rencontré récemment sur des TStringGrids. Petites vidéos win.avi et nux.avi.
    Le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    uses
     [...] 
     Grids, LCLIntf {DrawText},  LCLType {DT_CALCRECT or DT_WORDBREAK};
     
    type
     [...]
     TPublicCustomGrid = class(TCustomGrid);  
     
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      aRect, bRect : TRect;
      sTmp : String;
      iRow : Integer;
    begin
     if Column.FieldName = 'vodesign' then begin   //Colonne concernée
      sTmp := column.Field.DataSet.FieldByName('vodesign').AsString;
      iRow := DBGrid1.DataSource.DataSet.RecNo;
      with (Sender as TDBGrid) do begin
       Canvas.FillRect(Rect);
       Canvas.FillRect(bRect);
       bRect := Rect;
       DrawText(Canvas.Handle, PChar(sTmp), length(sTmp), bRect,
                DT_CALCRECT or DT_WORDBREAK);
       if (bRect.Bottom - bRect.Top) > DBGrid1.DefaultRowHeight then
        TPublicCustomGrid(DBGrid1).RowHeights[iRow] := bRect.Bottom - bRect.Top
       else
        TPublicCustomGrid(DBGrid1).RowHeights[iRow] := DBGrid1.DefaultRowHeight;
       aRect := Rect; {Can't assign values to const variable}
       DrawText(Canvas.Handle, PChar(sTmp), length(sTmp), aRect, DT_WORDBREAK);
      end;
     end;
    end;
    Le principe est le même que pour la TStringGrid. Seul le Rect étant défini comme constante m'a obligé à utiliser une variable aRect.

    Cordialement. Gilles
    Testé sous Win 32 (Seven) : lazarus 0.9.31-31448 fpc-2.4.4-20110629 et Ubuntu 32 (10 & 11.04) : lazarus 0.9.31.31827 fpc 2.4.5-110730 i386
    Dernière modification par Invité ; 03/08/2011 à 13h48. Motif: Orthographe

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

Discussions similaires

  1. Désactiver l'ajustement automatique du texte sur mobile
    Par titipucca1 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 14/06/2014, 14h06
  2. [XL-2010] Filtrer sur des contenus de cellules en vba
    Par drabmol dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2013, 13h38
  3. Réponses: 1
    Dernier message: 14/07/2011, 17h39
  4. [AC-2007] Ajuster automatiquement une impression sur 1 page
    Par Lionel69260 dans le forum IHM
    Réponses: 1
    Dernier message: 19/10/2010, 21h09
  5. Réponses: 2
    Dernier message: 24/02/2010, 09h26

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