Zum Inhalt springen

Datenaustausch zwieschen zwei Dialogs in TabCtrl


BOOT

Empfohlene Beiträge

Kann vieleich jemand mir bei diesem Problem mir helfen!

1.Ich habe ein TabCtrl mit MFC erstellt

2.Dann habe ich ein Dialog mit Classenname CSeite1 "Untergeornet und Kein Rand" erstellt.

3.Zu diese Dialog habe ich die Streuerelementten wie List, Button, Edit, etc.. eingefügt und für die Membervariablen definiert

4.Dann das gleiche noch ein mal für zweite Dialog mit Classenname CSeite2 erstellt.

Alles in jeder Dialog funktioniert einwandfrei bis zu einem:

Problem: Ich möchte von CSeite1 aus eine Funktion eine CStringswert in ein Editfeld in CSeite2 hinein schreiben das heißt mit Button Select in CSeite1 Lese ich aus der Listenelemen der CSeite1 und Übergebe ich in CSeite2 in ein CEditelemet.

//In diese Methode soll Stringswert an der Editfeld der CSeite2 übergeben werden und dort in der Feld erscheinen.

void CSeite1::OnSelectbutton() 

{

	UpdateData(TRUE);	


	int nSelected; 

	CString liste;

	CString list2;


	POSITION p = m_cListCtrl.GetFirstSelectedItemPosition();

	if(p)

	{

		int i;

		while (p)

		{	

			nSelected = m_cListCtrl.GetNextSelectedItem(p);

			if(m_Radio1.GetCheck())

			{

				liste = m_cListCtrl.GetItemText(nSelected,0);

			}

			else

			{

				liste = m_cListCtrl.GetItemText(nSelected,2);

			}

			list2 = list2 + liste;

		}	

		m_sResults = list2;


	}

	else

	{

		MessageBox("Keine Element ausgewählt!","Warning!",MB_OK);

	}

	UpdateData(FALSE);

}


//In CSeite2 header
class CSeite2 : public CDialog

{

// Konstruktion

public:

	CSeite2(CWnd* pParent = NULL);   // Standardkonstruktor


// Dialogfelddaten

	//{{AFX_DATA(CSeite2)

	enum { IDD = IDD_SEITE2 };

	CString	m_Test;

	CMSFlexGrid	m_ctlFGrid;

	//}}AFX_DATA


// Überschreibungen

	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen

	//{{AFX_VIRTUAL(CSeite2)

	protected:

	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung

	//}}AFX_VIRTUAL


// Implementierung


public:

		void vorher();

		CString m_csinliste;

		void SetDataMsflexgrid(CString cs_Data, int i_spalte, int i_zeile);

		void GetData(CString cs_Data, int i_spalte, int i_zeile);

		int m_iMouseCol;

		int GenID(int m_iRow, int m_iCol);

		void DoSort();

		CString RandomStringValue(int m_iColumn);

		void LoadData();

		HICON m_hIcon;

protected:


	// Generierte Nachrichtenzuordnungsfunktionen

	//{{AFX_MSG(CSeite2)

   	afx_msg void OnButton1();

	afx_msg void OnPaint();

	virtual BOOL OnInitDialog();

	afx_msg void OnMouseDownMsflexgrid(short Button, short Shift, long x, long y);

	afx_msg void OnEnterCellMsflexgrid();

	afx_msg void OnCancelMode();

	DECLARE_EVENTSINK_MAP()

	//}}AFX_MSG

		public:

			CString m_csEmpfang;

	afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

	DECLARE_MESSAGE_MAP()

private:

	int m_iZeile;

	int m_iSpalte;

	CString m_csData;

};


Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
Der Parent deiner Tabseiten kennt doch deine Dialogseiten (CSeite1 und CSeite2). Du kannst folgendes machen:

In CSeite1 baust du deinen String zusammen und übergibst ihn in etwa so an CSeite2:

(([NameDerParentKlasse]*)GetParent()) -> m_seite2.SetzeMeinenString(m_sResults)

Hallo

Es funkioniert einwandfrei;)

Ich danke dir!

etzt habe ich eine andere Frage:

Ich habe in mein CSeite2 ein MSFLEXGRID "Tabelle" mit fixer Zeile und und Spalte i Form änliche Exceltabelle.

Ich habe ein Button auf diese Seite, wenn ich darauf klick öffnet ein SAVE Dialaog, dort kann ich die name ein geben und Spechern!

Das Problem:

Ich weiß nicht wie ich meine MSFLEXGRID als eine Exceltabelle Speichern kann?

Bitte um Tip:confused:

lg. BOOT

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, beim direkten Speichern als Excel-Sheet bin ich jetzt auch überfragt, aber du könntest evtl. auch ein CSV-File erstellen. Excel kann das Lesen.

Ich kenne leider die Möglichkeiten des MSFLEXGRID nicht. Vielleicht unterstützt es Speichern als Excel-Sheet schon.

Sorry, kann dir da nicht direkt weiterhelfen :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

es gibt zwei Möglichkeiten, eine Excel Datei durch ein externes Programm zu bearbeiten:

Zunächst einmal wäre da das Component Object Model, eine sprachunabhängige Schnittstelle für Winows basierte Programme

Alle Microsoft Programme bieten COM Objekte, mit denen du arbeiten könntest. Bemühe mal google und msdn.com mit Begriffen wie COM, C++, Excel, Automation, ...

Ausserdem gäbe es da noch die Möglichkeit über SQL. Kein Witz: du kannst im Windows ODBC Manager eine User DSN für Excel Dateien anlegen. Das eignet sich aber eher für den Zugriff auf bestehende Dateien.

Ich denke COM ist für dich das Mittel der Wahl. Die MFC bietet soweit ich weiß auch C++ Kapselungen der COM Klassen. so mußt du dich nicht erst wissenschaftlich damit beschäftigen.

Hoffe das hilft.

Gruß

Nils

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...