Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2806 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  probleme à l'édition d'un TStringGrid

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme à l'édition d'un TStringGrid

n°1360221
gouarf
Posté le 05-05-2006 à 10:27:26  profilanswer
 

bonjour, j'ai un problème avec un TStringGrid, en effet a son edition, je n'arrive pas à limiter la longueur du code à un caractère, et de plus lorsque j'utilise la variable Key, le prog plante.. Help SVP...
 
Ci-joint une partie de mon code :

Code :
  1. void __fastcall TForm4::StringGrid1KeyPress(TObject *Sender, char &Key)
  2. {
  3.    int Key2;
  4.    Key2=Key;
  5.    int selec[2];
  6.    selec[1]=Form4->StringGrid1->Row;
  7.    selec[2]=Form4->StringGrid1->Col;
  8.    if((Key<30 && Key>40 )&& Key!='\b') Key=NULL; //n'accepte que les 0, les 1 et la touche effacer
  9.    if (Form4->StringGrid1->Cells[selec[2]][selec[1]]==' ') StringGrid1->Cells[selec[2]][selec[1]]=Key;


D'avance merci, Gouarf
 
[édité]
Voila mon nouveau Code, mais j'ai toujours mon probleme de limitation à un caractère, et si je vire les lignes (int Key2; Key2=Key) mon programme plante, je ne comprend vraiment pas.. Je ne me sert même pas de Key2. Pour le &Key, je sais pas trop le compilateur l'a posé, on dirait un pointeur.
 
Et maintenant j'aimerai savoir comment colorier une seule case de la Grille.
 
reD'avance merci !


Message édité par gouarf le 05-05-2006 à 16:58:18
mood
Publicité
Posté le 05-05-2006 à 10:27:26  profilanswer
 

n°1360495
gouarf
Posté le 05-05-2006 à 15:29:25  profilanswer
 

SVP !! Quelqu'un peut m'aider, au moins pour Key ?
Merci.

n°1360510
_darkalt3_
Proctopathe
Posté le 05-05-2006 à 15:44:46  profilanswer
 

c'est quoi ton "&" dans la signature de la méthode ?
 
met des balises [ code ] stp.

n°1360599
gouarf
Posté le 05-05-2006 à 17:07:50  profilanswer
 

J'ai édité mon premier message, à mon avis mon compilateur merde un peu.

n°1360619
Trap D
Posté le 05-05-2006 à 17:51:16  profilanswer
 

Tu es sûr du test
if ((Key<30 && Key>40 )&& Key!='\b') ????
 
Comment peux-tu avoir à la fois Key < 30 et Key > 40 ????

n°1360626
gouarf
Posté le 05-05-2006 à 18:01:47  profilanswer
 

Trap D a écrit :

Tu es sûr du test
if ((Key<30 && Key>40 )&& Key!='\b') ????
 
Comment peux-tu avoir à la fois Key < 30 et Key > 40 ????


Effectivement  je viens de changer le code, maintenant c'est :
 

Code :
  1. void __fastcall TForm4::StringGrid1KeyPress(TObject *Sender, char &Key)
  2. {
  3. int Key2;
  4. Key2=Key;
  5. int selec[2];
  6. selec[1]=Form4->StringGrid1->Row;
  7. selec[2]=Form4->StringGrid1->Col;
  8. if ( Key > 49 && Key < 58 ) {
  9. if (Form4->StringGrid1->Cells[selec[2]][selec[1]]==' ') StringGrid1->Cells[selec[2]][selec[1]]=Key;
  10. }
  11. /*if ( Key = VK_RETURN ) {
  12. StringGrid1->Cells[selec[2]][selec[1]]=' ';
  13. } */
  14. }


 
Mais les trois dernière ligne ne fonctionnent pas, ou empeche de fonctionnner les trois précédentes quand elles sont enlevées du commentaire..

n°1360691
Trap D
Posté le 05-05-2006 à 21:15:04  profilanswer
 

gouarf a écrit :

Effectivement  je viens de changer le code, maintenant c'est :
 

Code :
  1. void __fastcall TForm4::StringGrid1KeyPress(TObject *Sender, char &Key)
  2. {
  3. int Key2;
  4. Key2=Key;
  5. int selec[2];
  6. selec[1]=Form4->StringGrid1->Row;
  7. selec[2]=Form4->StringGrid1->Col;
  8. if ( Key > 49 && Key < 58 ) {
  9. if (Form4->StringGrid1->Cells[selec[2]][selec[1]]==' ') StringGrid1->Cells[selec[2]][selec[1]]=Key;
  10. }
  11. /*if ( Key = VK_RETURN ) {
  12. StringGrid1->Cells[selec[2]][selec[1]]=' ';
  13. } */
  14. }


 
Mais les trois dernière ligne ne fonctionnent pas, ou empeche de fonctionnner les trois précédentes quand elles sont enlevées du commentaire..


Evidemment, fais attention au test, c'est  

Code :
  1. if ( Key == VK_RETURN ) {
  2. StringGrid1->Cells[selec[2]][selec[1]]=" ";

A mon avis c'est " " et non pas ' ' mais je peux me tromper !

n°1360727
gouarf
Posté le 05-05-2006 à 22:53:23  profilanswer
 

Merci !

n°1360733
videaste95
je ne sais rien !
Posté le 05-05-2006 à 23:15:00  profilanswer
 

    Pour colorier une case, le plus simple est d'utiliser l'événement OnDrawCell et de remplir le rectangle « Rect » du canevas

Code :
  1. StringGrid1->Canvas->FillRect(Rect);

par exemple.

n°1360861
gouarf
Posté le 06-05-2006 à 13:29:01  profilanswer
 

Je regarde ca, merci du tuyau
[édité]
J'ai un probleme, ca ne marche pas, il me dit : Type mismatch in parameter 'Rect' (wanted 'const TRect &', got 'TRect(int,int,int,int)')
Je cherche...


Message édité par gouarf le 06-05-2006 à 13:44:16
mood
Publicité
Posté le 06-05-2006 à 13:29:01  profilanswer
 

n°1360904
gouarf
Posté le 06-05-2006 à 15:30:17  profilanswer
 

C'est bon, j'ai trouvé ! ca marche bien, merci beaucoup !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  probleme à l'édition d'un TStringGrid

 

Sujets relatifs
problème requèteproblème avec la fonction isset()
Probleme image "fixed"[Problème] Javascript et script SH
Problème de requête : Valeurs NULL et par défaut[résolu] Problème position de blocs avec IE
Problème INNER JOIN VBProblème d' exec et scripts shell
probleme de feuille résolu[Python][Qt]Problème d'affichage de tabs
Plus de sujets relatifs à : probleme à l'édition d'un TStringGrid


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR