Frage wegen Funktion wiederholen



  • Hallo,

    ich hab mal wieder ne Frage, ich hab folgende funktion programmiert:

    void __fastcall TForm_perönliche_daten::Edit1Change(TObject *Sender)
    {
            int Edit1;
    
            year - Edit1 == alter;
    
        if (alter < 18)
          {
            Edit2->Text = "unter 18";
           }
         else
         {
            if (alter> 70)
             {
              Edit2->Text = "über 70";
             }
            else
               {
                Edit2->Text = "zwischen 18-70";
                }
         }
    }
    

    jetzt hab ich folgendes Problem, wenn ich in das Edit1-Feld eine Zahl eingebe z.B. 1987 übernimmt er als Geburtsjahr die Zahl "1" und keine Weiter zahl, gibt es ein Befehl der öfters prüft was in dem Edit1-Feld steht und das dann neu berechnet? Schon mal Danke.
    **
    😕 Sebastian 😕**



  • Bin mir nicht sicher, bin Anfänger
    aber versuchs mal nicht in Edit1Change zu machen sondern z.b. wenn man nen Button klickt oder OnKeyPress auf Enter oder so.



  • Hallo,

    Ich würde dir raten erstmal ein Tutorial (Texteditortutorial aus der BCB-Hilfe, C++ Tutorial siehe oben) durchzuarbeiten. Hier stimmt einiges nicht.

    void __fastcall TForm_perönliche_daten::Edit1Change(TObject *Sender)
    {
            int Edit1; // Heißt dein Editfeld nicht Edit1? Hiermit überdeckst du es
    // eigentlich
            int Geburtsjahr = StrToIntDef(Edit1->Text, 0);
            if( Geburtsjahr == 0 ) 
            {
               Edit2->Text = "falsche Eingabe";
               return;
            } 
            year - Edit1 == alter; // == ist keine Zuweisung sondern ein Vergleich, für eine Zuweisung ist es verkehrtrum
    // eigentlich
        int alter = year - Geburtsjahr; // wenn year das aktuelle Jahr ist
    
        if (alter < 18)
        {
            Edit2->Text = "unter 18";
        }
        else
        {
           if (alter> 70)
           {
              Edit2->Text = "über 70";
           }
           else
           {
                Edit2->Text = "zwischen 18-70";
           }
         }
    }
    

    [edit]
    Stimmt, aus dem OnChange muß das auch noch raus. Ich pack sowas meistens in OnExit. Dazu vielleicht noch ein Fokuswechsel in OnKeypress wenn Key == VK_RETURN.


Anmelden zum Antworten