Übergabe und Anzeige ComboBox
-
Hallo,
ich hätte nur mal gern eure Meinung gehört, ich habe 2 Dialoge und ich lese aus
dem ersten eine Variable aus, die ich dann im zweiten in einer ComboBox
anzeigen lasse. Die ComboBox wird beim initalisieren des zweiten Dialogs mit
allen Werten vorbelegt, ich möchte eben nur das es dann die richtige Variable
anzeigt, das funktioniert auch alles tadellos.
Jetzt wollte ich nur mal gerne wissen ob es die originellste Methode ist, oder
ob es eine besser Möglichkeit gibt.MfG
// Übergibt das Kennzeichen aus Datenbank in die ComboBox des Rechnungsdialoges
pRechnung->m_strAuswahlZeichen.Insert(IDC_EZEICHEN, m_strZeichen);
pRechnung->m_ctlAuswahlZeichen.SelectString(-1, pRechnung->m_strAuswahlZeichen);
-
So nun gerade nicht! Stell Dir folgendes vor:
Chef:
- gib Arbeiter Hammer in die rechte Hand
- gib Arbeiter Nagel in die linke Hand
- gib Arbeiter Befehl, Nagel in die Wand zu hauenWird das ganze praktischerweise so gehandhabt? Nein, sondern so:
Chef:
- Arbeiter, Hammer und Nagel liegen dort, tue damit dies und das!Somit kann es dem Chef egal sein, ob der Arbeiter nun Links- oder Rechtshänder ist!
angewandtes Bsp.:
void CRechnungDlg::UpdateRechnung( CString strZeichen) { m_strAuswahlZeichen.Insert( IDC_EZEICHEN, strZeichen); m_ctlAuswahlZeichen.SelectString( -1, m_strAuswahlZeichen); } // Aufruf mit: CRechnungDlg* pRechnung = ...; pRechnung->UpdateRechnung( m_strZeichen);
-
Nachtrag:
Vielleicht fragst Du jetzt, warum die Methode besser ist, weil sie doch mehr Schreibarbeit bedeutet.
Also
1. Bessere Trennung der Objekte
2. Kapselung der Membervariablen -> kein Zugriff von aussen
3. Parameter können innerhalb der Funktion auf Gültigkeit überprüft werden
Fazit: bessere objektorientierte Programmierung
-
Hi,
ich übergebe aber noch weitere Werte, dies passiert alles bei einem Klick
auf einen Button. Soll ich da die gesamte Übergabe aller Werte in eine
eigene Funktion schreiben.MfG
-
Nachtrag:
ich poste am besten mal den gesamten Code:
void CDatenbankDlg::OnBrechnung()
{
CRechnungDlg* pRechnung = new CRechnungDlg;pRechnung->Create(IDD_RECHNUNG);
pRechnung->ShowWindow(SW_SHOW);// Übergibt Daten aus DatenbankDlg an den RechnungDlg
pRechnung->m_strAuswahlZeichen.Insert(0, m_strZeichen);
pRechnung->m_ctlAuswahlZeichen.SelectString(-1, pRechnung->m_strAuswahlZeichen);
// Name
pRechnung->m_strName.Insert(0, m_strName);
pRechnung->m_ctlName.SetWindowText(pRechnung->m_strName);
// Vorname
pRechnung->m_strVorname.Insert(0, m_strVorname);
pRechnung->m_ctlVorname.SetWindowText(pRechnung->m_strVorname);
// Anschrift
pRechnung->m_strAnschrift.Insert(0, m_strAnschrift);
pRechnung->m_ctlAnschrift.SetWindowText(pRechnung->m_strAnschrift);
// Wohnort
pRechnung->m_strOrt.Insert(0, m_strOrt);
pRechnung->m_ctlOrt.SetWindowText(pRechnung->m_strOrt);
UpdateData(FALSE);
}
-
Also, bitte Code-Tags nutzen
void CDatenbankDlg::OnBrechnung() { CRechnungDlg* pRechnung = new CRechnungDlg; pRechnung->Create(IDD_RECHNUNG); pRechnung->ShowWindow(SW_SHOW); // Übergibt Daten aus DatenbankDlg an den RechnungDlg pRechnung->Update( m_strZeichen, m_strName, m_strVorname, m_strAnschrift, m_strOrt); } void CRechnungDlg::Update( CString strZeichen, CString strName, CString strVN, CString strAnschrift, CString strOrt) { m_strAuswahlZeichen.Insert( 0, strZeichen); m_ctlAuswahlZeichen.SelectString( -1, m_strAuswahlZeichen); // Name m_strName.Insert( 0, strName); m_ctlName.SetWindowText( strName); // Vorname m_strVorname.Insert( 0, strVN); m_ctlVorname.SetWindowText( strVN); // Anschrift m_strAnschrift.Insert( 0, strAnschrift); m_ctlAnschrift.SetWindowText( strAnschrift); // Wohnort m_strOrt.Insert( 0, strOrt); m_ctlOrt.SetWindowText( strOrt); UpdateData(FALSE); }
-
Alles klar und vielen Dank für Deine Antwort!
MfG