Frage zur Software-Architektur



  • Hallo,

    habe mal ne Frage zur Software-Architektur.
    Ich möchte in meinem Programm einige Editfelder unterbringen, in denen ich einen String eingeben kann, den ich dann in einer Membervariablen einer Klasse abspeichere.
    In welcher Klasse/Datei soll ich nun diese Editfelder implementieren?
    Mache ich sowas in der Ansichtsklasse und in der Datei ...view.cpp?



  • Gehe auf Ressourcen->Dialog und klicke doppelt auf den Dialog in dem die Edit-Felder erscheinen sollen. Jetzt kannst Du diese im Hauptfenster platzieren und der Klassenassistent übernimmt die Implementierung.



  • Das ist mir schon klar wie das mit dem Assistenten funktioniert.
    Man kann aber auch beim Assistenten auswählen in welcher Klasse sie implementiert werden.
    Also ich vermute mal ich müsste die Fenster alle in CFormView unterbringen.
    Was ist mit den Methoden um die Strings ein- und auszulesen? Sollte ich diese Methoden auch in CFormView implementieren?



  • Diese Entscheidung übernimmt wiederum der Klassenassistent für dich.
    Wenn du zb einen OK Button hast und dafür ein ButtonPress-Ereignis erstellst, kannst du in dieser Ereignis-Methode die Inhalte der Edit-Felder verarbeiten.



  • Ich könnte aber doch eine eigene Klasse entwickeln zum I/O der Fenster in CFormView?
    Wäre das von der Architektur her nicht besser?



  • das rausholen des textes aus einem edit-feld benötigt genau eine zeile code. da halte ich eine eigene klasse für überdimensioniert.
    Anders sieht es mit der verarbeitung der texte aus. wenn hier mehrere funktionen nötig sind, wäre es sinnvoll dafür eine eigene klasse zu erstellen und die texte an diese zu übergeben.



  • Dafür gibts doch den View grade. 😉
    Das Doc macht dann den Teil zwischen dem View und der Datei/Datenbank.



  • Na okay dann kommt das jetzt mal alles in View.
    Für was genau ist denn Doc da?



  • Steht da doch: das kümmert sich um die Datenspeicherung.
    Bei mir sind die Recordsets im Doc, das Doc kümmert sich um alles, was die angeht und gibt sie fertig geladen dem View weiter oder füttert den gleich direkt mit Daten.



  • Okay. Ich stehe trotzdem etwas auf dem Schlauch. Mal sehen ob ich es jetzt kapiert habe.

    Ich erstelle also ein Editfeld, nennen wir die Membervariable mal m_editDescriptor.
    Jetzt möchte ich gerne einen String aus dem Editfeld einlesen.

    void CMyProgView::OnEnKillfocusDescriptor()				
    {
    	char szText [255] = "";
    	m_editDescriptor.GetLine(0, szText, 255);
    
             CMyProgDoc* pDoc; 
             pDoc->m_szDescriptor = szText;
    }
    

    Jetzt habe ich also den String aus m_editDescriptor ausgelesen und in der Variablen m_szDescriptor, die in Doc deklariert ist, abgespeichert.
    Ist das so richtig?



  • So kann man es machen.
    Und das Doc verwertet es nun weiter.



  • Jetzt kann ich also unter Doc den String bearbeiten?!?
    Supi!!

    Hab das jetzt mal ausprobiert, allerdings funktioniert es nicht, da ich die Meldung bekomme: Variabl is used without being defined
    Was hat das denn nun schon wieder zu bedeuten?


Log in to reply