AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Backspace Taste im OnKeyPress Ereigniss abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Backspace Taste im OnKeyPress Ereigniss abfangen

Ein Thema von Darkchild · begonnen am 30. Jan 2007 · letzter Beitrag vom 30. Jan 2007
Antwort Antwort
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#1

Backspace Taste im OnKeyPress Ereigniss abfangen

  Alt 30. Jan 2007, 16:31
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
Ich bin der Geist der stets verneint und das mit recht, denn alles was entsteht ist wert das es zugrunde geht, drum besser wär das nichts entstünde, so ist denn alles was ihr Sünde, Zerstörung, kurz das Böse nennt, mein eigendliches Element.
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: Backspace Taste im OnKeyPress Ereigniss abfangen

  Alt 30. Jan 2007, 16:43
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
Philipp F.
  Mit Zitat antworten Zitat
Darkchild

Registriert seit: 13. Okt 2006
Ort: NRW
169 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Backspace Taste im OnKeyPress Ereigniss abfangen

  Alt 30. Jan 2007, 16:48
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.
Ich bin der Geist der stets verneint und das mit recht, denn alles was entsteht ist wert das es zugrunde geht, drum besser wär das nichts entstünde, so ist denn alles was ihr Sünde, Zerstörung, kurz das Böse nennt, mein eigendliches Element.
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#4

Re: Backspace Taste im OnKeyPress Ereigniss abfangen

  Alt 30. Jan 2007, 18:37
Wenn du's mit
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 )
Philipp F.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 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