Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Backspace Taste im OnKeyPress Ereigniss abfangen (https://www.delphipraxis.net/85419-backspace-taste-im-onkeypress-ereigniss-abfangen.html)

Darkchild 30. Jan 2007 15:31


Backspace Taste im OnKeyPress Ereigniss abfangen
 
Hallo zusammen,

folgendes kleines Problemchen, oder besser gesagt 2. Aber mal besser vorne Anfangen.

1.Ich möchte bestimmte Tasten bei der Eingabe im Edit Feld nicht zulassen, andere wiederum schon, klappt auch fast alles so wie es soll, nur möchte ich noch die Backspace Taste zulassen, die im Augenblick gesperrt ist, nur wie muss ich diese Eintragen ?

Der Code sieht bis jetzt folgendermaßen aus:
Delphi-Quellcode:
procedure Tfrmgrundrechenarten.edtgrundrechenergebnissKeyPress(Sender: TObject;
  var Key: Char);
begin
case key of
    '0'..'9',',': ;
else
    Key := #0;
    Beep;
end;
end;
2.Das zweite Problem was ich habe ist das ich mir zufallszahlen generieren lasse um somit Aufgaben(Mathe) zu erstellen, klappt auch soweit wunderbar, nur möchte ich das bei der Division die ergebnisse nur mir 3 stellen hinterm Komma eigegeben werden müssen, das heist das Ergebniss welches ich mit der Eingabe vergleiche muss auf 3Stellen hinter dem Komma abgeschnitten werden, ich möchte die das vorher gerundet wird, sondern nur das die anderen stellen 'Verschwinden'.
Das ganze wäre sicherlich über die Stringfunktionen Pos usw. möglich, doch muss das ganze doch auch eleganter gehen, habe dann an die Formatbezeichner gedacht, aber das klappt scheinbar nicht, da ich die Variable mit dem Datentypen Variant belegt habe.

Kann mir da vieleicht jemand bei helfen ob es da noch andere Möglichkeiten gibt oder nur Stringfunktionen und Formatbezeichner in Frage kommen ?

Gruss
Darkchild

Flips 30. Jan 2007 15:43

Re: Backspace Taste im OnKeyPress Ereigniss abfangen
 
Hi.

1.)
Machs doch mit

Delphi-Quellcode:
if key in [0..9,#08] then
  //...
else
  begin
    Key := #0;
    Beep;
  end;
2.)
Machs mit trunc:
Delphi-Quellcode:
zahl := 123.456789;  //Alsbeispiel
zahl := zahl * 1000; //1000 = 3 Stellen
zahl := trunc(zahl); //Alles abschneiden
zahl := zahl / 1000; //1000 = 3 Stellen

Darkchild 30. Jan 2007 15:48

Re: Backspace Taste im OnKeyPress Ereigniss abfangen
 
Tach,

#08 ist das der ASCII Code für Backspace ?

Die Sache mit *1000 Trunc /1000 ist mir zwar schon in den Sinn gekommen, aber wie sieht es da mit der Ungenauigkeit aus, da die Basis Zahl mit weiteren Rechenoperationen an Genauigkeit verliert oder hat das auf 3 Stellen ninter dem Komma keine Relevance, da die Ungenauigkeit erst weiter hinten auftritt, denn die Zahl darf vom Ursprünglichen ergebniss nicht verfälscht werden.

Gruss
Darkchild

P.S: Danke erstmals, das mit der Backspace Taste hat geklappt , habe das dennoch mit Case und nicht mit if gemacht, klappt genauso gut. THX.

Flips 30. Jan 2007 17:37

Re: Backspace Taste im OnKeyPress Ereigniss abfangen
 
Wenn du's mit
Delphi-Quellcode:
zahl := zahl div 1000;
machen würdest dann hätte es natürlich Auswirkungen, aber so auf nur 3 Stellen denk ich nicht.

08 is Hexa-und Dezimaler Code für Backspace ( siehe hier )


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz