![]() |
Re: edit soll nur zahle annehmen
Mußt denn Du mit einem Array arbeiten?
Ein Set würde praktischer sein
Delphi-Quellcode:
dann in der OnkeyPress Routine
var
numbers: set of '0'..'9';
Delphi-Quellcode:
Grüße
if not key in numbers then
key:=#0; Klaus |
Re: edit soll nur zahle annehmen
Ich muss zwar zustimmen, dass man mehr suchen könnte, aber helfe trotzdem:
Delphi-Quellcode:
Du kannst auch noch "Decimalseperator" für einen "." (Punkt), "Thousandseperator" für ein "," (Komma) und "VK_Back" für das Erlauben zum Drücken der Backspacetaste einbauen.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if not (key in ['0'..'9']) then Key:= #0; end;
Delphi-Quellcode:
if not (key in ['0'..'9', DecimalSeparator, ThousandSeparator, Char(VK_BACK)]) then key:= #0;
Wie das mit deinem Code funtzen soll, kA sry ^^ |
Re: edit soll nur zahle annehmen
Guten Morgen! danke erstmal für die ganzen Tipps! Habe die Möglichkeit mit Setof und der anderen Variante getestet. Hat alles super geklappt. Nur Leider muss ich es mit einem array und einer Schleife die sich in der function befindet programmieren. Hätte dazu auch noch jemand einen Lösungsvorschlag?
Liebe Grüße Dennis |
Re: edit soll nur zahle annehmen
Zitat:
Zitat:
![]() ![]() ![]()
Delphi-Quellcode:
In dieser Situation ist for nicht geeignet, sondern while ist besser. Bitte überlege selbst, warum. Jürgen
for Zähler := Anfangswert to Endwert do Anweisung
// Anfangswert: erster Index des Array // Endwert: letzter Index des Array // Anweisung: prüfe und notiere, ob das durch Key übergebene Zeichen mit dem Zeichen am jetzigen Index übereinstimmt Tipp: Formuliere Dir bei solchen Aufgabenstellungen selbst die Umsetzung in Code der Alltagssprache; das klappt auch bei komplizierten Fragen! |
Re: edit soll nur zahle annehmen
Delphi-Quellcode:
Du solltest aber noch ein paar Tasten zulassen... wie z.b. Backspace und so ;)
const Myarray : array[0..9] of char = ('0','1','2','3','4','5','6','7','8','9');
implementation {$R *.DFM} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (IsKeyInArray(key)) then begin key := #0; end; end; function TForm1.IsKeyInArray(key: char): boolean; var i :integer; begin result := false; for i := 0 to 9 do begin if key = Myarray[i] then begin result := true; break; end end; end; das überlasse ich jetzt dir... An die anderen: Ich weiß das ich gerade die Lösung gepostet habe.... Sicher kann er diese nun kopiere und einfügen ... bringt ihm aber in der Klassenarbeit wenig... Ich hoffe er schreibt es nach ... und kopiert es nicht nur ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz