Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wert einer int-Variable in anderem Dialog

Empfohlene Antworten

Veröffentlicht

Hallo,

Ich hab schon wieder ein Problemchen ich möchte auf den Wert einer int-Variable zugreifen. Ich weis der Variable in einem Dialog einen Wert zu ,brauch dann aber im anderen Dialog den Wert der Variable und will danach die Variable wieder auf 0 setzen.

Muss ich vielleicht die Variable in die Klasse einfügen ???

Bitte um schnelle Hilfe !!!

Danke.

P.S:Benutz die MFC.

Wo und wie ist dein int denn deklariert?

Servus!

Das kommt darauf an von wo deine dialoge aufgerufen werden!

Also, mal angenommen du hast 2 dialoge:

CDialog1Dlg und

CDialog2Dlg

Der erste Dialog(CDialog1Dlg) ist auf dem Bildschirm,

vom ersten Dialog rufst du den 2ten auf.

dann schreibst du ja


CDialog2Dlg dlg;

dlg.DoModal();

oder so ähnlich. Um jetzt eine Variable zu übergeben, musst du im 2. Dialog eine Membervariable anlegen, z.B.
int m_nWert;
diese muss natürlich "public" sein! Um nun die Variable zu ändern, schreibst du einfach:

CDialog2Dlg dlg;

dlg.m_nWert = 20;

dlg.DoModal()

Zack, nun ist die Variable geändert, wenn du nun vom 2ten dialog, wärend der offen ist, im 1.ten was ändern willst, ist das erweng komplizierter: Also, leg im 2.ten Dialog einen Pointer vom Typ CDialog an:
CDialog * m_pDialog;
Nun beim aufruf deines 2ten Dialogs, übergibst du einen Zeiger auf den 1ten Dialog:

CDialog2Dlg dlg;

dlg.m_pDialog = this;

dlg.DoModal();

Der This Zeiger, den jede Klasse besitzt ist ein Pointer auf die eigene Klasse, also in diesem Fall ein Zeiger auf CDialog1Dlg. Wenn du nun im ersten eine Membervariable ändern willst, geht das vom 2ten folgendermassen:

((CDialog1Dlg*)m_pDialog)->m_nWert = 100;

Die Variable m_pDialog ist ja zu Beginn eine Variable des Typs CDialog, nun Castest du sie auf CDialog1Dlg, du kannst statt einer CDialog-Variable auch gleich eine CDialog1Dlg Membervariable im 2.ten Dialog anlegen. Dann entfällt das Casten, musst nur noch
m_pDialog->m_nWert = 100;

eingeben, tja viele Wege führn nach Rom!

Ich hoff mal des war etz nicht zuviel ;D

bye

JO;)

Ps. Solltest natürlich den Pointer im Konstruktor deines 2ten Dialogs auf NULL setzen! :rolleyes:

Nochmals Danke. Das ganze funzt echt gut !!!

Original geschrieben von Comroader

Nochmals Danke. Das ganze funzt echt gut !!!

Gern geschehn!:D :D :D :D :D :D :D

Man kann auch im Konstruktor des 2. Dialogs einfach ne Referenz auf den zu ermittelnden Wert mitgeben. Wenn man ganz schnell arbeiten muss, gibts noch ne "unsaubere" Variante, und zwar kann man nach dem der Dialog2 zerstört wurde ja trotzdem noch auf seine Membervariablen zugreifen ( nur bei public ). Einfach "int gewuenschterWert = Dialog2Instanz.gewuenschteMemberVariable;" .

Hi!

Warum ist denn die Methode unsauber?

Ich weis nicht was du unter "zerstört" verstehst,

ich denk mal du meinst, wenn er geschlossen ist,

na und?

Das Objekt der Klasse TestDlg ist doch noch da oder?

Und DoModal() war ja nur eine kleine funktion der

Klasse von dem das Objekt(Der Dialog) abgeleitet wurde.

Oder?

sers

JO

Unsauber weil es nicht der Standdardweg ist, bei 2 Dialogen kann aber eigentlich nicht viel passieren, aber Du weisst ja nie was nach dem schließen eines Dialoges noch durchlaufen wird, wenn es eigene kleine Projekte sind dann isses egal, bei Code an dem mehrere arbeiten würde ich das net so machen.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.