[ Résolu ][ Borland ] Humilié par la portée de mes objets :whistle:

Humilié par la portée de mes objets :whistle: [ Résolu ][ Borland ] - C++ - Programmation

Marsh Posté le 11-03-2004 à 21:20:12    

Bon, le but de la manip : effacer un cercle dessiné précédemment sur un TImage.Pour celà je réutilise la formule pour tracer mon cercle avec cette fois Pen->Color=clWhite (ou un truc du genre).
Comment je procède :
Le centre du cercle est sauvé dans cooxy, variable(TPoint)de la classe coordonnees.
 
Lorsque j'arrive sur mon évènement onclick de mon TImage pour tracer mon cercle, la sauvegarde des coordonnées se passe correctement.
 
En revanche, dès que je sors de onclick pour y réentrer afin d'effacer le cercle, je rapelle cooxy et je me tape les coordonnées par défaut(constructeur) à savoir -1;-1 à la place de celle sauvegardée avant :D.
 
 

Code :
  1. class coordonnees
  2. {
  3.         private:
  4.                 char nature[6];
  5.                 TPoint origine;
  6.                 TPoint destination;
  7.                 TPoint intermediaire[3];
  8.         public:
  9.                 coordonnees()
  10.                 {
  11.                         strcpy(nature,"indef" );
  12.                         nature[5]='\0';
  13.                         origine.x=origine.y=destination.x=destination.y=-1;
  14.                         intermediaire[0].x=intermediaire[0].y=intermediaire[1].x=intermediaire[1].y=intermediaire[2].x=intermediaire[2].y=-1;
  15.                 };
  16.                 ~coordonnees(void){};
  17.                 void savexy(int action,TPoint inter[3]);
  18.                 TPoint savexy(char natur[6],TPoint origin);
  19.                 void savexy(TPoint dest);
  20.                 TPoint find(TPoint origin);
  21. };


 

Code :
  1. /*On click*/
  2. if(couleur==clWhite)   /*erase*/
  3.         {
  4.                 GetCursorPos(&centre);
  5.      centre.x=centre.x-(Form1->Left)-(Form1->EspaceTravail->Left)-4;   // Calcul des coordonnées
  6.                 centre.y=centre.y-(Form1->Top)-(Form1->EspaceTravail->Top)-30;
  7. centre=cooxy.find(centre);
  8.         }
  9.         if (couleur==clBlue)      /*trace*/   
  10.         {
  11.                 GetCursorPos(&centre);
  12.                 centre.x=centre.x-(Form1->Left)-(Form1->EspaceTravail->Left)-4;   // Calcul des coordonnées
  13.                 centre.y=centre.y-(Form1->Top)-(Form1->EspaceTravail->Top)-30;    // souris sur le canvas
  14.                 centre=cooxy.savexy(nature,centre);
  15.         }


 

Code :
  1. TPoint coordonnees::savexy(char natur[6],TPoint origin)
  2. {
  3.         strcpy(nature,natur);
  4.         origin.x=origine.x; 
  5.         origin.y=origine.y;
  6.         return origin;
  7. }
  8. TPoint coordonnees::find(TPoint origin)
  9. {
  10. /*test circle range*/
  11.         if (origin.x<=origine.x+10 && origin.x>=origine.x-10)
  12.         {
  13.                 if (origin.y<=origine.y+10 && origin.y>=origine.y-10)
  14.                 {
  15.                        origin.x=origine.x;
  16.                        origin.y=origine.y;
  17.                        return origin;
  18.                 }
  19.                 else
  20.                 {
  21.                         /*a définir*/
  22.                 }
  23.         }
  24.         else
  25.         {
  26.                 /*a definir*/
  27.         }
  28.        
  29. }
  30. -----
  31. coordonnees cooxy;


 
 
Merci de votre lecture (et de votre courage, cochon inside :D)
 
 
 
RésoluSujet : [ Borland ] Bug à l'affichage de l'interface ???
Voila, le problème est simple, je suis en plein dans le développement d'une appli et plus moyen d'ajouter un objet.
 
Je m'explique: je veux ajouter un bouton, je compile et tout passe niquel sauf que le bouton n'apparaît pas sur l'interface utilisateur.
 
J'ai verifié et forcé visible=true mais pas moyen.
 
Alors j'ai tenté de redimensionner ma TImage qui elle est présente depuis le début. Et bien elle est redimensionnée sous borland mais dès que je compile, elle reprends sa taille précédente sur l'interface utilisateur.
Pourtout je ne touche nulle part à ses attributs de taille en dehors de l'inspecteur d'objet.
 
Donc je me retrouve avec mon interface précédente quoi qu'il arrive...
 
Y à une case du genre vérouiller TForm ou quoi :??:


Message édité par jeoff le 12-03-2004 à 15:32:05
Reply

Marsh Posté le 11-03-2004 à 21:20:12   

Reply

Marsh Posté le 11-03-2004 à 21:33:16    

as tu recréé un fichier éxécutable?? car il se peut que borland ne prenne pas en compte tes modifications ,
pour être sur il te faut refaire un éxécutable.
A titre d'information pour recompiler ton programme tu dois aller dans :
Projet/construite tous les projets.
 
voilà en espérant avoir répondu positivement à ta question.


Message édité par fineness le 11-03-2004 à 21:33:47
Reply

Marsh Posté le 11-03-2004 à 23:38:23    

Merci, c'était bien ça. [:ddr555] J'y penserai la prochaine fois ;)

Reply

Marsh Posté le 12-03-2004 à 13:36:21    

:cry: help :cry: j'ai encore perdu 2h dessus ce matin sans rien trouver :'(

Reply

Marsh Posté le 12-03-2004 à 15:30:18    

Autant en C j'aurai trouvé rapidement mais avec les objets en C++, je galère de trop.
La solution, qui m'est venue en faisant 10 min de digestion ds mon lit, c'est la portée des variables.
Fallait passer mon objet de type coordonnees par adresse sinon ca fait une copie locale et quand on sort de la fonction, ayé ya plus rien :fou: [:tapai] :'(
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed