Dialogübergreifend auslesen



  • Hallo !

    Ich bin gerade dabei so einen Einstellungsdialog zu erstellen, der ein TabControl nutzt. Dafür muss ich einen zweiten Dialog nutzen und diesen dann "im" TabControl anzeigen. Auf dem Dialog befinden sich Checkboxes und Textboxes.

    Nun sind aber die Buttons OK/Abbrechen auf dem "Hauptdialog" auf dem das TabControl sitzt und in der Methode OnOk() wollte ich die Werte der Checkboxes und Textboxes auslesen. Allerdings können diese nicht einfach mit einem GetDlgItemText(..) ausgelesen werden. Weiß jemand wie ich dennoch an die Daten komme (über die Methode OnOk() im "Hauptdialog) ?

    Gruß Michael



  • Ich hoffe, ich habe dein problem richtig verstanden...

    // im Hauptdialog
    seconddialog d;
    d.DoModal();   // Dialog erstellen...
    
    d.values;      // auf die Werte der Steuerelemente (im public der seconddialog 
                   //Klasse deklariert) zugreifen
    

    hoffe das wars...



  • pinorrix schrieb:

    hoffe das wars...

    Leider nein oder ich verstehe nicht ganz.

    Also noch einmal. Ich bin dabei mir einen Einstellungsdialog zu erstellen mit Regsiterkarten. Für die Registerkarten brauche ich einen zweiten Dialog auf dem die Steuerelemente platziert sind (Checkboxes, Textboxes).
    Ich gehe dafür wie hier beschrieben vor ...

    Nun habe ich im Hauptdialog, auf dem das Registerkartensteuerelement liegt, drei Buttons (OK, Übernehmen, Abbrechen) und wollte in der Methode OnOk() dann die Werte der Steuerelemente des Dialogs, der für eine Registerkarte eingebunden wurde auslesen und speichern. Doch das klappt nicht.

    Kann mir jemand sagen wie ich an die Werte der Steuerelemente komme ?

    Gruß Michael



  • so kommst du an alles aus dem angewählten dialog:

    du fügst einfach die headerfile deines zieldialogfeldes in dein hauptdialogfeld ein (hast du wahrscheinlich schon gemacht denke ich). dann machst du einfach das hier:

    ((CAnderesDialogfeldDlg*)GetParent())->Funktion();
    

    anstatt 'Funktion()' kannst du natürlich auch jede belibige variable nehmen.



  • Red Skall schrieb:

    so kommst du an alles aus dem angewählten dialog: [...]

    Leider auch nicht.

    Ich habe jetzt allerdings eine Lösung gefunden. Und zwar wird in dem Dialog und TabControl "Tutorial" im Hauptdialog eine Membervariable der TabControl Klasse angelegt, die wiederum einen Pointer der Klasse CDialog beherbergt, der später mit dem Dialog initialisiert wird. (Ich hoffe das wurde verstanden 😉 ).
    Den CDialog Pointer habe ich jetzt als Public deklariert und kann nun bequem vom Hauptdialog aus auf alle Steuerelemente des Childdialogs zugreifen. 🙂

    P.S.: Trotzdem besten Dank für eure Anregungen. 🙂

    Gruß Michael



  • hmm, gut. dann weiß ich dann auch wies geht wenn ich das mal brauche :D;)



  • Hat jemand das TabCtrl wie Michael__W. eingefügt?
    Meine Registerkarten funktionieren zwar, aber ich krieg den Zustand meiner Checkboxen nicht im übergeordneten Dialog abgefragt.

    Ciao Mellsche

    PS: Hab's hingekriegt. Falls es jemanden interessiert, sieht ungefähr so aus:

    if(m_tbCtrl.m_tabellenSeite[0]->IsDlgButtonChecked(IDC_CHECK_HM8012)) Tue_irgendetwas()
    

    Dabei ist m_tbCtrl die Membervariable der TabCtrl-Klasse und m_tabellenSeite[0] der Pointer auf den gewünschten Child-Dialog.


Anmelden zum Antworten