TEdit bearbeiten, wieso klappt der Code nicht?
-
Was soll VK_BACK sein? Woher hast du den Wert?
-junix
-
Aus der Hilfe:
"VK_BACK Taste Rück"
an VK_CLEAR hab ich auch gedacht aber die ist es nicht. Welche soll es denn sonst sein.
-
Bei mir (BCB4) klappt VK_BACK wunderbar...
-junix
-
Kannst du den Code mal bei dir ausprobieren bitte, ich hab Version 5 vom BCB
void __fastcall TRechner::Edit1KeyPress(TObject *Sender, char &Key) { if(Key<'0' || Key>'9' && Key != VK_DELETE && Key != VK_BACK) Key=0; }
-
Klammern heisst das Zauber wortt... && bindet stärker als ||
-junix
-
aha junix und woher wußtest du das jetzt?
-
C/C++-Grundlagen...
Siehs mal so:
Programmieren ist wie Komponieren. Streng logisch, und doch leicht verspielt, offen für alle Variantionen, freizügig und streng.
Die Programmiersprache ist das Instrument auf dem man das Spielen lernen muss. Mit dem man üben muss. Erst mit der Liebe zum Instrument kann es erblühn und sein wahres Volumen offenbaren. *-junix
*) Sollte ein Wink mit dem Zaunpfahl sein, ich hoffe er kommt an (-;
[ Dieser Beitrag wurde am 18.12.2002 um 23:59 Uhr von junix editiert. ]
-
Supi vielen dank.
Ich hab mich nur gewundert weil
void __fastcall TRechner::Edit1KeyPress(TObject *Sender, char &Key) { if(Key<'0' || Key>'9' && Key != VK_DELETE) Key=0; }
hat problemlos geklappt, hab ich nun DELETE durch BACK ersetzt ging es nicht mehr das hat mich verwundert bzw verwundert mich. Warum geht das nicht?
void __fastcall TRechner::Edit1KeyPress(TObject *Sender, char &Key) { if(Key<'0' || Key>'9' && Key != VK_BACK) Key=0; }
-
Schau dir mit dem Debugger mal den Wert für VK_DELETE und VK_BACK gelten und dann rechne deine Verknüpfung mal von Hand durch. (mit den richtigen Bindungen!)
-junix
-
Original erstellt von <LESMONA>:
Daher hab ich den Code dochIch wollte eigentlich auf den meiner Meinung nach viel effizienteren Vorschlag mit SetWindowLong hinweisen.
-
Hi!
Nochmal zu dem dritten Punkt. Wär da nicht
if(Edit1->Text.IsEmpty())
wesentlich schneller (Weniger Schritte)?
Außerdem muss man beim Vergleichen immer == verwenden und nicht nur =.
Ts,ts,ts! Junix, wo soll das nur enden?Phips
-
Original erstellt von Jansen:
Ich wollte eigentlich auf den meiner Meinung nach viel effizienteren Vorschlag mit SetWindowLong hinweisen.Dann möchte ich aber nochmal auf die IMHO bessere Variante per Überschreiben von CreateParams() hinweisen.
-
Original erstellt von Phips:
Ts,ts,ts! Junix, wo soll das nur enden?Hööö? was denn?
-junix
-
Er meinte mich.
Von wegen "IsEmpty()", ich habe nicht umsonst geschrieben "ist eine zulässige Möglichkeit". Denn zB. if (Edit1-Text) dürfte noch kürzer/schneller sein.
-
Original erstellt von Jansen:
**Er meinte mich.Von wegen "IsEmpty()", ich habe nicht umsonst geschrieben "ist eine zulässige Möglichkeit". Denn zB. if (Edit1-Text) dürfte noch kürzer/schneller sein.**
"if(Edit1->Text)" geht garned, und wir haben schonmal mit Peter diskutiert, und herausgefunden, dass "if(Edit1->Text.IsEmpty())" schneller ist als "if(Edit1->Text=="")". Soviel zur Erbsenzählerei.
-
Nochmal was zur Erbsenzählerei:
Abfrage ob Edit Feld leer ist. Das ist der Thread mit der "Diskussion" mit Peter.
-
Krass was hier so abgeht
Bin wieder weg, ist ja OT
Wünsche aber trotzdem schon mal schöne Weihnachten
-
Wenn man vom Teufel spricht...
Dir auch alles Gute, Peter.
-
Ups, da hab ich euch velwechsert.
'tschuldigung
-
Du scheinst öfter mal was zu verwechseln.