eigenen Dialog in SDI-Anwendung aufblenden lassen und Datenaustausch vornehmen



  • Hallo Leutz,

    ich hätte da mal wieder eine Frage. Ich bastel gerade an einer SDI-Anwendung herum. Die View-Klasse ist vom CFormView abgeleitet, so dass ich ähnlich zu einer Dialoganwendung einfach Buttons, Listenfelder u. ä. einfügen kann. Mittlerweile wird aber der Platz etwas eng ;), außerdem sieht es einfach besser aus, wenn nach Auswahl einer gewissen Aktion über das Menü ein Dialog eingeblendet wird, wo dann die entsprechenden Eingaben erfolgen.

    Meine Fragen sind:

    1. Wie kann ich für mein schon erstelltes Dialogfeld (inkl. der zugehörigen Klasse sowie den Membervariablen) im SDI zu gegebener Zeit aufpoppen lassen?

    2. Wie gestalte ich den Datenaustausch von der Dialogfeldklasse hin zu meinem CFormView?



  • Zu der 2. Frage, du kannst doch die Werte der Varaiblen ganz normal von der einen Klasse auf die andere Übertragen lasse.

    Zur ersten. Du kannst deinen Dialog z.B. so machen.

    if(irgendetwas)
    {
       CAuaswahldialog dlg; // Hier muss dein Dialog stehen.
       dlg.doModal(); // Dialog modal öffnen.
    }
    


  • Hmm, ist doch einfacher als ich dachte. Quasi genauso wie mit einem CFiledialog. Vielen Dank 😉



  • Ok, ich habe jetzt ein neues Problem. Ich habe das Dialogfeld erstellt, mit einer Klasse sowie Membervariablen versehen. Zusätzlich gebe ich dem Dialogfeld noch einen Pointer mit der Adresse meines aktuellen CDoc mit, damit er auf die dortigen Funktionen mit den aktuellen Daten zugreifen kann.

    Ich möchte das Dialogfeld in Abhängigkeit der bisherigen Eingaben gestalten.
    Hier ein kleines Codebeispiel aus meinem CView

    //Pointer auf das aktuelles Dokument aufrufen
    CSDI3Doc* p_aktuelles_Dokument = GetDocument();

    //Definition des Eingabedialogs für die Startwerte
    CDialog_Parameter_RE Dialog1;

    //Übergabe des Pointers auf das aktuelle Dokument
    Dialog1.Hand_over_Pointer_Document(p_aktuelles_Dokument);

    //Initialisieren des Dialogs
    Dialog1.Set_possible_Selections_in_CComboBox_AUSWAHL_MITTELACHSEN();

    //Anzeige des Dialogs
    Dialog1.DoModal();

    Probleme bekomme ich, bei der Memberfunktion Set_possible_Selections_in_CComboBox_AUSWAHL_MITTELACHSEN();
    Dort möchte ich die Auswahlmöglichkeiten einer ComboBox in dem Dialogfeld
    festlegen. Ich kann aber keine Veränderungen an der ComboBox vornehmen.
    Auch nach dem Aufruf von DoModal bekomme ich die Fehlermeldung.
    Wie kann ich mein Dialog aufblenden lassen und ihn dann noch bearbeiten, so dass der Nutzer gleich eine aktuelle Anzeige bekommt? 😕

    Hier noch der Code von der Funktion Set_possible_Selcetions...:

    //Ableitung aller Punkte die zum jeweiligen Umring gehören
    long Number_selected_Mittelachsen = P_m_Document>Get_Number_selected_Mittelachsen();

    //Löschen aller Werte in der CComboBox
    m_CComboBox_Auswahl_Mittelachse.ResetContent();

    for (long i=0;i<Number_selected_Mittelachsen;i++)
    {
    CString akt_Number;
    akt_Number.Format("%d",i);
    m_CComboBox_Auswahl_Mittelachse.AddString("Mittelachse " + akt_Number);
    }


Anmelden zum Antworten