Button abfragen



  • danke für die tips und den link,
    aber so richtig will es noch nicht funkionieren.

    wenn ich den button jetzt klicke spirngt er auch in die funktion - sehr gut schon mal. aber wie bokomme ich die daten aus den alten dialogfeld in meine variablen??

    ich poste hier mal ein stück aus meinen quellcode - vielleicht weißt du was ich meine:

    //----------------------------------------------------------------------------------------------------------------
    // CInventarDoc Befehle
    
    void CInventarDoc::OnInventardaten() 
    {
    	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
    	CInventarDlg dlg;
    
    //	int IDWHAT;
    //  DWHAT = 
    	dlg.DoModal();	
    //	UpdateData();
    
    }
    //----------------------------------------------------------------------------------------------------------------
    void CInventarDoc::OnInvok() 
    {
    	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
    /*	CEdit       *i_invartnr			= (CEdit *)		GetDlgItem(IDC_INV_ARTNR);
    	CEdit       *str_invbez			= (CEdit *)		GetDlgItem(IDC_INV_BEZ);
    	CEdit       *str_invgruppe		= (CEdit *)		GetDlgItem(IDC_INV_GRUPPE);
    	CEdit       *str_invhersteller	= (CEdit *)		GetDlgItem(IDC_INV_HERSTELLER);
    	CEdit       *str_invmodell		= (CEdit *)		GetDlgItem(IDC_INV_MODELL);
    	CEdit       *str_invtyp			= (CEdit *)		GetDlgItem(IDC_INV_TYP);
    	CEdit       *i_invsernr			= (CEdit *)		GetDlgItem(IDC_INV_SERNR);
    	CEdit       *str_invstandort	= (CEdit *)		GetDlgItem(IDC_INV_STANDORT);
    	CEdit       *time_invprueftermin= (CEdit *)		GetDlgItem(IDC_INV_PRUEFTERMIN);
    	CEdit       *str_invstatus		= (CEdit *)		GetDlgItem(IDC_INV_STATUS);
    	CEdit       *str_invaktstatus	= (CEdit *)		GetDlgItem(IDC_INV_AKTSTATUS);
    	CEdit       *str_invkostenstelle= (CEdit *)		GetDlgItem(IDC_INV_KOSTENSTELLE);//------
    	CEdit       *i_invbestellschein	= (CEdit *)		GetDlgItem(IDC_INV_BESTELLSCHEIN);
    	CEdit       *str_invlieferant	= (CEdit *)		GetDlgItem(IDC_INV_LIEFERANT);
    	CEdit       *d_invpreis			= (CEdit *)		GetDlgItem(IDC_INV_PREIS);
    	CEdit       *time_invlieferdatum= (CEdit *)		GetDlgItem(IDC_INV_LIEFERDATUM);
    	CEdit       *time_invgarantie	= (CEdit *)		GetDlgItem(IDC_INV_GARANTIE);
    
    */	CString str_invbez,str_invgruppe,str_invhersteller,str_invmodell,str_invtyp,str_standort;
    	CString str_invstatus,str_invaktstaus,str_invkostenstelle,str_invlieferant;
    	int		invartnr,invsernr,invbestellschein;
    	double	invpreis;
    /*	CString invpreurtermin,invlieferdatum,invgarantie;
    
    	//Object aus CInvdaten ableiten, damit man mittels Set-Funktionen auf die Protecteten Variablen zugreifen kann
    	CInvdaten obj;
    
    	//Die Werte aus dem Dialog CInventarDlg werden in MemberVariablen gespeichert und diese dann mittels Set-Funktion in das Object gelegt
    	obj.SetArtnr			(invartnr);
    	obj.SetBez				(dlg.m_strinvbez);
    	obj.SetGruppe			(dlg.m_strinvgruppe);
    	obj.SetHersteller		(dlg.m_strinvhersteller);
    	obj.SetModell			(dlg.m_strinvmodell);
    	obj.SetTyp				(dlg.m_strinvtyp);
    	obj.SetSeriennr			(dlg.m_iinvsernr);
    	obj.SetStandort			(dlg.m_strinvstandort);
    	obj.SetPrueftermin		(dlg.m_timeinvprueftermin);
    	obj.SetStatus			(dlg.m_strinvstatus);
    	obj.SetAktstatus		(dlg.m_strinvaktstatus);
    	obj.SetKostenstelle		(dlg.m_strinvkostenstelle);
    	obj.SetBestellscheinnr	(dlg.m_iinvbestellschein);
    	obj.SetLieferant		(dlg.m_strinvlieferant);
    	obj.SetPreis			(dlg.m_dinvpreis);
    	obj.SetLieferdatum		(dlg.m_timeinvlieferdatum);
    	obj.SetGarantie			(dlg.m_timeinvgarantie);
    */	
    	//Hier wird das Object mit einem kompletten Invdatensatz als Inhalt dem Array angehangen, wenn 
    	//IDWHAT dlg.DoModal mit IDOK übergeben wurde
    	//Add schreibt an das Ende eines Arrays den Datensatz
    
    //	if(ID_INVOK)
    //	{
    	//Object aus CInvdaten ableiten, damit man mittels Set-Funktionen auf die Protecteten Variablen zugreifen kann
    
    	CInventarDlg dlg;
    
    	int IDWHAT;
    	IDWHAT = dlg.DoModal();	
    
    	CInvdaten obj;
    
    	//Die Werte aus dem Dialog CInventarDlg werden in MemberVariablen gespeichert und diese dann mittels Set-Funktion in das Object gelegt
    	obj.SetArtnr(dlg.m_iinvartnr);
    	obj.SetBez(dlg.m_strinvbez);
    	obj.SetGruppe(dlg.m_strinvgruppe);
    	obj.SetHersteller(dlg.m_strinvhersteller);
    	obj.SetModell(dlg.m_strinvmodell);
    	obj.SetTyp(dlg.m_strinvtyp);
    	obj.SetSeriennr(dlg.m_iinvsernr);
    	obj.SetStandort(dlg.m_strinvstandort);
    	obj.SetPrueftermin(dlg.m_timeinvprueftermin);
    	obj.SetStatus(dlg.m_strinvstatus);
    	obj.SetAktstatus(dlg.m_strinvaktstatus);
    	obj.SetKostenstelle(dlg.m_strinvkostenstelle);
    	obj.SetBestellscheinnr(dlg.m_iinvbestellschein);
    	obj.SetLieferant(dlg.m_strinvlieferant);
    	obj.SetPreis(dlg.m_dinvpreis);
    	obj.SetLieferdatum(dlg.m_timeinvlieferdatum);
    	obj.SetGarantie(dlg.m_timeinvgarantie);
    
    	//Hier wird das Object mit einem kompletten Invdatensatz als Inhalt dem Array angehangen, wenn 
    	//IDWHAT dlg.DoModal mit IDOK übergeben wurde
    	//Add schreibt an das Ende eines Arrays den Datensatz
    
    		m_arrInvdaten.Add(obj);
    		SetModifiedFlag();
    	//UpdateData();
    //	UpdateData();
    }
    

    wie du siehst habe ich alle möglichen sachen getestet und ich dachte mit "UpdateData();" würde er die variablen auch füllen - aber ich bekomme die fehlermeldung "UdateData" nicht deklarierter bezeichner....
    und ich glaube auch das beim zweiten mal ableiten der dlgclasse die felder wieder leer sind, oder (obwohl der dlg noch offen ist)?
    (ich arbeite im ...doc.cpp)

    vielleicht kannst du mir nochmal helfen 🙂
    Grüße



  • Hi,

    du kannst auf die Variablen des Dialogs ganz normal zugreifen:

    CInventarDlg dlg; 
    int IDWHAT; 
    DWHAT = dlg.DoModal();
    if(IDWHAT == IDOK)
    {
      // Alles klar, Datensatz hinzufügen
      CString strString1 = dlg.m_strString1; // m_strString1 = Variable zu einem Editfeld
      //blablabla
    }
    


  • Ach sorry, soweit warst du ja schon.

    Überschreibe mal OnOk in deiner Dialogklasse und füge ein UpdateData ein.

    Grüße Rapha



  • ich bekomme die fehlermeldung "UdateData" nicht deklarierter bezeichner....



  • radelt schrieb:

    ich bekomme die fehlermeldung "UdateData" nicht deklarierter bezeichner....

    dann achte mal auf die richtigschreibung der bezeichner in deinem code.

    das sollte wahrscheinlich UpdateData(...) an der stelle sein!



  • Ähm....?!?, sollte es nicht heissen: UpdateData(TRUE) oder UpdateData(False)
    stehen, je nachdem ob du Daten holst oder sendest ? 😮



  • Hi

    die Deklaration der Funktion:

    MSDN schrieb:

    BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

    Somit ist TRUE der Standartparameter und kann weggelassen werden 😉
    Grüße Rapha

    [edit]Außerdem möchte ich mal sehen, wie du UpdateData(False) kompilierst 😉 :p [/edit]



  • ich weiss nicht, ich meine ich hätte in den klammern drei punkte geschrieben. das soll natürlich heissen, dass da nach bedarf etwas eingetragen wird. ich denke wenn man etwas erfahrung hat, dann sucht man sich in einer guten referenz, z.b. msdn die beschreibung für den bezeichner heraus.

    dann noch ein wenig lesen, und man weiss was damit gemeint ist.



  • Rapha

    [edit]Außerdem möchte ich mal sehen, wie du UpdateData(False) kompilierst 😉 :p [/edit][/quote]

    Dumme Frage: Warum soll man UpdateData(FALSE); nicht compilieren können ??? 😕



  • würde jetzt so gerne dumme antw... sagen, aber das lasse ich mal.

    copy&paste seines befehls in ein testprogramm und dann versuchen zu erstellen. wenn du das mal versucht hast, wirst du merken, was gemeint war.

    und bitte nicht immer so schöne ausdrücke benutzen. würdest du als antwort auch nur ungerne lesen.


Anmelden zum Antworten