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

Langage Delphi Discussion :

Lancer une intruction sous condition ds un stringgrid/D7 per


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut Lancer une intruction sous condition ds un stringgrid/D7 per
    Bonjour,

    Dans un stringgrid, j'ai des lignes de couleures différentes des autres, rouge par exemple.

    Je voudrais supprimer toutes les lignes de couleures rouge dans le stringgrid en clickant sur un bouton.

    Merci d'avance.

    Jer.

  2. #2
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonsoir,

    si vous avez des lignes de couleur rouge dans un Tstringrid, c'est que vous les dessinez vous même d'après des conditions et que ces conditions restent vraies (sinon le mondre repaint ferait disparaitre la coloration).

    il suffit d'utiliser le même test dans le onclick du bouton pour supprimer les lignes en question.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Effectivement mes lignes sont dessinées.
    J'ai simplifié le code à un simple message pour tester, mais cela ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    procedure TFlistfact.Button5Click(Sender: TObject);
    var
      i:integer;
     
    begin
     
    for i:=1 to stringgrid1.RowCount-1 do
    begin
    if StringGrid1.Canvas.Brush.Color=clRed then
    showmessage('coucou');
    end;
    end;
    Merci d'avance pour votre aide.

    Jer

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Non, çà ne marchera pas.


    il faut reprendre le tableau RowsSelected de Waskol. le trier du plus petit vers le plus grand.

    le lire du plus grand vers le plus petit.
    pour chaque N°,
    mémoriser le N° de ligne,
    supprimer l'item du tableau
    Supprimer la ligne correspondante.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Je ne comprend pas, supprimer une ligne de mon tableau j'ai pas de problème, c'est juste vérifier la condition qu'une ligne de mon tableau est rouge???????

    Jer

  6. #6
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    vous voulez bien supprimer les lignes rouges ?


    si vous supprimer la ligne 4, il faut supprimer la condition qui fait que la ligne 4 est en rouge...

    après suppression de la ligne 4, toutes les lignes suivantes, vont se décaler vers le haut et la nouvelle ligne 4 va être en rouge si vous ne supprimez pas la condition associée.

  7. #7
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par bjl
    Non, çà ne marchera pas.


    il faut reprendre le tableau RowsSelected de Waskol. le trier du plus petit vers le plus grand.

    le lire du plus grand vers le plus petit.
    pour chaque N°,
    mémoriser le N° de ligne,
    supprimer l'item du tableau
    Supprimer la ligne correspondante.
    Bonne réponse...

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par jer64
    Je ne comprend pas, supprimer une ligne de mon tableau j'ai pas de problème, c'est juste vérifier la condition qu'une ligne de mon tableau est rouge???????

    Jer
    Dans le code que je vous ai proposé, la ligne est rouge si RowsSelected (le TIntegerList) contient le numéro de ligne, autrement dit si :
    RowsSelected.IndexOf(NumeroDeLigne)>-1 est vrai

    Donc vous n'avez pas besoin de tester la couleur de vos ligne mais leur présence dans RowsSelected

    Si vous supprimez une ligne (la première) du stringgrid sans toucher au contenu de RowsSelected, voilà ce qui se passe :
    Vos ligne dans le stringgrid remontent d'un cran, ce qui modifie leurs numéros de ligne dans le stringgrid (y compris les suivantes censée rester en rouge), mais dans RowSelected, les numéros restent inchangés
    Si vous commencez par la fin de votre stringgrid, ça marchera

    Voici une procedure pour votre besoin (n'oubliez pas la ligne "Type TPublicStrinGrid..." avant la procedure) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    type TPublicStringGrid = class(TStringGrid);
    procedure TForm1.SupprimeLignesRouges;
    var NumLigne,Index:integer;
    begin
      NumLigne:=StringGrid1.RowCount-1;
      while NumLigne>-1 do
      begin
         if RowsSelected.IndexOf(NumLigne)>-1
         then TPublicStringGrid(StringGrid1).DeleteRow(NumLigne);
         dec(NumLigne);
      end;
      RowsSelected.Clear;
    end;

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Merci beaucoup pour votre aide, le code de waskol marche parfaitement.

    Je n'avais pas tout compris sur le précédent code. Maintenant je pense avoir bien compris le principe.

    Merci encore.

    Jer.

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

Discussions similaires

  1. [AC-2007] ERREUR 0 : Lancer une macro sous condition avec "ExecuterMacro"
    Par Octo LPO dans le forum Macros Access
    Réponses: 2
    Dernier message: 01/02/2013, 15h31
  2. [XL-2003] lancer une fonction sous condition
    Par me_me dans le forum Excel
    Réponses: 4
    Dernier message: 25/10/2010, 17h00
  3. Afficher une image sous condition
    Par Chmog dans le forum BIRT
    Réponses: 5
    Dernier message: 28/07/2006, 12h11
  4. lancer une applic sous mac
    Par zais_ethael dans le forum Flash
    Réponses: 2
    Dernier message: 20/07/2006, 09h19
  5. [Débutant] Lancer une interface sous éclipse
    Par bonnefr dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 11/05/2004, 15h59

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