Von Dialogfeld auf Membervariable im Document zugreifen



  • Hallo,

    gibt es eine Möglichkeit auf eine Membervariablen im Document einer SDI Anwendung zuzugreifen.

    Habe ein CObArray im Doc welches im Dialogfeld benötigt wird, um weitere Daten
    hinzufügen(hinzufügen ist möglich über eine Dialogklassenvariablen), aber wie
    kann ich überprüfen, ob das Datum schon in dem Array enthalten ist, bevor die Daten hinzugeügt werden.

    Hoffe auf eine Lösung.
    Danke
    Rico_32



  • Gib dem Dialog einen Zeiger auf das Array mit.



  • Gibt es dafür nicht extra die Methode CDocument* getDocument() ?



  • GetDocument ist nur für Views!



  • Hallo estartu_de!

    Du meinst ich soll einen Zeiger auf das Array mitgeben.

    im Doc. rufe ich das Dialogfeld auf.

    CDialogfeld m_dlg;
    m_dlg.DoModal();

    CObArray m_oaArray1; // Array im Doc Teil

    Im Dialogteil:

    CObArray m_oaArray2;

    Wie kann ich da einen Zeiger auf m_oaArray1 dem Dialogfeld mitgeben.

    Kannst Du mir bitte es näher erklären.

    Danke

    Rico_32



  • Du legst im Dialog eine Membervariable an: Vom Typ CObArray* und der Einfachheit halber public. Ich nenne sie jetzt mal m_pObArray.

    CDialogfeld m_dlg; 
    m_dlg.m_pObArray = &m_oaArray1;
    m_dlg.DoModal();
    

    Okay? 🙂

    Eine Set-Funktion kannst du ja bestimmt selber basteln...



  • Hi,
    du kannst einen Constructor für deinen Dlg schreiben, in dem der Zeiger gleich mitgegeben wird, dann musst du aber den Standardkonstruktor nochmal aufrufen, um dass mit dem CWnd* pParent=NULL klarzubekommen (schau einfach in den Standardkonstruktor). Einfacher wär:

    ////////Im Dlg
    CObArray* m_pObArray;
    
    void SetObArray(CObArray* pObArray){m_pObArray=pObArray;}
    
    ////////Im Doc
    CMyDialog dlg;
    dlg.SetObArray(&m_aoArray1);
    dlg.DoModal();
    

    Das müsste es sein.



  • Hallo zusammen,

    vielen Dank an estartu_de und CLoop.

    Es hat wunderbar geklappt.

    Mfg
    Rico_32


Anmelden zum Antworten