Mehrzeiliges Ergebnis in Eingabefeld

silo

Grünschnabel
Hallo Leute, nachdem ihr mir so schnell geholfen habt nun eine neue Frage ;)

Von den Konsolenbeispielen kennt jeder:

Code:
cout << "Ausgabe + Zeilenumbruch \n";
cout << "Weiter gehts";

Ich habe einen Dialogbasierten Rechner und für längere Berechnungen soll er mir jeden Zwischenschritt ausgeben, ähnlich wie oben. Am liebsten, wenn das überhaupt möglich ist, in einem Eingabefeld, und um noch eins oben drauf zu setzen ist es auch möglich hinter berechnete Ergebnisse die Einheiten ranzuhängen?

So für Denkanstöße bereit und willig :-(

MfG
silo2001
 
Du kannst im Ressourceneditor den Stil des Editcontrols auf mehrzeilig bzw. multiline setzen (im Eigenschaftenfenster).
Vielleicht wäre es aber besser, direkt eine CListBox oder ein CListCtrl zu verwenden. Du hättest dann mehr Möglichkeiten, das Ausgabeformat zu steuern.
 
Ja, ich weiß, hab auch schon auf mehrzeilig, weiß auch das der Zeilenumbruch
anders als bei Konsolenbeispielen \r\n ist, aber ma n Beispiel wie ich mir des vorgestellt habe aber net geht :(
Code:
void CRechnerDlg::OnBerech() 
{
	
	UpdateData(TRUE);
			
		if ( m_optfeld == 0 )        
		{ 
		m_ergebnis=(m_betrag-m_rest)/m_dauer /r/n;
		m_ergebnis=(m_betrag-m_rest)/m_dauer ;
               } 

		.
                .
                .
             usw.

Auf das Listenfeld werd ich erstemal verzichten, wird aber der logische zweite Schritt sein, aber im Moment ist mir das so mit dem Eingabefeld wichtiger.... :p

MfG
silo2001
 
Code:
if ( m_optfeld == 0 )        
{ 
  m_ergebnis=(m_betrag-m_rest)/m_dauer /r/n;
  m_ergebnis=(m_betrag-m_rest)/m_dauer ;
}
Das ist kein sinnvoller Code. Du teilst hier dein Ergebnis zusätzlich durch zwei vermutlich unbekannte Variablen names r und n. "\r\n" musst du aber als String an die gewünschten Zeilenenden anhängen. Poste doch mal den richtigen Code, dann sehe ich ihn mir mal an. Das sollte nicht allzu knifflig sein.
 
Also, die betreffenden Stellen sehen so aus (die Formeln sind nicht so wichtig), denke wenn ich das Prinzip erkannt habe sollte das das kleinste Problem sein:

Code:
void CAbschreibungsrechnerDlg::OnBerech() 
{
	
	UpdateData(TRUE);
			
		if ( m_degressiv == 0 )        // 0 = degressiv 
		{ 
		m_ergebnis=(m_betrag-m_rest)/m_dauer;
		} 

		else if( m_degressiv == 1 )		// 1 = linear
		{ 
		m_ergebnis=(m_betrag-m_rest)/m_dauer;
		} 
		
		else				// wenn nix denn Fehlermeldung
		{ 
		AfxMessageBox("Bitte eine Berechnungsmethode wählen!");
		} 

	UpdateData(FALSE);

}
:)
Kurz zur Erklärung, Abschreibungen sind ja immer pro Monat und so soll er mir die monatlichen Abschreibungsbeträge ausgeben(je Monat),bei linearer Methode reicht mir ein Betrag da der sich ja net ändert. zuerst reicht es mir im Eingabefeld, und danach will ich es im Listenfeld machen. :rolleyes:

MfG
silo2001
 
Ach so, ich vermute, dass du dir m_ergebnis als Member vom Klassenassistenten hast einsetzen lassen, oder? Da benötigst du entweder einen CString oder ein CEdit, sonst wird das nix mit der Mehrzeiligkeit. Wenn du es so einrichtest, dass es ein CString ist, kannst du folgendmassen eine neue Zeile anhängen:
Code:
float resultat = 0.0f; //ersatzweise auch (m_betrag-m_rest)/m_dauer; oder so
CString temp;
temp.Format( "%f", resultat ); // Zahl umwandeln in Zeichenkette
temp += "\r\n"; // Zeilenumbruch an die Zeile drantun.
m_ergebnis += temp; // Zeile an Inhalt des Editfensters anhängen
Hoffentlich hilft dir das weiter.
 
Super, und wieder hast Du meine dankbarkeit, verstehe jetzt mehr als vorher, aber hier mein Prob:

Code:
                double zwisu = 0;
		double resultat = m_betrag *0.3; 
		CString temp;
		temp.Format( "%f", resultat ); // umwandeln
		while (m_dauer >= zwisu)
		{
			zwisu++;
			resultat = m_betrag - resultat;	
			temp += "\r\n";                     // Zeilenumbruch
		}
		
		temp += "Fertig \r\n"; 
		m_ergebnis += temp;
		}

Jetzt schreibt er mir das Resultat vor der while-Schleife hin und macht 10 leere Felder bevor er mir Fertig ausgibt ...:(
Wenn ich es weiß schlag ich mich bestimmt wegen der Einfachheit :-(

MfG
silo2001:-(

Edit:
HAT SICH ERLEDIGT UND ICH HABE MICH SCHON GESCHLAGEN
Danke für die Mühe .....
 
Zuletzt bearbeitet:
Code:
double zwisu = 0;
double resultat = m_betrag *0.3; 
CString temp;
while (m_dauer >= zwisu)
{
  temp.Format( "%f", resultat ); // umwandeln
  zwisu++;
  resultat = m_betrag - resultat;	
  temp += "\r\n";                     // Zeilenumbruch
  m_ergebnis += temp;
}

m_ergebnis += "Fertig \r\n";
Das musste in die Schleife rein, damit auch zehnmal was angehängt wird. ;)
Bei einigen Kleinigkeiten kann ich dir allerdings nicht helfen - zum Beispiel, temp.Format() da an der richtigen Stelle steht.
 
hey ich habe den code für die neue zeile mal ausprobiert aber bei mir erstellt es zwar die neue zeile, jedoch bleibt der curser in der ersten. hab ich nur das edit felfd falsch konfiguriert oder mache ich was anderes falsch?

mfg

Executer
 

Neue Beiträge

Zurück