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 :

Déclarer une propriété TFont dans un composant [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 Déclarer une propriété TFont dans un composant
    Dans la dbGrid native de lazarus, il n'est pas possible de modifier la Font d'une ligne sélectionnée :
    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 TCustomDBGrid.DoPrepareCanvas(aCol, aRow: Integer;
      aState: TGridDrawState);
    var
      DataCol: Integer;
      IsSelected: boolean;
    begin
      if (ARow>=FixedRows) then begin
     
        if not DefaultDrawing then begin
          GetSelectedState(aState, IsSelected);
          if IsSelected then begin
            Canvas.Brush.Color := SelectedColor;
            Canvas.Font.Color := clHighlightText;
          end;
        end;
     
        if Assigned(OnPrepareCanvas) then begin
          DataCol := ColumnIndexFromGridColumn(aCol);
          if DataCol>=0 then
            OnPrepareCanvas(Self, DataCol, TColumn(Columns[DataCol]), aState);
        end;
     
      end;
    end;

    Je remplace donc dans ma propre dbGrid : Canvas.Font.Color := clHighlightText; par Canvas.Font:= FSelectedFont.

    Je déclare la nouvelle propriété ainsi :
    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
      TlzDbGrid = class(TDbGrid)
     
      private
        { Private declarations }
     
     
        FSelectedFont : TFont;
     
        procedure SetSelectedFont(Value: TFont);
        [...] 
      end;
     
    constructor TlzDbGrid.Create(AOwner: TComponent);
    var
      AGrid: TCustomGrid;
    begin
     
      inherited Create(AOwner);
     
      FSelectedFont := TFont.Create;
      FSelectedFont := aGrid.Font;  
      end;
    end;             
     
    destructor TlzDbGrid.Destroy;
    begin
      FreeThenNil(FSelectedFont);
      inherited Destroy;
    end; 
     
    procedure TlzDbGrid.SetSelectedFont(Value : Tfont);
    var
      AGrid: TCustomGrid;
    begin
       if Value<>nil then
        FSelectedFont.Assign(Value)
      else
        FSelectedFont := agrid.Font;
    end;
    Je passe par la Font d'une CustomGrid pour éviter un problème de nil si FSelectedFont n'est pas initialisée. Mais visiblement cela ne fonctionne pas. En plus j'ai un doute concernant l'affectation d'une TFont : FSelectedFont.Assign(Value) ou FSelectedFont := agrid.Font; ?

    Je suis preneur de toute aide. Merci. Gilles
    Dernière modification par Alcatîz ; 14/03/2019 à 21h13. Motif: préfixe

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

Discussions similaires

  1. Rendre une propriété visible dans VS2005
    Par frochard dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2007, 14h20
  2. Réponses: 23
    Dernier message: 12/10/2007, 14h38
  3. Réponses: 3
    Dernier message: 30/09/2006, 19h09
  4. Afficher une info bulle dans un composant AWT
    Par Marius_94 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 13/07/2006, 09h56
  5. [D6] PB ajout de propriétés font dans un composant
    Par Pill_S dans le forum Composants VCL
    Réponses: 11
    Dernier message: 25/10/2005, 20h16

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