Implementierung



  • Ich will in desem click-Ereignis 2 Textboxen auslesen lassen und sodann soll nach dem click gerechnet und eine Linie graphisch dargestellt werden
    Ich arbeite mit Power++

    DANKE
    /***********Click-Ereignis ***********/

    WBool Form1::cb_1_Click( 
        WObject *           source,
        WEventData *        event )
    {
        WString                         text;
        WDouble                         Restschuld;
    
        text = Textbox_1->GetText();
        text = Textbox_2->GetText();
    
        Restschuld =(WInt) schuld+(schuld*JahresZins /100/12)-Monats_Rate;
    
        return TRUE;
    

    }



  • Woher hast du denn 'schuld', 'Jahreszins' und 'Monats_Rate'?

    Ansonsten: Du hast zwei Textboxen, die du auslesen willst - also brauchst du vermutlich auch zwei String-Variablen, in die du ihren Inhalt einlesen kannst. (oder du verarbeitest den Inhalt von Textbox1 weiter, bevor du ihn überschreibst)



  • Hm, ich sehe da nur eine Mitteilung, das jemand mit Power++ , zwei Textboxen auslesen will und eine Linie zeichnen will.

    Abgesehen davon das C++ keine Textboxen kennt, wo ist die Frage ?



  • Knuddlbaer schrieb:

    Hm, ich sehe da nur eine Mitteilung, das jemand mit Power++ , zwei Textboxen auslesen will und eine Linie zeichnen will.

    Abgesehen davon das C++ keine Textboxen kennt, wo ist die Frage ?

    WIE???? C++ KENNT KEINE TEXTBOXEN?????????????? 😮 😮 😮 😮 😮



  • Renate schrieb:

    Knuddlbaer schrieb:

    Hm, ich sehe da nur eine Mitteilung, das jemand mit Power++ , zwei Textboxen auslesen will und eine Linie zeichnen will.

    Abgesehen davon das C++ keine Textboxen kennt, wo ist die Frage ?

    WIE???? C++ KENNT KEINE TEXTBOXEN?????????????? 😮 😮 😮 😮 😮

    Nein, aber Power++ kennt Textboxen



  • CStoll schrieb:

    Woher hast du denn 'schuld', 'Jahreszins' und 'Monats_Rate'?

    Ansonsten: Du hast zwei Textboxen, die du auslesen willst - also brauchst du vermutlich auch zwei String-Variablen, in die du ihren Inhalt einlesen kannst. (oder du verarbeitest den Inhalt von Textbox1 weiter, bevor du ihn
    überschreibst)

    Hier ist der ges. code. Mit programmierten Werten wird die Graphik ja gezeichnet.
    Aber dann will ich eben in 2 Textboxen die Monats_Rate u. den Zinssatz eingeben und auf den click eine neue Graphik dazu ausgeben lassen.

    // Declarations added here will be included at the top of the .HPP file

    const WDouble   schuld = 10000;
    
    class __Form1_declspec Form1 : public __Form1_Base
    {
    
    	public:
    WDouble 	Restschuld;	// add your public instance data here
    	private:
    		// add your private instance data here
    		WInt		    nullX;          // Nullpunkt X-Achse
    		WInt			nullY;          // Nullpunkt Y-Achse
    		WInt			maxX;           // hoechster x-Wert
    		WInt			maxY;           // hoechster y-Wert
    		WDouble			maxSchuld;       // max. Schuld
    		WDouble			maxLaufzeit;    // max. Laufzeit   
    		WDouble			pixelProSchuld;       
    		WDouble			pixelProLaufzeit;       
    		WString			strLauf[20];     // Beschriftung Lauf
    		WString			strSchuld[20];   // Beschriftung Schuld
    
        protected:     // add your protected instance data here
    
       public:        void  zeichneGrafik( void );
    
        public:        WPoint setzePunkt( WDouble zeit, WDouble tiefe );
    
       public:        WDouble berechneZeit( WDouble schuld );
    
    };
    
    // Code added here will be included at the top of the .CPP file
    
    //  Include definitions for resources.
    #include "WRes.h"
    
    WBool Form1::Form1_Create(
      WObject *             source,
      WCreateEventData *    event )
    {
        maxSchuld = 10000;           // Hoechster  Wert in Schuld
        maxLaufzeit = 20;        // Hoechste Zeit in Laufzeit 
        nullX = 40;               // Nullpunkt links unten 
        nullY = GetHeight()-50; // in Bildschirmkoordinaten
       maxX = GetWidth()-100;  // Hoechste erlaubte Bilschirmkoordinaten 
        maxY = 40;
    
    /* Mindestgröße des Fensters festlegen, so daß es nie kleiner als      */
    /* am Anfang werden kann.                                              */
    
     SetMinimumTrackingSize( WSize(GetWidth(), GetHeight()) );
    
    /*--------- Die Einheiten Schuld und Laufzeit in Pixel umrechnen -------*/
    
     pixelProSchuld   =  (WDouble)( nullY - maxY ) / maxSchuld;
       pixelProLaufzeit = (WDouble)( maxX - nullX ) / maxLaufzeit;
    
    /*-------------------------- Zeichnen der Grafik ----------------------*/
    
        zeichneGrafik();
    
        return FALSE;
    }
    
    Form1::Form1()
    {
    }
    
    Form1::~Form1()
    {
    }
    
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /* Die Methode 'zeichneGrafik()' führt die grafischen Opertionen aus   */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    void Form1::zeichneGrafik( void )
    {
      WPen				stiftKoordinatenKreuz;
      WPen				stiftTeilstrich;
      WPen				stiftKurve;
      WInt				schuld, laufzeit;
      WDrawText			* zahl;
    
    /*------------------------- Stifte festlegen --------------------------*/
    
      stiftKoordinatenKreuz.Create( WColorBrightBlue);
    
      stiftTeilstrich.Create( WColorBlack,1,WPStyleDot );
    
      stiftKurve.Create( WColorBrightRed, 2 );                 // Stift Gitternetz 
    
    /*------------------------- Koordinatenkreuz zeichnen -----------------*/
    
      WDrawLine *linie = new WDrawLine( setzePunkt(0,0), setzePunkt(0,maxSchuld));  
      linie->SetPen(stiftKoordinatenKreuz);                           
      AddDrawPrimitive( linie );
      linie = new WDrawLine( setzePunkt(0,0), setzePunkt(maxLaufzeit,0)); 
      linie->SetPen(stiftKoordinatenKreuz);                           
      AddDrawPrimitive( linie );
    
    /*----------------------- Koordinatenkreuz beschriften ----------------*/
    
      WDrawText *xAchse = new WDrawText( setzePunkt(20.6, 0)," Laufzeit in Monaten " );  
      xAchse->SetFont(GetFont());
      AddDrawPrimitive( xAchse );
    
      WDrawText *yAchse = new WDrawText( setzePunkt(+1.3,10000)," Restschuld " );  
      yAchse->SetFont(GetFont());
      AddDrawPrimitive( yAchse );
    
    /*------------------ Zeitachse mit Laufzeitwerten beschriften. --------*/
      WInt i=0;
      for( laufzeit= 0; laufzeit < maxLaufzeit; laufzeit++ )
      {
    	zahl = new WDrawText((WPoint) setzePunkt(laufzeit,-1), " ");
    	strLauf[i].Sprintf(" %d ", laufzeit);
    
    	//zahl->SetNumCharacters( strSec[i].GetLength() );
    
    	zahl->SetText(strLauf[i]);
    	zahl->SetFont(GetFont());
    	AddDrawPrimitive( zahl );
        i++;
      }
    
    /*--------------- Die Tiefenachse mit Schuldwerten beschriften. --------*/
      i=0;
      for( schuld=0; schuld < maxSchuld; schuld+=1000)
      {
    	zahl = new WDrawText((WPoint) setzePunkt(-0.4, schuld+2), "");
    	strSchuld[i].Sprintf(" %d ", schuld);
    
    	zahl->SetText(strSchuld[i]);
    	zahl->SetFont(GetFont());
    	AddDrawPrimitive( zahl );
        i++;
      }
    
    /*---------------  Teilstriche für die Laufzeit einzeichnen -----------*/
    
      for( laufzeit =1; laufzeit < maxLaufzeit; laufzeit++)
      {
    
    	WDrawLine *teilstrich = new WDrawLine( setzePunkt(laufzeit,0), setzePunkt(laufzeit,maxSchuld)); 
    	teilstrich->SetPen(stiftTeilstrich);                           
    	AddDrawPrimitive( teilstrich );
      }
    
    /*---------------  Teilstriche für die Schuld einzeichnen --------------*/
    
      for( schuld=1000; schuld < maxSchuld; schuld+=1000 )
      {
    	WDrawLine *teilstrich = new WDrawLine(setzePunkt(0,schuld), setzePunkt(maxLaufzeit,schuld)); 
    	teilstrich->SetPen(stiftTeilstrich);                           
    	AddDrawPrimitive( teilstrich );
      }
    
    /*------------ Kurve für die Tiefe über der Wartezeit zeichnen --------*/
    WDouble zeit;
    WDouble schuld_neu;
      for( zeit=0; zeit < maxLaufzeit;  zeit += 1.0/ 20.50 )
    
      {
          schuld_neu = berechneZeit(schuld);
          WDrawLine *kurve = new WDrawLine(setzePunkt(zeit,schuld),setzePunkt(zeit,schuld_neu+1));
    
    	kurve->SetPen(stiftKurve); 
    
    	AddDrawPrimitive( kurve );
        schuld = schuld_neu;
    
      }
    
    	SetBackColor( WColorBrightCyan );
    }
    
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /* Die Methode 'setzePunkt()' rechnet die übergebenen Koordinaten      */
    /*  um und gibt diese in  einem WPoint Objekt zurück                   */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WPoint Form1::setzePunkt( WDouble zeit, WDouble tiefe  )
    {
      WPoint                                    punkt;
    
      punkt.x =(WInt) (nullX + zeit * pixelProLaufzeit);  // Koordinaten für die Laufzeit
    
     punkt.y = (WInt) (nullY - tiefe  * pixelProSchuld); // Koordinaten für die Schuld
    
      return punkt;
    }
    
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /*      Die Methode 'berechneZeit()' ermittelt die Zeit für eine       */
    /*                           vorgegebene schuld                         */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WDouble Form1::berechneZeit( WDouble schuld )
    {
    	WDouble                                 Restschuld;
        WDouble         Monats_Rate = 80;
       WDouble         JahresZins  = 4;
      Restschuld =(WInt) schuld+(schuld*JahresZins /100/12)-Monats_Rate;
    
    	return Restschuld;
    }
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /*          Click-Ereignis                                             */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
     WBool Form1::cb_1_Click( 
        WObject *           source,
        WEventData *        event )
    {
        WString                         text;
        WDouble                         Restschuld;
        WDouble         Monats_Rate = 80;
       WDouble         JahresZins  = 4;
        text = Textbox_1->GetText();
        text = Textbox_2->GetText();
    
        Restschuld =(WInt) schuld+(schuld*JahresZins /100/12)-Monats_Rate;
    
        return TRUE;
    

    }



  • lök schrieb:

    Renate schrieb:

    Knuddlbaer schrieb:

    Hm, ich sehe da nur eine Mitteilung, das jemand mit Power++ , zwei Textboxen auslesen will und eine Linie zeichnen will.

    Abgesehen davon das C++ keine Textboxen kennt, wo ist die Frage ?

    WIE???? C++ KENNT KEINE TEXTBOXEN?????????????? 😮 😮 😮 😮 😮

    Nein, aber Power++ kennt Textboxen

    häääääää????? 😕 😕 😕



  • Dazu mußt du den Inhalt der Textfelder erstmal in Zahlen umwandeln (siehe dazu die FAQ: "Einmal String nach Zahl und zurück"), damit du mit ihnen rechnen kannst.

    PS: Wie du die Grafik darstellen kannst, hängt nicht mehr mit ANSI C++ zusammen - da fragst du mal das Handbuch deines Compilers.



  • Renate schrieb:

    lök schrieb:

    Renate schrieb:

    Knuddlbaer schrieb:

    Hm, ich sehe da nur eine Mitteilung, das jemand mit Power++ , zwei Textboxen auslesen will und eine Linie zeichnen will.

    Abgesehen davon das C++ keine Textboxen kennt, wo ist die Frage ?

    WIE???? C++ KENNT KEINE TEXTBOXEN?????????????? 😮 😮 😮 😮 😮

    Nein, aber Power++ kennt Textboxen

    häääääää????? 😕 😕 😕

    Ist so. 😉
    "TextBox" mag in einer bestimmten Entwicklungsumgebung definiert sein, aber der C++-Sprachstandard kennt ein derartiges Konstrukt nicht. Der definiert lediglich Ein-/Ausgaben für Text ( std::cin u. std::cout ) ...

    Gruß,

    Simon2.


Anmelden zum Antworten