Backspace-Taste wird nicht erkannt!
-
Hallo, ich möchte in ein DBEdit nur Zahlen von 0 bis 100 eingeben können. Natürlich muss die Backspace-Taste ja auch funktionieren. Nur Zahlen hat ja schon super geklappt. Aber nun funktioniert die Backspace-Taste nicht mehr ...
Vielleicht sieht einer einen Flüchtigkeitsfehler??void __fastcall TReguliererStammForm::DBEdit44KeyPress(TObject *Sender, wchar_t &Key) { TDBEdit* pEdit = dynamic_cast<TDBEdit*>(Sender); if (!isdigit(Key) && Key != '\b') { MessageBeep(0); Key = 0; } else if (pEdit->Text.Length() >= 2) { MessageBeep(0); Key = 0; } else if ((pEdit->Text == "10") && (pEdit->SelStart >= 1) && (Key != '0') ) { MessageBeep(0); Key = 0; } }
-
hast du schon mal die virtual key codes verwendet, Backspace hat dabei die Bezeichnung VK_BACK
Key!=char(VK_BACK)
eventuell Hilft auch dieser Thread weiter
-
Der Fehler ist gefunden
TDBEdit* pEdit = dynamic_cast<TDBEdit*>(Sender); if (!isdigit(Key) && Key != char(VK_BACK)) { MessageBeep(0); Key = 0; } else if ((pEdit->Text.Length() >= 2) && (Key != char(VK_BACK))) { MessageBeep(0); Key = 0; else if ((...) && (Key != char(VK_BACK))) }
Man muss in jedes if (Key != char(VK_BACK)) konjunktiv mit einfügen!!
-
Hallo,
wieso so kompliziert?void __fastcall TReguliererStammForm::DBEdit44KeyPress(TObject *Sender, wchar_t &Key) { if ( Key != VK_BACK ) { MessageBeep(0); Key = 0; } }
-
Tja, das hatte ich auch beschrieben! dass nur Zahlen zwischen 0 und 100 möglich sein sollen
Ich habe da jetzt eher n anderes Problem. Und zwar wollte ich den Part in eine Schleife auslagern, aber habe ein Problem mit der Deklaration:
ich habe in der .h-datei:
public: // Benutzer Deklarationen wchar_t nur_ganze_Zahlen(TObject *Sender, wchar_t &Key); //----------------------------------------------------------------------------- // Die eigentliche Funktion wchar_t nur_ganze_Zahlen(TObject *Sender, wchar_t &Key) { TDBEdit* pEdit = dynamic_cast<TDBEdit*>(Sender); if (!isdigit(Key) && Key != char(VK_BACK)) { MessageBeep(0); return 0; } else if ((pEdit->Text.Length() >= 2) && (Key != char(VK_BACK))) { MessageBeep(0); return 0; } return Key; }
Hier die Einbindung:
void __fastcall TReguliererStammForm::DBEdit44KeyPress(TObject *Sender, wchar_t &Key) { Key = nur_ganze_Zahlen(Sender, Key); }
Und hier der Fehler:
[ILINK32 Fehler] Error: Nicht auflösbares externes 'TReguliererStammForm::nur_ganze_Zahlen(System::TObject *, wchar_t&)' referenziert von E:\MICHEL\QUELLCODEDB\DEBUG_BUILD\REGULIERERSTAMMFRM.OBJ
-
Hast Du das gelesen?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-221882-and-start-is-0-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-.html
-
du hast in Zeile 6 die Klassenbezeichnung vor dem Funktionsnamen vergessen
wchar_t TReguliererStammForm::nur_ganze_Zahlen(TObject *Sender, wchar_t &Key) {
[Edit] @rudiM: den Beitrag hatte ich auch schon gepostet
-
Ja den Beitrag hatte ich schon vorher gelesen gehabt
aber Linnea, genau das wars
-
Hallo Linnea
du hast in Zeile 6 die Klassenbezeichnung vor dem Funktionsnamen vergessen
Müssen wir bei jedem scheiß Editfehler helfen, weil einer nicht suchen will? Ganz logisch: es wars!
gruß RudiHallo MichelM
du solltest dich schon mal entscheiden, ob du mit char oder wchar_t arbeiten willst.
-
Linnea hat mir den Fehler gezeigt. Was musst du denn jetzt noch hier so rummeckern??
Tut mir ja leid, wenn du den ganzen Thread nicht durchliest ... und wat is mit char oder wchar_t entscheiden??