Übergabe zwischen 2 Dialogen



  • Hi,

    mal wieder mit ner Frage. Also, ich will eigentlich nur den Pfad eines Bildes aus einem Listenelement auf einen Button übergeben. Mein Problem ist nur die Übergabe zwischen den Dialogen. Hab da noch nicht so den durchblick wie da geht.

    Wie immer bin ich über Tips oder Links sehr dankbar.

    mfg blub 😕



  • Dlg2.szPath = szPath;
    

    szPath ist deklariert in Dialog 1 und Dialog 2



  • Hi,

    bin vieleicht jetzt doch etwas zu doof, aber ich frag nochmal nach.

    also, den String den ich übergeben will liest das programm aus einem vector aus. das funzt prima mit dem hier

    void Bilder::OnUebergabe() 
    {
    	m_Bildpfad = m_strImageDir + "\\" + m_VectorImageNames[m_nSelectedItem];
    	CEDruckerDlg dlg;
    	dlg.m_Bildpfad = m_Bildpfad;//hier soll die übergabe stattfinden
    	MessageBox(m_Bildpfad);//nur zur kontrolle
    }
    

    so nun hab ich in meinem header der hauptklasse auch ein CString der m_Bildpfad heißt und an den das ganze gehen soll. hat einer ne idee was ich falsch mache oder übersehe?



  • m_Bildpfad ist das die Membervariable des Buttons?

    Dann solltest du es mit UpdateData(FALSE); versuchen 😉



  • @blub was genau funktioniert denn nicht?



  • @haedfinger
    m_Bildpfad ist nicht die Membervariable von dem Button. Hab m_Bildlauf ist ein CString den ich im Header initialisiert habe.

    @Sovok
    also, innerhalb des 2.Dialoges wird der m_Bildpfad mit den richtigen Werten gefüllt. Diesen kram brauch ich aber in einem 2. Dialog und genau das ist mein Problem das ich das nicht rüberkrieg.

    blub 😕



  • sind die dialoge unabhängig voneinander?
    wo werden die erstellt?



  • Also jetzt nochmal, um zu sehen ob ich das richtig verstanden habe.
    Du hast einen Dialog mit einem Button.
    Wen der Geklickt wird, wird eine Variable mit einem Wert versehen. (m_Bildpfad). Dieser soll dann an dlg.m_Bildpfad (das du gerade erstellt hast) weitergegeben werden.
    Ich denke mal außerdem wird jetzt ein dialog geöffnet (dlg.create) auf welchem ein Button ist, richtig?
    Dieser Button soll die Aufschrift von (m_Bildpfad) bekommen.
    Wenn das alles so ist, brauchst du noch eine membervariable für den Buttton.

    Der Rest ist simpel.



  • Also der erste Dlg ist ein normal mit dem Assi erstellter und wird beim Start das Programmes aufgemacht/dargestellt.

    Den 2. Dlg rufe ich aus dem 1. mit dlg.doModal auf.

    Nachdem der ein bißchen Programmcode ausführt, z.B. laden von Bildern in ein Listenelement, will ich mir da Bilder auswählen und die dann per Button an den 1. Dialog übergeben.

    Und genau da setzt es bei mir irgendwie aus(im Programmm und im Kopf 😃 ).
    Mit dem String möcht ich nur den Pfad eines Bildes übergeben. Da die Liste dynamisch aufgefüllt wird, weiß ich ja leider net vorher wieviel und was es für ein Bild ist.

    Und deshalb dieser Weg, weil wenn ich den Pfad habe, kann ich das Bild im ersten Dialog ohne Probs wieder darstellen.

    Hoffe es ist so besser, erklären ist nicht grad meine starke Seite. 😞

    PS: Der 2. Dialog wird wieder gschloßen nachdem ich die Bilderpfade habe und keine weiteren auswählen will.



  • So habs dann doch hingekriegt, weiß zwar nicht ob das sauberer Programmierstill ist, aber es funktioniert 🙂

    also mal kurz mein Lösung:

    void CEDruckerDlg::OnHinzu() //Hinzufügen-Button öffnet Bildauswahl
    {
    	Bilder dlg;
    	dlg.DoModal();//öffnet 2. Dialog
    	m_Bildpfad= dlg.m_Bildpfad;//Übergabe des Wertes beim schließen
    	Bildzeichnen();
    }
    

    Und beim Rest wird nun etwas getrickst 😃

    Trotzdem danke, ihr habt mich auf die Idee gebracht.

    Bis zur nächsten Frage

    blub 😕


Anmelden zum Antworten