Eingabefeld automatisch markieren



  • Das sieht komisch aus^^
    an welcher Stelle liest du denn deine Eingabe aus deinem Editfeld aus?
    Und wo sind Speicher, i_wert, mv_number und mv_wert als was deklariert?



  • Aaaaaaalso^^

    ich habe bereits bei meinem Eingabefeld eine Funktion hinzugefügt. Die nennt sich EN_Update... Denn die Aufgabenstellung lautete:
    Es sollen Werte zur Erstellung eines Histogramms und einer Verteilungsfunktion erfasst werden (Hilfsklasse CDaten)
    - die Bezeichnung der Daten
    - die Nummer des aktuellen Datenwertes (Integer 1..100)
    - zu den Nummern zugehörige Werte (Integer 0..100) (EN_UPDATE)
    Zur Initialisierung wird die Funktion WM-INITDIALOG verwendet. Das Speichern der einzelnen Werte soll über die Funktion EN_UPDATE realisiert werden. Werte außerhalb des vorgegebenen Intervalls (0…100) sollen abgefangen werden.

    Meine Hilfsklasse heißt allerdings Speicher. und dort habe ich 3 Variablen angelegt:einmal eine INT Variable (Speicher.i_wert) dann noch eine welche ...ach ich mache es besser so:

    public:
    	CSpeicher();
    
    	virtual ~CSpeicher();
    	CString s_Beschreibung;
    	int i_nummer;
    	int i_wert[101];
    

    diese sind alle in meiner Hilfsklasse drin.

    Und dann habe ich in meiner "richtigen"Klasse die member Variablen(mv)..

    So um die Werte zu speichern die ich jedes mal in das Eingabefeld eintippe sollte ich laut Aufgabenstellung ja dieses EN_UPDATE benutzten...

    Reicht dir das so an Info?



  • Ok, naja gut.
    Dann versuchs mal so:

    void CDaten::OnUpdateWert()
    {
        UpdateData(true);
    
        Speicher.i_wert[mv_nummer]      = mv_wert;
    
    	hierdeinemembervariableeinfügen.SetFocus();
    	hierdeinemembervariableeinfügen.SetSel(0, hierdeinemembervariableeinfügen.GetWindowTextLengthW());
    }
    


  • das habe ich bereits damals getan...

    die folgende Fehlermeldung:

    Der linke Teil von '.SetFocus' muss eine Klasse/Struktur/Union sein

    gleiches gilt für SetSel



  • TaskManager schrieb:

    Der linke Teil von '.SetFocus' muss eine Klasse/Struktur/Union sein

    Man kann sich das zugehörige Objekt wohl besorgen:

    CWnd* myButton = GetDlgItem(IDC_...);
    myButton->SetFocus();
    


  • TaskManager schrieb:

    das habe ich bereits damals getan...

    die folgende Fehlermeldung:
    Der linke Teil von '.SetFocus' muss eine Klasse/Struktur/Union sein

    gleiches gilt für SetSel

    Hast du keine Membervariable für dein Edit angelegt? Poste mal xyzdlg.h



  • #if !defined(AFX_DATEN_H__B513D099_8684_4B25_A977_124E9F371DFC__INCLUDED_)
    #define AFX_DATEN_H__B513D099_8684_4B25_A977_124E9F371DFC__INCLUDED_
    #include "Speicher.h"
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // Daten.h : Header-Datei
    //
    
    /////////////////////////////////////////////////////////////////////////////
    // Dialogfeld CDaten 
    
    class CDaten : public CDialog
    {
    // Konstruktion
    public:
    	CSpeicher Speicher;
    
    	CDaten(CWnd* pParent = NULL);   // Standardkonstruktor
    
    // Dialogfelddaten
    	//{{AFX_DATA(CDaten)
    	enum { IDD = IDD_DIALOG1 };
    	CString	mv_bezeichnung;
    	int		mv_nummer;
    	int		mv_wert;
    	//}}AFX_DATA
    
    // Überschreibungen
    	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    	//{{AFX_VIRTUAL(CDaten)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    	//}}AFX_VIRTUAL
    
    // Implementierung
    protected:
    
    	// Generierte Nachrichtenzuordnungsfunktionen
    	//{{AFX_MSG(CDaten)
    	afx_msg void OnBackward();
    	afx_msg void OnFastBackward();
    	afx_msg void OnForward();
    	afx_msg void OnFastForward();
    	afx_msg void OnUpdateWert();
    	virtual BOOL OnInitDialog();
    	virtual void OnOK();
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // AFX_DATEN_H__B513D099_8684_4B25_A977_124E9F371DFC__INCLUDED_
    


  • Dein Edit hat keine Membervariable!
    Mach ein Rechtsklick auf dein Editfeld und klicke auf "Membervariable hinzufügen". Die Methoden SetSel usw. funktionieren nur in Verbindung mit Membervariablen.



  • Stutzpeter schrieb:

    Dein Edit hat keine Membervariable!
    Mach ein Rechtsklick auf dein Editfeld und klicke auf "Membervariable hinzufügen". Die Methoden SetSel usw. funktionieren nur in Verbindung mit Membervariablen.

    Das stimmt so natürlich nicht. Es geht durchaus ohne Membervariable wie ich
    oben gezeigt habe.

    Auf der anderen Seite könnte ein direkter Verweis auf das Control etwas Aufwand sparen ...



  • merano schrieb:

    Stutzpeter schrieb:

    Dein Edit hat keine Membervariable!
    Mach ein Rechtsklick auf dein Editfeld und klicke auf "Membervariable hinzufügen". Die Methoden SetSel usw. funktionieren nur in Verbindung mit Membervariablen.

    Das stimmt so natürlich nicht. Es geht durchaus ohne Membervariable wie ich
    oben gezeigt habe.

    Durchaus geht das so, keine Frage. Aber da der Fragesteller offenbar keinen Schimmer hat was er da genau tut, sollte er es sich so einfach wie möglich machen...


Anmelden zum Antworten