Afficher mess dans memo par le StringGrid

shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 - 21 oct. 2009 à 11:05
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 - 21 oct. 2009 à 16:59
Hello
Alors voilà mon probléme du jour:

J'ai un stringGrid qui affiche des informations
Et je voudrais mettre un memo en dessous.
Quand par exemple il y a un '6' dans la case 3 du stringGrid je voudrais qui m'affiche un message dans le mémo.

Donc je pensais faire:
procedure TForm1.Memo2Change(Sender: TObject);
begin

if StringGrid2.Cells[3, noLigne] = '6' then
Begin..

Mais après je n'arrive pas à trouver une suite pouvais vous m'éclaircir ? :D

13 réponses

shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 11:50
J'ai essayer:

begin
if StringGrid2.Cells[3, noLigne] = '6' then
Begin
Memo2.Clear;
Memo2.SelText:='Ligne1 erreur';

end;

Mais il ne se passe rien du tout
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 12:00
//dans un bouton ..
begin
Memo2.Clear;
if StringGrid2.Cells[3, noLigne] = '6' then
Memo2.Text:='blablabla'
else
Memo2.Text:='htrhtrh';
end;

Il m'affiche toujours htrhtrh

ps: excuser pour le triple post mais il n'y a pas de fonction edit :/
0
JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 2
21 oct. 2009 à 13:12
Salut,

1- Tu comptes changer le contenu du Memo sur l'évènement 'Changement du Memo'??

2- Vu d'ici, ça ressemble à un simple mauvais indice (colonne n°3 => indice=2). Tu as regardé en Debug ce que te renvoie "StringGrid2.Cells[3, noLigne]"?
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 14:02
Je ne comprend pas ton (1) moi je le fais direct dans un bouton.

pour le (2) euh quand je test en debug sa me mets 3=3..

help :( ?
0

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

Posez votre question
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 14:31
Bon c'était le matin je devais pas être reveiller ^^
Bien entendu sa ne marché pas car je n'avais pas initialiser "noligne"
En mettant à 1
begin   
     noLigne := 1;
     Memo2.Clear;
     if StringGrid2.Cells[3, noLigne] = '6' then
        Memo2.Text:='blablabla'
     else
        Memo2.Text:='htrhtrh';


Je peut lire sur la premiére ligne !
Par contre comment faire pour acrémenter pour chercher sur chaque ligne ?

inc(noLigne); ?
0
JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 2
21 oct. 2009 à 14:38
quand je test en debug sa me mets 3=3



euh non.. je crois que tu n'as pas compris mon n°2 non plus...

Pour faire simple:
- Si tu veux tester ce qu'il y a dans la 3° colonne, c'est StringGrid2.Cells[2, noligne] qu'il faut prendre, parce que la numérotation commence à 0... donc
colonne n°3 => indice=2


Pour le debug, le + simple c'est que tu crées une variable locale String dans ta procédure pour stocker la valeur de la cellule, puis au lieu de:
if StringGrid2.Cells[3, noLigne] = '6' then

tu fais:
MaVar:= StringGrid2.Cells[3, noLigne];
if MaVar = '6' then


Ensuite tu mets un point d'arrêt sur la ligne du "if" et à l'exécution tu regardes ce qu'il y a dans MaVar...
0
JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 2
21 oct. 2009 à 14:40
inc(noLigne); ?


Voui!
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 14:47
Euh j'ai un soucis car maintenant je lui fait chercher un '8' mais qui est situer dans la 3éme ligne.

donc toujours avec mon code:

begin 
     noligne := 0;
     inc(noligne);
     Memo2.Clear;
     if StringGrid2.Cells[3, noligne] = '8' then
        Memo2.Text:=' vol n° : Erreur trop de ballon utilisé'
     else
        Memo2.Text:='Autre problème';


Le probléme c'est qu'il m'affiche Autre probléme, j'ai l'impression qu'il ne m'incrémente pas assez il arrive pas jusqu'a la 3éme ligne :(
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 15:12
Impec j'ai réussi ^^
begin    //memo

     Memo2.Clear;
     for noligne:=1 to StringGrid2.RowCount-1 do
     begin
     if StringGrid2.Cells[3, noligne] = '7' then
        Memo2.Text:= Memo2.Text + ' vol n° : Erreur trop de ballon utilisé'#13#10
     else
        Memo2.Text := Memo2.Text + 'vol n° : Autre problème'#13#10;
       end;



Et je vous embête une dernier fois
Je voudrais juste en faite après 'vol n°' mettre le numéro qui va bien alors je c'est pas comment m'y prendre.

???
Car soit je recopie la cellule n°1 où il y a marqué dedans 'vol n°1' ou soit j'incrémente :/

Comment faire? merci
0
JeremyLecouvert Messages postés 139 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 10 mai 2010 2
21 oct. 2009 à 16:13
Memo2.Text:= Memo2.Text + ' vol n°' + IntToStr(noligne) + ': Erreur trop de ballon utilisés'#13#10


Une dernière chose: pour ajouter des lignes dans le Memo, au lieu de Memo.Text, je te suggère d'utiliser plutôt Memo.Lines, ça te permet de gérer chaque ligne séparément. Par exemple pour ajouter une ligne:
Memo2.Lines.Add('vol n°' + IntToStr(noligne) + ': Erreur trop de ballon utilisés');

...Et pour modifier une ligne existante (par exemple la première):
Memo2.Lines[0]:= 'Une nouvelle valeur';


Bon courage!

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 16:24
ah non mince je suis obliger de réutiliser la cellule de mon tableau car c'est pas dans l'ordre:

Bon tableau ya :
Vol 4
vol 9
vol 12
vol 16

Et du coup avec ta technique sa fait
vol 1
vol 2
vol 3
vol 4

:/ Y a t'il un moyen de copier la cellule avant mon texte?
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 16:43
yeah j'ai trouvé :)
begin 

     Memo2.Clear;
     for noligne:=1 to StringGrid2.RowCount-1 do
     begin
     if StringGrid2.Cells[3, noligne] = '9' then
     Memo2.Text:= Memo2.Text + StringGrid2.Cells[0, noligne] + ': Erreur trop de ballon utilisés'#13#10
     else
     Memo2.Text := Memo2.Text + StringGrid2.Cells[0, noligne] + ': Autre problème'#13#10;


Voilà euh j'arrive à la fin peut être une dernière chose, si par exemple je voulais qu'au lieu de mettre 9 je veuille un chiffre supérieure à 8? Comment je peut lui dire ?
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
21 oct. 2009 à 16:59
Bon j'ai trouvé pour ceux qui serait interressé:
begin
     Memo2.Clear;
     for noligne:=1 to StringGrid2.RowCount-1 do
         begin
               if StrToIntDef(StringGrid2.Cells[3, noligne], 0) > 7 then
                    Memo2.Text:= Memo2.Text + StringGrid2.Cells[0, noligne] + ': Erreur trop de ballon utilisés'#13#10
               else if StringGrid2.Cells[4, noligne] <> 'On' then
                    Memo2.Text := Memo2.Text + StringGrid2.Cells[0, noligne] + ': Le processus n est pas activé'#13#10
               else
                    Memo2.Text := Memo2.Text + StringGrid2.Cells[0, noligne] + ': Autre problème'#13#10;
         end;

end;
end;


A une prochaine fois pour une question encore plus dur héhé

^^ Merci
0
Rejoignez-nous