<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MFC: PropertySheet Datenaustausch zwischen zwei tabs]]></title><description><![CDATA[<p>Hi,<br />
also ich hab eine propertypage(x) mit einem button, wenn man klickt öffnet sich ein neues propsheet mit 2 proppages.<br />
Die Daten von den den 2 proppages zu übernehmen is kein problem<br />
das mach ich halt in der funktion vom button(auf der propage(x)),<br />
mit if(propertySheet_1.DoModal() == IDOK).</p>
<p>Aber wie kann ich jetz zwischen den zwei propertypages daten übergeben, während das propertysheet mit den zwei pages(2tabs) geöffnet ist? Das Objekt der Klasse wird ja in der klasse der (x) page erzeugt und in den anderen klassen kann ich ja nicht drauf zugreifen.</p>
<p>Wenn ich das neuerzeugte propertysheet schließe wird ja die (propertySheet_1.DoModal() == IDOK) aufgerufen. Also wenn ich es schließe und neu öffne kann ich die daten übergeben aber halt nicht zwischendrin.</p>
<p>kann ich da nicht if(propertySheet_1.m_Tab1.OnSelchangeCombo1()==true) machen oder so, halt ne abfrage ob etwas geändert wurde?<br />
Oder gibt es eine möglichkeit von einer anderen klasse auf das objekt zuzugreifen und die daten zu übergeben?</p>
<p>MFG Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145678/mfc-propertysheet-datenaustausch-zwischen-zwei-tabs</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 06:05:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145678.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Apr 2006 11:15:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 11:15:50 GMT]]></title><description><![CDATA[<p>Hi,<br />
also ich hab eine propertypage(x) mit einem button, wenn man klickt öffnet sich ein neues propsheet mit 2 proppages.<br />
Die Daten von den den 2 proppages zu übernehmen is kein problem<br />
das mach ich halt in der funktion vom button(auf der propage(x)),<br />
mit if(propertySheet_1.DoModal() == IDOK).</p>
<p>Aber wie kann ich jetz zwischen den zwei propertypages daten übergeben, während das propertysheet mit den zwei pages(2tabs) geöffnet ist? Das Objekt der Klasse wird ja in der klasse der (x) page erzeugt und in den anderen klassen kann ich ja nicht drauf zugreifen.</p>
<p>Wenn ich das neuerzeugte propertysheet schließe wird ja die (propertySheet_1.DoModal() == IDOK) aufgerufen. Also wenn ich es schließe und neu öffne kann ich die daten übergeben aber halt nicht zwischendrin.</p>
<p>kann ich da nicht if(propertySheet_1.m_Tab1.OnSelchangeCombo1()==true) machen oder so, halt ne abfrage ob etwas geändert wurde?<br />
Oder gibt es eine möglichkeit von einer anderen klasse auf das objekt zuzugreifen und die daten zu übergeben?</p>
<p>MFG Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048258</guid><dc:creator><![CDATA[PeterOG]]></dc:creator><pubDate>Sun, 30 Apr 2006 11:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 13:31:02 GMT]]></title><description><![CDATA[<p>Also ich habe es nun 3 mal durchgelesen und verstehe es immer noch nicht zu 100% was du willst. Aber mal schauen:</p>
<p>Du hast zwei Dialogs? Dialog1 und Dialog2. In Dialog1 erstellst du, wenn man auf einen Button klickt, Dialog2 und führst diesen Dialog2 per DoModal aus. Du willst nun während Dialog2 läuft auf Dialog1 zugreifen? Dann übergib doch Dialog2 einen Zeiger auf Dialog1 bevor du DoModal aufrufst. Dann kannst du zur Laufzeit von Dialog2 auf Dialog1 zugreifen. Wo liegt da ein Problem?</p>
<p>Oder versteh ich was falsch?<br />
Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048376</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 30 Apr 2006 13:31:02 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 14:38:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Du hast zwei Dialogs? Dialog1 und Dialog2. In Dialog1 erstellst du, wenn man auf einen Button klickt, Dialog2 und führst diesen Dialog2 per DoModal aus.</p>
</blockquote>
<p>Richtig</p>
<blockquote>
<p>Du willst nun während Dialog2 läuft auf Dialog1 zugreifen?</p>
</blockquote>
<p>Falsch.<br />
In Dialog2 besteht aus 2 tabs also registern und ich möchte im 1. tab was eintragen und wenn ich dann das 2. tab öffne (alles im 2.dialog) sollen daten aus dem 1.tab übernommen werden, das funktioniert aber erst wenn ich dialog2 mit ok schließe und im dialog 1 den 2. dialog erneut mit dem button aufrufe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048413</guid><dc:creator><![CDATA[PeterOG]]></dc:creator><pubDate>Sun, 30 Apr 2006 14:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 15:24:10 GMT]]></title><description><![CDATA[<p>Das sollte doch kein Problem sein. Du hast ja sicherlich ein Code von dieser Art beim ButtonClick:</p>
<pre><code class="language-cpp">CPropertySheet Sheet(&quot;Irgendwas&quot;);
CTab1 Tabdlg1;
CTab2 Tabdlg2;

// Hier kannst du doch einen Zeiger von Tabdlg1 an Tabdlg2 geben.
Tabdlg2.SetPointer(&amp;Tabdlg1);

Sheet.AddPage(&amp;Tabdlg1);
Sheet.AddPage(&amp;Tabdlg2);
</code></pre>
<p>Die Funktionen und Namen sind natürlich frei erfunden. Und nun musst du halt nur noch in der CTab2 Klasse einen Behandlungscode einführen, wenn der Dialog aktiviert wird.</p>
<p>Ich kenne mich jetzt zu wenig aus mit CPropertyPage, dass ich es auswendig sagen könnte, aber es gibt sicher irgendeine Message, welche aufgerufen wird, wenn der Dialog aktiviert wird. Und wenn es keine eigene hat, probier es halt mal mit WM_ACTIVATE oder sowas.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048452</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 30 Apr 2006 15:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 17:53:30 GMT]]></title><description><![CDATA[<p>Also jetzt mal anders:<br />
Ich hab eine dialogbasierende anwendung erstellt und hab in den Header- und Source-Dateien des Dialogs &quot;CDialog&quot; durch &quot;CPropertySheet&quot; ersetzt.<br />
Und hab Klassen, von CPropertyPage abgeleitet, ersteltt für jedes Dialogfeld und<br />
dort Membervariablen zugewiesen z.B. CWelcome,CPruef oder CNoten. Das PropertySheet wird im Wizard-Modus verwendet.</p>
<p>dlg.h</p>
<pre><code>class CAbirechnerDlg : public CPropertySheet								//CDialog ersetzt duech CPropertySheet
{
// Konstruktion
public:
	CAbirechnerDlg(CWnd* pParent = NULL);	// Standard-Konstruktor
	//Konstruktion von Objekten der PropertyPages//
	CWelcome page1;
	CPruef page2;
	CNoten page3;
</code></pre>
<p>dlg.cpp</p>
<pre><code>CAbirechnerDlg::CAbirechnerDlg(CWnd* pParent /*=NULL*/)
	: CPropertySheet()	//Parameter der Elternklassen-Initialisierung geändert(CDialog-&gt;CPropertySheet())
{
	//{{AFX_DATA_INIT(CAbirechnerDlg)
		// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);
    AddPage(&amp;page1);
	AddPage(&amp;page2);
	AddPage(&amp;page3);
	AddPage(&amp;page4);
	AddPage(&amp;page5);
	AddPage(&amp;page6);
	SetWizardMode();
}
</code></pre>
<p>Das Sind halt 6Seiten die man mit &quot;weiter&quot; durchschalten kann.<br />
wenn ich auf der 1. Seite(CWelcome) etwas eintrage, soll das auf der 2. Seite angezeigt werden(CPruef).</p>
<p>Die Objekte der Klassen CWelcome und CPruef werden ja in der C...Dlg (s.o.)<br />
erstellt und ich möchte wenn ich die 2.seite anzeige (mich also in der Klasse CPruef und nicht C...Dlg befinde) auf die Werte, der in C...Dlg erstellten Objekte zugreifen.</p>
<p>Also wie kann ich Daten bei PropertyPages austauschen, wenn diese nicht modal aufgerufen werden und in einer art wizard-modus verwendet werden?</p>
<p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_property_sheets.3a_.exchanging_data.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_property_sheets.3a_.exchanging_data.asp</a><br />
bringt mich ja nur weiter wenn ich ein propertysheet modal aufrufe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048533</guid><dc:creator><![CDATA[PeterOG]]></dc:creator><pubDate>Sun, 30 Apr 2006 17:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Sun, 30 Apr 2006 22:05:59 GMT]]></title><description><![CDATA[<p>Ich weiss nicht wo dein Problem ist ... Ich habe oben die Lösung hingeschrieben. Ich habe es nun aber halt selber schnell gemacht. Nen 5 min Code hingeschrieben und getestet und funktioniert wunderbar. Ich poste mal meinen Code hier rein, damit vielleicht besser verstehst was ich meine:</p>
<p>Ich habe halt nun keine Klasse von CPropertySheet abgeleitet, sondern sie einfach direkt genommen, kommt aber im Endeffet aufs gleiche hinaus.</p>
<pre><code class="language-cpp">CPropertySheet cs(&quot;Title&quot;);
CPageOne PageOne;
CPageTwo PageTwo;

PageTwo.SetPrevPage(&amp;PageOne);

cs.AddPage(&amp;PageOne);
cs.AddPage(&amp;PageTwo);
cs.SetWizardMode();
cs.DoModal();
</code></pre>
<p>CPageOne.h</p>
<pre><code class="language-cpp">#pragma once

// CPageOne dialog

class CPageOne : public CPropertyPage
{
	DECLARE_DYNAMIC(CPageOne)

public:
	CPageOne();
	virtual ~CPageOne();

// Dialog Data
	enum { IDD = IDD_PROPPAGE_ONE };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	DECLARE_MESSAGE_MAP()
private:
	CString m_str;
public:
	virtual LRESULT OnWizardNext();
	CString GetString() { return m_str; };
};
</code></pre>
<p>CPageOne.cpp</p>
<pre><code class="language-cpp">// PageOne.cpp : implementation file
//

#include &quot;stdafx.h&quot;
#include &quot;testsplitter.h&quot;
#include &quot;PageOne.h&quot;
#include &quot;.\pageone.h&quot;

// CPageOne dialog

IMPLEMENT_DYNAMIC(CPageOne, CPropertyPage)
CPageOne::CPageOne()
	: CPropertyPage(CPageOne::IDD)
	, m_str(_T(&quot;&quot;))
{
}

CPageOne::~CPageOne()
{
}

void CPageOne::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT_INPUT, m_str);
}

BEGIN_MESSAGE_MAP(CPageOne, CPropertyPage)
END_MESSAGE_MAP()

// CPageOne message handlers

LRESULT CPageOne::OnWizardNext()
{
         // Überschriebene virtuelle Funktion.
	UpdateData(TRUE);

	return CPropertyPage::OnWizardNext();
}
</code></pre>
<p>CPageTwo.h</p>
<pre><code class="language-cpp">#pragma once
#include &quot;PageOne.h&quot;

// CPageTwo dialog

class CPageTwo : public CPropertyPage
{
	DECLARE_DYNAMIC(CPageTwo)

public:
	CPageTwo();
	virtual ~CPageTwo();

// Dialog Data
	enum { IDD = IDD_PROPPAGE_TWO };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

	DECLARE_MESSAGE_MAP()
private:
	CString m_str;
	CPageOne* m_pPageOne;

public:
	void SetPrevPage(CPageOne* pPage) { m_pPageOne = pPage; };
	virtual BOOL OnSetActive();
};
</code></pre>
<p>CPageTwo.cpp</p>
<pre><code class="language-cpp">// PageTwo.cpp : implementation file
//

#include &quot;stdafx.h&quot;
#include &quot;testsplitter.h&quot;
#include &quot;PageTwo.h&quot;
#include &quot;.\pagetwo.h&quot;

// CPageTwo dialog

IMPLEMENT_DYNAMIC(CPageTwo, CPropertyPage)
CPageTwo::CPageTwo()
	: CPropertyPage(CPageTwo::IDD)
	, m_str(_T(&quot;&quot;))
	, m_pPageOne(NULL)
{
}

CPageTwo::~CPageTwo()
{
}

void CPageTwo::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT_OUTPUT, m_str);
}

BEGIN_MESSAGE_MAP(CPageTwo, CPropertyPage)
END_MESSAGE_MAP()

// CPageTwo message handlers

BOOL CPageTwo::OnSetActive()
{
         // Überschriebene virtuelle Funktion.
	m_str = m_pPageOne-&gt;GetString();
	UpdateData(FALSE);

	return CPropertyPage::OnSetActive();
}
</code></pre>
<p>Und das funktioniert einwandfrei. Da ist ein Edit Feld im Ersten bereich, da gibt man was ein und da ist ein Edit Feld im zweiten Bereich. Wenn man in CPageOne auf Next klickt, dann wird beim CPageTwo die Eingabe ausgegeben.</p>
<p>Und du kannst als Zeiger auch sonst irgend ein Dialog übergeben, dass doch scheiss egal. Du kannst auch den Pages einen Zeiger auf CPropertySheet übergeben um dessen Daten abzurufen. Ich weiss echt nicht was für ein Problem du hast. Das ist sowas von einfach. Du musst den einzelnen Seiten nur einen Zeiger übergeben auf die Klasse, in welchen die Objekte sind, welche du auf der Seite anzeigen willst.</p>
<p>Hoffe ich konnte dir mit dem Code helfen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048661</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 30 Apr 2006 22:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to MFC: PropertySheet Datenaustausch zwischen zwei tabs on Mon, 01 May 2006 08:09:06 GMT]]></title><description><![CDATA[<p>Danke!!!!!<br />
Das war ja eigentlich auch die erste idee mitm pointer auf die seite aber ich hab halt irgendwas falsch gemacht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Und mein Lehrer hat das auch nicht hinbekommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Aber super das funktioniert wunderprächtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048739</guid><dc:creator><![CDATA[PeterOG]]></dc:creator><pubDate>Mon, 01 May 2006 08:09:06 GMT</pubDate></item></channel></rss>