[WXwidgets] String auf Button anzeigen



  • Hallo,
    sry wenn das hier ne Anfängerfrage ist, aber:
    Wie kann ich einen String, bspw. wxString Bla = "Sonstwas"; an passender Stelle erzeugen (in der .cpp -Datei, wo genau da?) und ihn dann auf einem Button anzeigen?
    Beste Grüße,
    Anton


  • Mod

    wxButton::SetLabel



  • Thx 🙂



  • OK,
    es klappt wenn ich folgenden Befehl aufrufe:

    IrgendeinButton->SetLabel("NeuesLabel");
    

    Ist dies die korrekte Nutzung oder verlangsamt sie das Programm?


  • Mod

    Also du kannst natürlich den String auch direkt im Konstruktor bei der Erzeugung angeben.
    Wenn du es während der Laufzeit ändern willst, ist dass die richtige Methode.

    Verlangsamen tut sie das Programm nur, wenn du sie in eine Schleife oder so packst 😉



  • OK, super, danke 🙂
    Ich bin jetzt nur auf eine neue Frage gestoßen, die eng mit den vorher gestellten zusammenhängt. Und zwar:
    Wie kann ich per wxDevC++ ein Feld erzeugen, in das der Nutzer eine Zahl eingeben muss und dessen Eingabe dann in eine Variable umgelenkt wird?
    Beste Grüße,
    Torben



  • Erstell doch einfach ein TextCtrl und prüfe, ob der Inhalt nur Zahlen sind. Das kannst du mit dem Event

    EVT_TEXT_ENTER(id, func)
    

    machen. Is eigentlich recht simpel. 🙂
    Wie der Editor von wxDevC++ funzt, kann ich dir nicht sagen, aber so würde ich es machen. Allerdings händisch. 😃
    Hier der Code von der Event-Func:

    class MyTextCtrl : public wxTextCtrl
    {
    [ .. ]
      void OnCharAdded(wxCommandEvent& event)
      {
         if (!event.GetString().IsNumber)
         {
            event.SetString(wxEmptyString);        
         }
         event.Skip();
      }
    
    private:
      DECLARE_EVENT_TABLE()
    }
    
    BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl)
    EVT_TEXT_ENTER(wxID_ANY, MyTextCtrl::OnCharAdded);
    END_EVENT_TABLE();
    

    So sollte das funktionieren.

    Noch was wichtiges aus der Doku:
    Note that you must use wxTE_PROCESS_ENTER flag when creating the control if you want it to generate such events.

    edit:
    Achja, in eine Variable bekommst du das ganze halt einfach per wxTextCtrl::GetText() und dann einfach in eine Zahl umwandeln, wie zum beispiel mit wxString::ToDouble etc.
    rya.



  • Klasse!
    Ganz ehrlich, ich finde es toll, wie einem hier geholfen wird 🙂


  • Mod

    Ich würde hier eher auf einen TextValidator für das TextCtrl setzen:

    m_textCtrl = new wxTextCtrl(this, ...) ;
    m_textCtrl->SetValidator(wxTextValidator(wxFILTER_NUMERIC)) ;
    


  • phlox81 schrieb:

    Ich würde hier eher auf einen TextValidator für das TextCtrl setzen:

    m_textCtrl = new wxTextCtrl(this, ...) ;
    m_textCtrl->SetValidator(wxTextValidator(wxFILTER_NUMERIC)) ;
    

    Das kannst ich noch gar net 😃
    Danke für den Tipp.
    rya.


Log in to reply