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 FMX Delphi Discussion :

TGrid -> addObject (Header) puis Header-> addObject (TEdit)


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut TGrid -> addObject (Header) puis Header-> addObject (TEdit)
    Bonjour,

    je suis parti d'un code de Serge
    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
    function GetHeaderColors(Sender: TObject; var BackGroundColor,TextColor : TAlphaColor) : TBrush;
    var Header : THeader;
        HeaderItem : THeaderItem;
        aFMXObj : TFMXObject;
    begin
      // valeurs par défaut
      BackGroundColor:=0;
      TextColor:=TAlphaColors.Black;
      // recherche dans les styles 
      Header:=THeader((Sender as TGrid).FindStyleResource('header'));
      if Assigned(Header) then
        begin
          // obtention d'un élément 
          HeaderItem := Header.Items[1];
          // accès au style du texte
          AFMXObj:=THeaderItem(HeaderItem).FindStyleResource('Text');
          TextColor:=TText(AFMXObj).TextSettings.FontColor;
          // accès au style du fond
          AFMXObj:=THeaderItem(HeaderItem).FindStyleResource('background');
          Result:=TRectangle(AFMXObj).Fill;
          if Assigned(result) then
            begin
              if (Result.Kind=TBrushKind.Gradient)
              then begin
                  BackGroundColor:=Result.Gradient.InterpolateColor(50);
                  // de horizontal à vertical ? (Pas concluant) 
                  Result.Gradient.StartPosition.X:=1;
                  Result.Gradient.StartPosition.Y:=1;
              end
              else BackGroundColor:=Result.Color;
            end;
        end;
    end;
    Je cherche à implanter dans les entêtes de certaines colonnes d'un TGrid 2 images et un TEdit. J'ai pensé que addObject était la bonne approche. En voyant le code de Serge, j'ai un doute... renforcé par mes diverses tentatives. J'ai réglé le problème autrement disons par "~superposition" d'objets mais la fin ne justifie pas les moyens : ce code me déplaît totalement. C'est une méthode qui n'a pas lieu d'être avec un langage moderne ! J'avais compris que comme avec d'autres langages objet, il était possible d'inclure des objets dans des objets avec FireMonkey... et donc j'ai pensé à addObject...

    Quelqu'un peut-il me mettre sur une piste ?

    Merci. Cordialement. Gilles.

  2. #2
    Invité
    Invité(e)
    Par défaut
    OK... Une simple erreur de container: Ce n'est pas THeader qu'il faut utiliser mais THeaderItem
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Header: THeader;
      HeaderItem: THeaderItem;
      I: Integer;
      label1 : Tlabel;
    begin
      with GD do
      begin
        beginupdate;
        AddObject(TStringColumn.Create(self));
        AddObject(TStringColumn.Create(self));
        AddObject(TStringColumn.Create(self));
        AddObject(TStringColumn.Create(self));
     
        Header := THeader(FindStyleResource('header'));
        if Assigned(Header) then
          for I := 0 to Header.Count - 1 do
          begin
            HeaderItem := Header.Items[I];
              with HeaderItem do
              begin
                label1 :=  Tlabel.Create(Self);
                label1.Text := 'label1';
                AddObject(Label1);
              end;
          end;
        endupdate;
      end;
    end;
    Ceci dit, j'exècre cette assignation du Header >> Header := THeader(FindStyleResource('header')); Cela ne fait pas vraiment langage Objet. Il n'y a pas un autre moyen ?

    Cordialement. Gilles

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

Discussions similaires

  1. Echo puis header
    Par Anonyme1784 dans le forum Langage
    Réponses: 5
    Dernier message: 22/08/2017, 15h57
  2. afficher image puis texte (header)
    Par JokerAs dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2014, 18h29
  3. Réponses: 5
    Dernier message: 06/02/2008, 17h49
  4. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  5. [MFC] image dans un header de CListCtrl
    Par tut dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2003, 15h26

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