Wie greife ich auf eine Variable von dem Dialogfelt A aus dem Dialogfeld B zu?
-
Ich bin im Dialogfeld B und möchte auf eine Variable im Dialogfeld A zugreifen!
Kann mir da wer helfen?ich habe schon die hilfe benutzt aber dort kom ich irgend wie nit weiter hab schon 3 verschiedene lösung versucht... aber es geht einfach nit....
vielleicht kann mir wer mit ganz einfachen worten erklähren wie ichs machen muß und ein beispiel dazu.
[ Dieser Beitrag wurde am 27.09.2002 um 04:10 Uhr von Joachim Gugenberger editiert. ]
-
Benutzt dich mal bitte die Suchfunktion oder schau in die FAQ.
-
ich weiß zwar nicht ob das Funktioniert aber hast du schonmal versucht deine Variable Global als extern zu deklarieren?
-
also ich habe das in den Faqs nicht gefunden und würde aber trotzdem gerne wissen wie das geht
-
Wenn du DLG B von DLG A aufrufst dann kannst du der Klasse B den Inhalt der Variable von Klasse A übergeben.
In Klasse B eine Publicvariable deklarieren.
class A
{
CString test;
}class B
{
CString testvonA;
}B dlgb;
dlgb.testvonA = test;
dlgb.DoModal();Oder du übergibst des this-zeiger von A
-
also ich habs jetztz so wie beschriebn gemacht... aber es geht nit
AfxMessageBox(m_SuchMember);
Memberverwalten_1 dlg;
//UpdateData(false);
dlg.S_Member = m_SuchMember;
dlg.DoModal();in m_SuchMember ist zwar der richtige wert drinnen aber er tut ihn nicht in dlg.S_Member......
der Wert von S_Member is nach wie vor leer....
-
Hast du die Member von Class b einem Control zugeordnet.
Dadurch wir der Variable ein Standardwert zugewiesen und dies geschieht beim erstellen des Dialogs.
Dh. es wird dein Wert überschrieben[ Dieser Beitrag wurde am 28.09.2002 um 14:16 Uhr von Unix-Tom editiert. ]
-
was mußich machen damit das nicht überschrieben wird?
-
public-Attribute in Klassen sind "pfui".
Bitte mit get...() und set...(), damit die OOP in C++ gewahrt bleibt.
-
aber auch wenn ich eine get methode einfüge wrd doch mein wert überschrieben.
oder nicht?
-
also egal was ich macht er merkt sich den inhalt der variable nicht... und ich kann das auch nit anders lösen ... kann ich den jemanden per email mein projekt schicken damit sich das jemadn ansehen kann? denn ich verzweifle hier schön lnagsam.
oder hat jemand noch ne idee wie ich es lösen kann von dirlogfeld B auf eine Variable in diwlogfeld zuzugreifen.... ??
[ Dieser Beitrag wurde am 29.09.2002 um 21:49 Uhr von Joachim Gugenberger editiert. ]
[ Dieser Beitrag wurde am 29.09.2002 um 22:22 Uhr von Joachim Gugenberger editiert. ]
-
Hi,
Also ich bin mir nicht sicher, aber soweit ich weiß, werden nicht-steuerelement-Variablen bei der Initialisierung des Dialogfelds nicht überschrieben. Das heißt du musst in Dialogfeld B nur eine neue Membervariable erstellen und diese mit dem was du brauchst füllen, bevor du den Dialog anzeigst. Z.b:CDialogA::Func()
{
CDialogB b;
b.m_Info = info; // info ist sagen wir mal die Information, die du von Dialog A nach Dialog B rüberkopieren willst
b.DoModal();
}Du könntest auch z.B. "this" an Dialog B übergeben, wenn du dort ne Membervariable vom Typ CDialog* deklariert hast, dann hättest du hinterher Zugriff auf alle public Funktionen und Member von Dialog A. Wichtig ist nur, dass diese Variablen in Dialog B keinem Steuerelement zugeordnet sind, da sie sonst überschrieben werden, wenn der Dialog initialisiert wird.
Mfg Georgi
[ Dieser Beitrag wurde am 29.09.2002 um 23:14 Uhr von DerGhost editiert. ]
-
naja also ich lese in dialog A eine zahl in ein eingabefeld ein und will in dialog B darauf zugreifen somit weiß ich nicht ob das ein steuerelement is oder nit
-
Hi!
Probiers mal so: Füg einfach eine Funktion in Dialogfeld B ein: z.B. Init(CDialog* pDialog). Die kannst du dann per Instanz in Dialog A aufrufen: m_myDialog.Init(this);
Nun kannst du normalerweise in Dialog B direkt auf die Edit Membervariable zugreifen, oder mit (CDialogA*)m_DialogA->... auf das Steuerelement zugreifen.mfg