Ligne stringgrid [Résolu]

killerdam 21 Messages postés jeudi 3 mars 2005Date d'inscription 26 mai 2006 Dernière intervention - 8 mars 2005 à 23:59 - Dernière réponse : DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention - 9 mars 2005 à 08:15
3
Merci
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

Merci DRJEROME 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de DRJEROME
DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention - 9 mars 2005 à 07:04
0
Merci
<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...
Commenter la réponse de DRJEROME
DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention - 9 mars 2005 à 07:08
0
Merci
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
Commenter la réponse de DRJEROME
DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention - 9 mars 2005 à 07:33
0
Merci
<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...
Commenter la réponse de DRJEROME
killerdam 21 Messages postés jeudi 3 mars 2005Date d'inscription 26 mai 2006 Dernière intervention - 9 mars 2005 à 11:42
0
Merci
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
Commenter la réponse de killerdam
DRJEROME 447 Messages postés jeudi 9 janvier 2003Date d'inscription 5 février 2015 Dernière intervention - 9 mars 2005 à 19:22
0
Merci
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
Commenter la réponse de DRJEROME

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.