Ligne stringgrid

Résolu
killerdam Messages postés 21 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 26 mai 2006 - 8 mars 2005 à 23:59
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015 - 9 mars 2005 à 19:22
bonjour.

J ai créé une stringgrid, et je recherche un moyen de savoir si une
ligne a été entierement remplie (toutes les cases). Je n ai pas trouvé
de fonction prédéfinies dans delphi.

Sachant que le nombre de lignes remplies est aléatoire.

si vous avez une solution, ou si vou connaissez une fontion predéfinie, faite moi en part.

merci





killerdam

6 réponses

DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
9 mars 2005 à 08:15
Sinon, plus simple (en admettant que la colonne "0" est fixe càd en gris) càd FixedCols= 1:


<HR>
var
Ligne: integer; //ou byte si tu as moins de 256 lignes (max=255)
begin
Ligne:=1; {j'ai pris la ligne '1' en exemple càd la 2° ligne puisque la 1° s'appelle "0"}
if pos(#13#10#13#10,StringGrid1.Rows[Ligne].GetText)=0 then showmessage ('OK ! toutes les cases sont remplies') else showmessage ('Tout n''est pas rempli !');
end;

<HR>

Par contre s'il s'agit d'une grille sans colonne "0" fixe (colonne "0" non-grise") càd FixedCols=0 :


<HR>
var
Ligne: integer; //ou byte si tu as moins de 256 lignes (max =255)
begin
Ligne:=1; {j'ai pris la ligne '1' en exemple càd la 2° ligne puisque la 1° s'appelle "0"}
if (pos(#13#10#13#10,StringGrid1.Rows[Ligne].GetText)=0) and (pos(#13#10,StringGrid1.Rows[Ligne].GetText)<>1) then showmessage ('OK ! toutes les cases sont remplies') else showmessage ('Tout n''est pas rempli !');
end;

<HR>

ça devrait te suffire, sinon il y a encore la possibilité universelle qui gère FixedCols de 0 à sup à 0..je t'épargne le code...

N'oubliez pas de cliquer sur Réponse acceptée si c'est OK

DrJerome
3
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
9 mars 2005 à 07:04
<HR>

var
ligne: integer; //ou byte si tu as moins de 256 lignes (max=255)
begin
ligne:=1; {j'ai pris la ligne '1' en exemple càd la 2° ligne puisque la 1° s'appelle "0"}
if (StringReplace(StringGrid1.Rows[ligne].GetText,#13#10,'',[rfReplaceAll])='') then showmessage('Cette Ligne est vide') else showmessage('Cette Ligne contient du texte');
end;

<HR>


N'oubliez pas de cliquer sur Réponse acceptée si c'est OK

DrJerome...
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
9 mars 2005 à 07:08
pardon, je t'ai donné la solution pour savoir si c'était tout vide ou s'il y avait quelque chose dans une des cases de la ligne...j'avais lu en diagonale ta question

DrJerome
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
9 mars 2005 à 07:33
<HR>
var
vide:boolean;
Ligne,colonne:integer;
begin
vide:=false;
Ligne:=1; {exemple de la ligne 1}
for colonne:=1 to StringGrid1.ColCount-1 do {je démarre à colonne=1 en admettant que la colonne "0" est grisée c'àd que c'est une marge sinon tu démarres à "0"}
begin
if StringGrid1.Cells[colonne,Ligne]='' then
begin
vide:=true;
break;//pour arrêter la boucle "for".."to"..."do"
end;
end;
if vide then showmessage ('Tout n''est pas rempli dans la ligne') else showmessage (OK ! Toutes les cases sont remplies')
end;
<HR>

tu peux simplifier si tu n'aimes pas le break...ça donne :


<HR>
var
vide:boolean;
Ligne,colonne:integer;
begin
vide:=false;
Ligne:=1; {exemple de la ligne 1}
for colonne:=1 to StringGrid1.ColCount-1 do {je démarre à colonne=1 en admettant que la colonne "0" est grisée c'àd que c'est une marge sinon tu démarres à "0"}
if StringGrid1.Cells[colonne,Ligne]='' then
vide:=true;

if vide then showmessage ('Tout n''est pas rempli dans la ligne') else showmessage (OK ! Toutes les cases sont remplies')
end;

<HR>

Après, tu fais comme bon te semble


N'oubliez pas de cliquer sur Réponse acceptée si c'est OK

DrJerome...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
killerdam Messages postés 21 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 26 mai 2006
9 mars 2005 à 11:42
merci

je me suis servi de la version avec FixedCols=1 et ca marche tres bien , mais je ne comprends pas ce que signifie les termes
#13#10#13#10 dans la fonction pos. Je sais qu il représente le sous chaine.



killerdam
0
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
9 mars 2005 à 19:22
le #13#10 ce sont les deux caractères virtuels que l'on utilise par exemple dans un memo pour aller à la ligne. Dans un StringGrid ça sert à montrer qu'on passe à une autre case (cellule)

par exemple #13#10"un#13#10"deux"#13#10"trois"#13#10signifie :

un | deux | trois

donc quand je prens le texte d'une ligne, si je trouve un #13#10 collé à un autre #13#10 (càd #13#10#13#10) ...ça veut dire que la cellule est vide

PS : #13#10 peut se noter aussi : ^M^J

DrJerome
0
Rejoignez-nous