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.

Datenaustausch zwieschen zwei Dialogs in TabCtrl

Empfohlene Antworten

Veröffentlicht

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;

};


  • 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)

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

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 :(

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

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.