Stunden auf mehrere Tage verteilen



  • Du könntest es doch einfach so lösen:

    int zuwend_h = Edit4->Text.ToIntDef(0); //Zuwendungsfähige Stunden verteilen auf StringGrid1->Cells[i+1][2] 
       for(int i=0; i<StringGrid1->ColCount-1; i++) 
       { 
         AnsiString Feld = StringGrid1->Cells[i+1][2]; 
         if( Feld == "XXX" )  continue; 
    
         int zufall = random(10); 
    
         if (zufall > zuwend_h)
         { 
           zufall = zuwend_h;
         }
    
         if (zuwend_h - zufall > 0)
         {
            zuwend_h -= zufall;     
         }
         else
         {
            zufall = 0;
         }
    
         StringGrid1->Cells[i+1][2] = zufall; 
       }
    
       if (zuwend_h > 0)
       {
         StringGrid1->Cells[i+1][2] = zuwend_h; 
       }
    

    Gruß Burkhard



  • @Burkhard :

    bevor du das nächste mal auf einen Beitrag antwortest, solltest du dir vorher mal den komplettet tread durchlesen, dann hätten dir drei dinge auffallen müssen:

    1. er will nur felder auffüllen die leer sind
    2. er will bereits per hand eingetragene stunden berücksichtigen
    3. es wurde von MFK bereits ein besserer vorschlag zwecks der verteilung gemacht

    also: erst lesen, dann schreiben. nicht andersrum!!!

    und erklär mir mal wozu du dich selber zitierst!!!! 🙄 🙄



  • Die Verteilung funktioniert ja auch soweit, hab auch jetzt die Änderung der zuwend_h Stunden hineinbekommen, hab einfach wenn sich das Edit4->Text ändert die Reihe leer gemacht!!! Aber was ist wenn der Nutzer einfach während der Laufzeit in dem StringGrid ändern will, da stehen ja dann aber schon alle stunden drin, also kann er keine hinzufügen!?

    Noch ne Frage zu einer Fehlermeldung:

    if(stunden>zuwend_h)
        {
          Application->MessageBox("Ihr Eingabe ist falsch, bitte korrigieren sie ihre Eingabe","Fehlermeldung",MB_OK);
        }
    

    Wenn der Nutzer dann auf OK klickt müßte die Reihe wieder leer erscheinen, dürfte dann aber nicht weiterrechnen, sondern auf eine erneute Eingabe gehen, wie mach ich das??



  • leere das feld nach der messagebox und mach die berechnug in dem else-zweig deiner if-bedingung



  • if(stunden>zuwend_h)
        {
          if((Application->MessageBox("Ihre eingegebene Stundenzahl ist größer als die Zahl der zuwendungsfähigen Stunden! ","Fehlermeldung",MB_OK)==IDOK))
          {
            for(int i=0;i<StringGrid1->ColCount-1;i++)
            {
              AnsiString Feld = StringGrid1->Cells[i+1][2];
              if(isNumber(Feld)==true)
              {
                 Feld="";
              }
            }
          }
        }
        else
        {
            zuwend_h -= stunden;
        }
    

    Wieso leert es mir trotzdem nicht die Felder wo etwas die Zahlen drin stehen???



  • Hallo,

    du löscht leider nur die Variable "Feld" aber nicht den Inhalt deiner Zelle !
    Jetzt überleg mal selbst wie du die Zelle löschen kannst.

    mit copy und paste lernste nix !

    mfg
    VergissEs



  • Sorry wenn ich frage wie ich das machen kann, immerhin wurde mir heute schon oft eine Anleitung gegeben wie ich was machen kann und ich habs selbst hinbekommen!!! Weiß selbst das ich durch Copy und Paste nichts lerne, aber falls es dir noch nicht aufgefallen ist, ich mach mir Gedanken über meine Probleme!!!



  • so funktionierts jetzt:

    if(stunden>zuwend_h)
        {
          if((Application->MessageBox("Ihre eingegebene Stundenzahl ist größer als die Zahl der zuwendungsfähigen Stunden! ","Fehlermeldung",MB_OK)==IDOK))
          {
            for(int i=0;i<StringGrid1->ColCount-1;i++)
            {
              AnsiString Feld = StringGrid1->Cells[i+1][2];
              if(isNumber(Feld)==true)
              {
                 tage++;
                 StringGrid1->Cells[i+1][2]="";
              }
            }
          }
        }
        else
        {
            zuwend_h -= stunden;
        }
    

    Wie könnte ich jetzt aber noch während der Laufzeit wenn der Benutzer seine eigenen Angaben in der Zeile 2 ändert, die bisher verteilten Werte löschen bzw. die ganze Zeile löschen und nochmal neu eingeben?



  • Frage hat sich erledigt, dass funktioniert so jetzt schon, weil wenn man zu den Werten noch einen neuen Wert hinzuschreibt, bringt es ja einen Fehler und dann geht das über den Fehler!!



  • Ich danke euch für eure Hilfe!!


Anmelden zum Antworten