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 :

Tutoriel sur le StringGrid : méthode onDrawCell [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Par défaut Tutoriel sur le StringGrid : méthode onDrawCell
    Bonjour,

    Je suis en train d'étudier l'excellent tutoriel de Dimanche2003 sur les StringGrid.

    Dans le chapitre V.2, j'ai un souci avec la méthode onDrawCell nommée "DessinGrille".

    Elle a la fonction de colorer en jaune le fond de la case survolée par la souris.
    Elle le fait bien, mais le souci est que tout est effacé dans la cellule sélectionnée. Tout passe en jaune.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TMonFormulaire.DessinGrille(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    begin
    With MaGrille.Canvas do
       begin
            If ((aCol=sCol) And (aRow=sLig)) Then
              begin
                 Brush.Color:=clYellow;
                 FillRect(aRect);
              end;
        end;
    end;
    J'ai modifié la méthode décrite dans le tutoriel, sinon aucune cellule n'était remplie.

    Et là je sèche.
    j'ai parcouru de nouveau le tutoriel mais sans résultat.

    Merci d'avance,

    Jazz

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Par défaut
    J'ai trouvé ce qui semble une solution.
    Mais je ne sais pas si cela est la réponse.
    Cela a le mérite de fonctionner

    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
     
    procedure TMonFormulaire.DessinGrille(Sender: TObject; aCol, aRow: integer;
      aRect: TRect; aState: TGridDrawState);
    begin
      with MaGrille.Canvas do
      begin
        if ((aCol = sCol) and (aRow = sLig)) then
        begin
          Brush.Color := clYellow;
          FillRect(aRect);
          Font.Color := clDefault;
          TextOut(aRect.Left, aRect.Top, Magrille.Cells[aCol, aRow]);
        end;
      end;
    end;
    Jazz

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Autre possibilité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TMonFormulaire.DessinGrille(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    begin
        If ((aCol=sCol) And (aRow=sLig)) Then
        begin
            MaGrille.Canvas.Brush.Color := clYellow;
            MaGrille.DefaultDrawCell(aCol, aRow, aRect, aState);
        end;
    end;

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 68
    Par défaut
    Merci Philippe


    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Autre possibilité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TMonFormulaire.DessinGrille(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
    begin
        If ((aCol=sCol) And (aRow=sLig)) Then
        begin
            MaGrille.Canvas.Brush.Color := clYellow;
            MaGrille.DefaultDrawCell(aCol, aRow, aRect, aState);
        end;
    end;
    Je viens d'essayer ton code et c'est nikel.
    Et cela semble aussi un poil plus rapide.

    Je vais pouvoir continuer l'esprit plus tranquille le fameux tutoriel de Dimanche2003

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

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Réponses: 3
    Dernier message: 24/11/2003, 17h41
  3. F.A.Q, Doc, cours, tutoriels sur JBuilder
    Par Ricky81 dans le forum JBuilder
    Réponses: 0
    Dernier message: 14/03/2002, 15h28

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