Dialog



  • Hallo,

    ich mache gerade meine ersten Gehversuche mit weiteren Dialogfeldern.
    Auszug aus meinem Projekt:
    Im **Standarddialog werden einige Daten abgefragt. Aus diesen Daten soll eine Memo-Variable gefüllt werden.
    Ein neues Fenster wird aufgerufen, was eine Memofeld mit der oben genannten Variable (also dem Text) enthält.

    Folgende Probleme treten dabei auf:
    1. Ich habe oben #include "phpDlg.h" eingegeben und unten in der entsprechenden Funktion

    void CPHPCountdownDlg::Onausgeben() 
    {
    CphpDlg jo;
    jo.DoModal(); 
    }
    

    Der Dialog PHPDLG wird nicht aufgerufen!!!

    2. Kann ich von den Dialogfeld aus, wenn es denn dann mal funktionieren sollte *g*, einfach die Variable aufrufen, die ich im Startdialog deklariert und mit den Memodaten gefüllt habe?

    Danke
    Nico**



  • Hmm, der Aufruf ist eigentlich in Ordnung, aber der OnAusgeben-Notify ist mir vollkommen unbekannt, oder st das ein Notify auf ein Button? Wenn ja, dann ist eigentlich alles korrekt.
    Versuch das Mal zu debuggen... Und schau mal nach was DoModal zurückliefert.

    Die Übergabe würde ich so machen:

    void CPHPCountdownDlg::Onausgeben() 
    {
    CString strMemo="kqwgffhkwqgfjhqwgfhjqwfg";
    CphpDlg jo;
    jo.strMemo = strMemo;
    jo.DoModal(); 
    }
    

    Wobei ein CString strMemo in deinem phpDlg noch angelegt werden muss. Danach sollte die Übergabe kein Problem darsellen



  • Danke. Es ist ein Button! Debug mäckert nicht.
    Am Besten ich probier das in einem anderen Projekt nochmal, damit ich es genauer verstehe und mach es dann nochmal in diesem Projekt...

    Bezüglich des Memos (womit ich auch noch nie gearbeitet habe):
    1. Muss "str" davor?
    2. jo.strMemo = strMemo; -> Damit werden die Daten übergegeben?
    OK, danke. Muss ich die Variable dann in dem anderen Dialog (also
    in dessen Klasse neu anlegen, oder wird die direkt miterstellt
    beim Übergeben?

    Nico



  • 1. Muss "str" davor? <- Nee, eigentlich nicht, ich mach es immer, weil es ein string ist, und ein "i" bei int, usw...

    2. jo.strMemo = strMemo; -> Damit werden die Daten übergegeben? <- Jo, genau!

    OK, danke. Muss ich die Variable dann in dem anderen Dialog (also
    in dessen Klasse neu anlegen, oder wird die direkt miterstellt
    beim Übergeben? <- Kein Problemm, klar muß die variable vorhanden sein! Und zwar bei "public"!



  • die Variable muss Puclic sein, oder wie?
    Wie mach ich die Memo-Variable denn Public im Klassenassistenten?



  • Soweit ich weiß, kann ich Public/Privat nur auswählen, wenn ich die Member-Variablen über das Kontextmenü im Arbeitsbereich auf Klassen erstelle. Dann würde allerdings keine direkte Verbindung zu dem Memofeld bestehen, so dass ich (ich denk jetzt mal laut...) eine weitere Member-Variablen mit dem Klassenassistenten deklariere, welche den Wert von der zuvor erstellten Member-Variablen annimmt. Dann eine Funktion, die automatisch diesen Wert in das Memofeld einträgt. Das war's. ??? Geht das so?

    Und die Member-Variablen die ich im Arbeitsbereich (da im Kontextmenü) erstellt habe, müsste ich dann auch mit der oben angesprochenen Funktien (jo.Member-Variablen) ansprechen um die Daten zu übermitteln?

    😉
    Nico



  • Ähm, HÄ?????
    Was ist los???

    Ok, bitte 12487 Gänge zurückschalten, du denkst viel zu kompliziert.

    Du öffnest einfach die h-Datei von deinem Dialog und legst da eine neue Membervariable in den Classenteil an. Und zwar unter dem wort public.

    Am besen sowas hier:

    ...
    public:
    ...
    
    CString m_strMemo;
    
    ...
    


  • ooops... Man lernt nie aus. 😉 Besonders mit 15 nicht...

    Okay. Muss ich "public" irgendwie schließen?

    Wie ist es mit dem Rest den ich geschrieben habe? In Ordnung? 🙂



  • Hmm, gute frage, ich versuche immernoch meinen Kopf aus diese extremen Textschlinge zu befreien... 🙂

    Also wenn du schon ein Edit-Feld mit der Dazugehörigen CString Membervariable in diesem dialog hast, in welches du das Memo eintragen willst, kannst du natürlich auch das Benutzen...



  • aber die Member-Variablen für das Textfeld ist natürlich nicht public... ...Die muss ich dann mit der publishen verinden. Richtig?



  • Ach so, und public mußt du nicht wieder schliesen, es sei den du willst danach noch protected oder private - Variablen haben, dann schreibst du halt die schlüsselwörter dahin...



  • Hmm, ja bei showdialog oder initdialog, weis nicht genau wo es bei dir am besten ist... kannst du nicht einfach die Membervariable ins public setzen?



  • ok, dass neue Fenster zu öffnen, habe ich jetzt drauf 😉

    Jetzt mach ich mich an die Member-Variablen!



  • jetzt habe ich das Memo (RichEdit)-Feld eingefügt und plötzlich öffnet sich das Dialogfeld nicht mehr. Zur Überprüfung ob es wirklich daran liegt, habe ich es kurzer Hand entfernt und jetzt läufts wieder...
    Was ist das denn jetzt schon wieder?



  • Wieso nimmst du ein Richedit? Nimm doch einfach ein Multiline Edit.



  • also ein mehrzeiliges (einfaches) Eingabefeld?



  • Jep, ein engabefeld, in dessen Propherties du multiline setzt.



  • Hallo, okay - soweit funktioniert jetzt alles. Jetzt werde ich mich an das Problem mit den Variabeln begeben:

    CString <- Eingaben
    <- weitere Text

    Ich möchte die Eingaben in einen Längeren Text (HTML/PHP-Code) einbauen. Wenn ich Zeilenumbrüche in der deklaration eines CStrings mache, mäkelt er allerdings. Wie kann ich so lange Texte dort einbetten und meine Variabeln reinpacken (in PHP würde das etwa so aussehen:

    $var "blablabla
    
    blablablablabla
    
    .$x blablablabla
    
    blablabla .$y ";
    


  • Guten Nabend,

    ich bin schon wieder ein gutes Stück weiter, verstehe jedoch nicht, warum mein öffentliche Membervariable nicht funktioniert:

    In der Header-Datei des Startdialoges habe ich einfach mal in der Klasse folgenden Eintrag vorgenommen, da ich nicht wusste wo genau hin damit, müsste aber doch eigentlich gehen:

    public:
         CString m_code;
    

    In dem anderen Dialog (!!!) habe ich dann folgendes versucht:

    MessageBox(m_code);
    

    Keine Fehlermeldung für die Deklaration der öffentlichen Variabel. Von der Klasse aus kann ich auch auf sie zugreifen, aber nicht vom anderen Dialogfeld, also der anderen Klasse aus.

    Wo liegt der Fehler, bzw. was habe ich bei der Deklaration nicht beachtet?

    Gute 8
    Nico



  • @NetRider:
    Ich würde dir empfehlen da du dieses Buch hier mal liest, das beschäftigt sich mit all den Problemen die du hier schon geschildert hast und bietet einen sehr guten Einstieg in MFC!

    http://www.mut.de/media/buecher/VCPLUS6/data/start.htm


Anmelden zum Antworten