Buddyfeld Wert abfragen und an anderes Editfeld übertragen



  • Hallo erstmal,

    eines vorweg, ich arbeite mich so langsam grade in diese Materie ein, da ich für meine Diplomarbeit Vis C++ nutzen soll zur GUI Erstellung. Da ich aber Elektrotechnik und nicht Informatik studiere, bitte wenig Wissen voraussetzen, danke 🙂

    Das Problem ist folgendes:

    Ich besitze ein Editfeld, welches als Buddy arbeitet. Das Drehfeld funtkioniert auch einwandfrei, nur möchte ich gerne den Wert dieses Buddys abfragen, wenn er sich ändert, und für weitere Editfelder und eine ListControl zur Verfügung haben.

    Bei Codeproject hab ich dann folgenden Code gefunden:

    void CEditCtrlTutorialDlg::OnIn()
    {
    UpdateData();
    m_Edit8.SetSel(0,-1); // Select all the text
    m_Edit8.Copy(); // copy text to clipboard
    m_Edit5.Paste(); // paste text from clipboard at caret pos
    }

    Also in meinem Code obigen eingesetzt auf das Event des Editfeldes OnChange und meine Variablen m_valuebuddy und m_data benutzt. Erstere für den Wert des Buddys, zweitere für den Wert des zu setzenden Feldes.

    Nun kommt folgende Fehlermeldung (3mal):

    C:\Program Files\Microsoft Visual Studio\MyProjects\HDTV_MIC\PropertyPageSeiteA.cpp(669) : error C2039: 'SetSel' : is not a member of 'CString'
    c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(368) : see declaration of 'CString'

    Ok, ich versteh zwar was er mir sagen will, aber nicht, in was ich es ändern muss, damit er meinem Willen folgt. Und wieso will er auf CString zugreifen, wo er doch eigentlich das Editfeld benutzen soll, welches die Funktionen ja bei CEdit besitzt.

    Leider programmiert hier in der Firma niemand mit MFC, so dass ich intern niemanden fragen kann. Wäre nett, wenn mir wer helfen könnte.

    Danke schonmal.



  • 1. wie, ein editfeld arbeitet als ein Buddy, was ist buddy? 😃

    2. Du musst eine Membervariable vom Typ CEdit und nciht vom Typ CString machen, denn SetSel ist ein Element von CEdit. Du kannst eine Control auch einfach mehrere Membervariablen gleichzeitig zuweisen 😉



  • Du willst also nur den Wert in einer Variable speichern, sobald dieser in der Editbox geändert wird ? Na dann verwende in der Funktion OnChange() vom Editfeld einfach GetWindowText()...

    Beispiel:

    void CTestDlg::OnChange(...)
    {
       CString strVar;
       GetDlgItem(ID_DEINES_EDITFELDES)->GetWindowText(strVar);
    }
    

    Und schon steht in der Variable strVar der Wert aus deinem Editfeld...

    Testerr



  • Auf OnChange mag er ned reagieren, aber auf das drücken der Buttons vom Drehfeld übernimmt er die Daten nun in das andere Editfeld, aber um 1 verzögert 🙂

    Könnt man sowas doch in VHDL programmieren 😉



  • Nehm alles zurück und behaupt das Gegenteil 🙂 Manchmal sieht man den Wald halt ned...

    Danke euch Zweien


Log in to reply