MemberVariablenUebergabe
-
Eine komplizierte Frage mal wieder:
1. Ich habe ein Dialog, aus dem man einen neuen Oeffnen kann, wo man Konstanten eingibt .. diese moechte ich an den ersten uebergeben, da die Konstanten verschieden sind, aber die rechnung fuer den ersten Dialog immer die selbe ist ..d.h. Nur Uebergabe Konstanten ueber den zweiten Dialog moeglich machen .. (Fortsetzen dann in der jeweiligen Funktion des ersten Dialoges wieder)..
-
Hallo geophysic_lady,
irgendwo in Deinem ersten Dialog:CDein2.Dialog Dialog2; Dialog2.UebergebeKonstante (Deine Konstanten); if (Dialog2.DoModal () == IDOK) { DeineKonstante1imDialog = Dialog2.HoleKonstante1 (); DeineKonstante2imDialog = Dialog2.HoleKonstante2 ();
Ich hoffe das Hilft Dir weiter, ansonsten ... weiter Fragen!
Gruß
Christian
-
CKonstantenDlg KonstantenDlg;
KonstantenDlg (m_konst,m_konst1);
if (KonstantenDlg.DoModal () == IDOK) {
m_konst = KonstantenDlg ();
m_konst1 = KonstantenDlg ();}Mit Konstanten DLG (Dialog 2)
steht nun in Dialog 1, wobei die Funktionen vor () fehlen???
Der Dialog 2 besteht nur aus den beiden Eingabefeldern (Uebergabe intern m_konst und m_konst1 (Member Variablen... (double von 0 bis 100) mehr nicht, d.h. wenn man auf OK klickt, dann sollen diese an den Dialog 1 uebergeben werden und dann in die Funktion nach dem Aufruf oben kommen.. also dort weitermachen..
Was schreibe ich somit in Dialog2?? Zur uebergabe??
Muss ich da eine Funktion kreiren??? In OK steht nur, zur Zeit CDialog1Dlg dlg; dlg.DOModal(); (wobei das ja geaendert werden muss)..Wie kann ich die Membervariablen (m_konst und m_konst 1 aus Dialog 2) im Dialog 1 dann behandeln?? Uebergabe pro Funktion als Double Variable?? Oder muss ich oben, wo die Membervariablen stehen deklarieren?? die selbe Deklaration wie bei Dialog2??
Danke
-
Etwas verwirrend.
Im aufrufenden Dlg:
siehe ChristilonIm aufgerufenen Dlg:
Eine Funktion:void UebergebeKonstante (int k1, bool k2, double k3, was auch immer noch); { konstante1inDLG2=k1 konstante2inDLG2=k2 konstante3inDLG2=k3 .. }
Und zum Zurückübertragen die Funktionen:
int HoleKonstante1() {return konstante1inDLG2;} bool HoleKonstante1 (); {return konstante2inDLG2;} double HoleKonstante1 (); {return konstante3inDLG2;}
Das müßte es gewesen sein.
-
Mh, ich brauche keine Uebergabe von variablen:
ich mache DLG 2 auf mit Button auf Dialog 1, dann erscheint dort EinGABE von Werten (double) diese moechte ich dann uebergeben, d.h. wenn ich auf OK druecke, geht dann der Dialog 1 weiter.. letztere geht, nur die Konstanten werden mit double Hole.Konstante1(){return m_konst1;} und double Hole.Konstante2(){return m_konst2;} nicht zu c1 und c2 (double im Dialog 1) uebergeeben.
c1 = Hole.Konstante1(); c2 = Hole.Konstante2(); (in ID OK Dialog ,.. UebergebenFunktion habe ich weggelassen, da ich nicht weiss, was ich uebergeben soll..
UpdateData(); habe ich zusaetzlich hineingeschrieben, da ich schon mal das Problem hatte, dass die m_Variablen nicht geaendert wurden.Beim Debuggen: Springt in Dialog 2 uebergibt aber nichts, hat auch keine Werte fuer m_konst :
Habe sie im Dialog als m_variable WERT und Double von 0 bis 100 jeweils als Gruppe deklariert. (Eingabemoeglichkeit)... Vieleicht werden sie nicht eingelesen??
Danke
-
Hi. Also ich habe das so verstanden:
du must im 2. Dialog in der Funkion OnOK() ein UpdateData(true) machen. (die eingabefelder müssen aber mit variablen hinterlegt sein) Dann müssten die Werte die du im 2. Dialog eingegeben hast übernommen werden.
In der Funktion im 1. Dialog die den 2. aufruft machst du dann "nur" noch folgendes:CDialog::IrgendeineFunktion()
{
if(Dialog2.DoModal()==IDOK)
{
double wert = Dialog2.variable;
}
}Das sollte so funktionieren.