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

 Delphi Discussion :

Barrer texte dans StringGrid


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut Barrer texte dans StringGrid
    Bonsoir,
    Je souhaite barrer le texte de toutes les cellules d'une ligne par click droit sur la ligne choisie.
    Cela fonctionne bien sauf que la cellule pointée ne se barre pas (les autres, pas de problème) !?!
    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
    19
    20
    21
    22
    23
    24
    25
    procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      i, j: integer;
    begin
     if Button = mbRight then
     begin
          j:=StringGrid1.Selection.Top;
          If MessageDlg('Disable row '+IntToStr(j),
          mtConfirmation, [mbYes, mbNo], 0, mbYes) =mrYes then
              begin
              With Stringgrid1 As TStringGrid Do
              With Canvas Do
                  begin
                  for i := 0 to 2 do
                      begin
                      Rect := CellRect  (i, StringGrid1.Selection.Top);
                      Font.Style := Font.Style + [fsStrikeOut];
                      FillRect(Rect);
                      DrawText(Canvas.Handle, PChar(Cells[i,j]), -1, Rect ,DT_CENTER );
                      end;
                  end;
              end;
     end;
    end;
    De plus je dois en premier lieu faire un click gauche avant de faire un click droit; comment éviter cela?
    Merci pour vos conseils!!!

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Au MouseDown du clic droit, la cellule ne doit pas encore être sélectionnée, expliquant ton besoin du clic gauche préalable, comme palliatif.
    Tu dessines le texte barré, mais au 1° rafraichissement, il perdra cet attribut car le dessin n'est pas géré dans le DrawCell...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Au MouseDown du clic droit, la cellule ne doit pas encore être sélectionnée, expliquant ton besoin du clic gauche préalable, comme palliatif.
    Tu dessines le texte barré, mais au 1° rafraichissement, il perdra cet attribut car le dessin n'est pas géré dans le DrawCell...
    Merci pour ta réponse rapide!
    Tu as une suggestion???

    Bonne soirée
    et merci pour tes idées!!!

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Tout dépend de ce que tu souhaites : désactiver une seule ligne au maximum, ou plusieurs éventuellement ?
    Dans tous les cas, il faut que tu gères le dessin dans le OnDrawCell pour barrer le texte de la ou des lignes sélectionnées.
    Et pour ceci, il faut trouver un moyen de stocker l'info que telle ou telle ligne est à barrer.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre habitué
    Homme Profil pro
    Owner
    Inscrit en
    Décembre 2004
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Owner
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2004
    Messages : 466
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Tout dépend de ce que tu souhaites : désactiver une seule ligne au maximum, ou plusieurs éventuellement ?
    Dans tous les cas, il faut que tu gères le dessin dans le OnDrawCell pour barrer le texte de la ou des lignes sélectionnées.
    Et pour ceci, il faut trouver un moyen de stocker l'info que telle ou telle ligne est à barrer.
    Pour stocker, je peux ajouter une colonne masquée qui mémorise l'état barré de la ligne...

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    C'est un moyen ; reste donc à détecter la ligne à barrer autrement qu'en détectant si elle est sélectionnée (MouseToCell ?), ou en la sélectionnant préalablement au MouseDown.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

Discussions similaires

  1. colorier une partie du texte dans un stringGrid
    Par senv33 dans le forum Débuter
    Réponses: 1
    Dernier message: 17/02/2010, 11h44
  2. Modifier la couleur du texte dans une cellule StringGrid
    Par Jotomaticen dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/09/2009, 22h42
  3. couleur du texte dans un StringGrid
    Par ludojojo dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/06/2008, 09h33
  4. charger fichier un texte dans un StringGrid
    Par winow dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/02/2008, 13h01
  5. formatage d'un text dans une cellule stringgrid en float
    Par iam dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2006, 15h05

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