Textboxen



  • Hallo!

    Ich verwendet Visual C++ .net 2003. Ich habe dort Textboxen, die 3 Events
    haben. Die Events sind MouseDown, KeyDown und Leave. Bei MouseDown soll das
    Textfeld den Text "" bekommen. Wenn man nun das Textfeld verlässt und man ""
    nichts eingegeben hat, soll der vorhergehende Wert wieder eingetragen
    werden.
    Wie mache ich das?

    clemens


  • Administrator

    Du speicherst den Wert, welcher bei MouseDown im Textfeld ist in eine Membervariable deiner CDialog-Klasse und setzt den Wert des Textfeldes auf nichts. Und bei der Leave Funktion überprüfst du mit einer If-Anweisung ob das Textfeld leer ist und wenn dies der Fall ist, fügst du das wieder ein, was du in der Membervariable abgespeichert hast.
    Sehr einfach.

    Grüssli



  • Hallo!

    Also bis zu dem Speichern, das habe ich schon. Nur wie vergleiche ich das ganze. Denn strcmp will der Kompiler nicht. Auch dann nicht, wenn ich "" mittels sprintf in eine Variable geschrieben habe. Ich verwende übrigens WindowsForms und keine MFC.

    clemens


  • Administrator

    Eh dann bist du hier aber an der falschen Adresse. Das hier ist soweit ich weiss, die MFC Abteilung. Das würde dann wohl eher in die C++ Abteilung reinpassen. Mal schauen ob ein Moderator zum schieben anwesend ist. Denn ich kann dir ohne MFC nicht mehr wirklich viel sagen ^^

    Ausser vielleicht, hasst du es schon mit dem Vergleichsoperator versucht? Also:
    if(DeineVariable == "")
    {
    ...
    }

    Grüssli



  • Ja das habe ich schon versucht. Allerdings kann es so nie funktionieren, da man Strings nicht mit dem Operator == vergleichen kann. Dazu gibt es Funktionen wie strcmp.
    Doch wenn ich "" mit sprintf in einen String geschrieben habe und
    "text der Box" mit sprintf in einen String geschrieben habe und diese beiden
    mit strcmp vergleichen wollte, schrieb der Kompiler Fehler



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Windows Forms gehören in das CLI Forum.
    Mich würde es aber sehr wundern, wenn es da nicht sowas wie CString gibt, denn der hat auch ein ==.



  • cle1986 schrieb:

    Ja das habe ich schon versucht. Allerdings kann es so nie funktionieren, da man Strings nicht mit dem Operator == vergleichen kann. Dazu gibt es Funktionen wie strcmp.

    String::Compare
    

    cle1986 schrieb:

    Doch wenn ich "" mit sprintf in einen String geschrieben habe

    Bitte verwenden:

    String::Format
    

    cle1986 schrieb:

    und "text der Box" mit sprintf in einen String geschrieben habe und diese beiden

    Mir dreht´s gleich den Magen rum... warum nicht einfach zuweisen!?

    textBox1->Text = "text der Box";
    

    cle1986 schrieb:

    mit strcmp vergleichen wollte, schrieb der Kompiler Fehler

    Es ist i.d.R. immer hilfreich, wenn man die *genaue* Fehlermeldung postst! Aber wie gesagt, verwende:

    String::Compare
    


  • estartu schrieb:

    Windows Forms gehören in das CLI Forum.
    Mich würde es aber sehr wundern, wenn es da nicht sowas wie CString gibt, denn der hat auch ein ==.

    So pauschal? 😉

    Windows Forms im CLI-Forum haben die Klasse System.String. Wenn's die Klasse CString ist, ist's kein CLI mehr (am Bildschirm sind's letztlich aber doch auch Windows Forms im Sinne von Formularen)

    Aber angesichts des Threadverlaufs vermute ich sowieso eher er macht QT in C mit Klassen auf MSVC++6 oder so 😃



  • LordJaxom schrieb:

    estartu schrieb:

    Windows Forms gehören in das CLI Forum.
    Mich würde es aber sehr wundern, wenn es da nicht sowas wie CString gibt, denn der hat auch ein ==.

    So pauschal? 😉

    Ja. Da alles was mit /clr übersetzt wird immer CLI verwendet.


Anmelden zum Antworten