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.
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.
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.
Bonjour,
Effectivement mes lignes sont dessinées.
J'ai simplifié le code à un simple message pour tester, mais cela ne marche pas.
Merci d'avance pour votre aide.
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;
Jer
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.
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
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.
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 :Envoyé par jer64
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;
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager