Mehrere Eingabefelder mit WErt belegen



  • Hallo miteinander,

    ich habe folgendes Problem:
    Ich habe meinen Dialog mit 7 Edit-Boxen belegt. Diese nehmen float-Werte auf (über Wizard als Value-Variable vom Typ float deklariert). Gibt der Nutzer nun in das obere Feld einen Wert ein, sollen über eine Formel die weiteren Felder jeweils mit dem doppelten Wert belegt werden. Gibt es da einen eleganten Weg?

    Vielen Dank im Voraus!



  • du kannst auf das erste Edit ein on_change Message legen und darin dann die übrigen berechnen und setzten, dann wird bei jeder Änderung des ersten Edit die anderen neu berechnet.



  • "on-change" wird mit jedem Zeichen getriggert, oder?

    Falls ja dann könnte es Sinn machen es mit dem Verlieren des Focus zu triggern. Dann muss man nicht mit halbfertigem Input klarkommen.



  • Hi,

    ja über OnChange würde ich es sowieso machen. Ich bin mir halt nur bei der syntaktischen Umsetzung unsicher. Denn sowas wie:

    Edit1::OnChange()
    {
    for (i = 1; i < 8; i++)
    {
    m_Edit[i+1] = m_Edit[i]*2;
    }
    }

    geht ja nicht, oder?



  • na ja nicht so einfach, ich hab aber dafür mal eine andere Lösung

    void Change(float *edit1,float *edit2)
    {
    	*edit2 = *edit1*2;
    }
    
    void CDeinDlg::OnEnChangeEdit()
    {
    	UpdateData();
    	float *Array[]={&m_Edit1,&m_Edit2,&m_Edit3,&m_Edit4}; //Zeiger auf deine Edit Felder
    
    	for(int i=0;i<=2;i++) //Anzahl der Edit felder im Array - 1 als abbruchbedingung
    	{
    		Change(Array[i],Array[i+1]);
    	}
    	UpdateData(FALSE);
    }
    

    vieleicht bringt dich das bsichen weiter



  • Oh das sieht vielversprechend aus; werde ich gleich mal ausprobieren, vielen Dank !


Anmelden zum Antworten