Datenexport von Dialogfenster in Dokumentenklasse



  • Nicht wirklich. 😞

    Also, eine Möglichkeit wäre:
    Vom Frame aus die Funktion im Doc aufrufen.
    Die ruft den Dialog auf, danach kannst du das Array abfragen.



  • Nochmal zwei Schritte zurück. Du sagtest, das Array wird über Instanzen weitergegeben die sich kennen. Wie kann ich so was machen? Also wo musss ich was wie deklarieren?

    Damit meine Funktion zur Berechnung überhaupt aufgerufen wird, habe ich sich in eine Funktion der Klasse ChildFrm geschrieben. In meinen Doc steht jetzt nichts mehr drin 😞

    Nicht das wir aneinander vorbeireden - kann ich dir es vielleicht per mail schicken?

    cu



  • Naja, wenn die jetzt schon im Childframe steht, dann hast du es doch fast geschafft. 🙂

    Jetzt musst du nur noch einen Zeiger auf den Dialog der Funktion geben. Die kann dann den Zeiger verwenden um die Daten auszulesen.

    Also:

    CDateneingabe dlg;
    dlg.DoModal();
    Berechne(&dlg);
    


  • Ich habe einen Frame: In diesem Frame gibt es einen Punkt GPS, zu diesem noch zwei Unterpunkte (Eingabedialog öffnen und Streckenverlauf)

    Wenn ich nun Eingabedialog öffnen wähle, öffnet sich ein Dialogfenster. Darin werden Daten in ein CStringArray eingelesen. Anschließend wird der Dialog mit OK beendet.
    Die Daten sollen nun in einer weiteren Funktion berechnet und anschließend in dem geöffneten Dokument grafisch dargestellt werden. Zur besseren Übersichtlichkeit wollte ich die Funktion (Funktion trägt den Namen F_Berechnung) in die Dokumentenklasse schreiben, und die grafische Darstellung in die View-Klasse.
    Wähle ich also danach in diesem Frame unter GPS den Punkt Streckenverlauf, so muss diese Funktion (z.B OnStreckenverlauf) dann die Berechnungen durchführen. Sie muss also dann die zuvor in dem Dokument geschriebene Funktion F_Berechnungen aufrufen.

    Das mit dem doModal funktioniert also schon. Die Daten sind nun in meiner öffentlich Membervariable der Dialogklasse. Nun muss ich also Instanzen erzeugen, um auch aus der Dokumentenklasse daraufgreifen zu können.

    Ich hoffe die Situation jetzt nochmal eindeutig dargestellt zu haben 🙄



  • Nun muss ich also Instanzen erzeugen...

    du hast doch schon eine. 🙄

    Also, ich habe jetzt mal geguckt, GetActiveDocument funktioniert auch für eine MDI. Du kannst die Funktion also nutzen, mit der kommst du von Frame aus an dein Dokument.
    Schau mal, was man nettes in der MSDN dazu findet:

    CMDIChildWnd * pChild =
              ((CMDIFrameWnd*)(AfxGetApp()->m_pMainWnd))->MDIGetActive();
    
          if ( !pChild )
              return NULL;
    
          CDocument * pDoc = pChild->GetActiveDocument();
    
          if ( !pDoc )
             return NULL;
    
          // Fail if doc is of wrong kind
          if ( ! pDoc->IsKindOf( RUNTIME_CLASS(CMyDoc) ) )
             return NULL;
    
          return (CMyDoc *) pDoc;
    

    Denk mal in Ruhe drüber nach und wenn du nicht weiter weißt, schicks an mail@estartu.de
    Vor Morgen früh komme ich aber nicht dazu.

    🙂



  • Danke erstmal, werd mal ne Nacht drüber schlafen. Aber ich denke jetzt geht es in die richtige Richtung 🙂

    OK, dann vielleicht 😕 bis morgen

    cu


Anmelden zum Antworten