Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edit-Feld: nur Zahlen + Kopieren/Einfügen? (https://www.delphipraxis.net/41399-edit-feld-nur-zahlen-kopieren-einfuegen.html)

romber 2. Mär 2005 21:57


Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Hallo!

Ich wollte es so machen, daß in einem Edit-Feld nur Zahlen und Backspace erlaubt ist:

Delphi-Quellcode:
...
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
...
Wie kann ich die Kode modernisieren dass auch Kopieren (STRG + C) und Einfügen (STRG + V) funktioniert?

Danke!

Airblader 2. Mär 2005 22:08

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Klingt blöd, aber dann nimm doch gleich ein TSpinEdit :)

air

romber 2. Mär 2005 22:12

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Nein, es muss unbedingt eine TEdit sein.

sniper_w 2. Mär 2005 22:17

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Das funktioniert sowieso. Verstehe dich nicht ganz?

Binärbaum 2. Mär 2005 22:19

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von romber
Wie kann ich die Kode modernisieren dass auch Kopieren (STRG + C) und Einfügen (STRG + V) funktioniert?

Verwende doch statt KeyPress das OnKeyDown-Ereignis. Dort kann man auch abfragen, ob STRG, ALT, Shift, usw. gedrückt wurde.

MfG
Binärbaum

romber 2. Mär 2005 22:23

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Was ist da nicht zu verstehen? In einer TEdit dürfen nur Zahlen drin sein. Außerdem muss mann die Kopieren/Einfügen - Funktionen benutzen können.

Nikolas 2. Mär 2005 22:23

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Geh doch im Onchange alle Buchstaben durch und überprüfe ob es Zahlen sind:

Delphi-Quellcode:
str:='';
for i:=0 to length(e1.text)-1 do
if (e1.text[i] in ['0'..'9']) then str:=str+e1.text[i];

e1.text:=str;
Alternativ kannst du auch die Buchstaben per delete rausnehmen.

Binärbaum 2. Mär 2005 22:26

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von Toxman
Geh doch im Onchange alle Buchstaben durch und überprüfe ob es Zahlen sind:

Delphi-Quellcode:
str:='';
for i:=0 to length(e1.text)-1 do
if (e1.text[i] in ['0'..'9']) then str:=str+e1.text[i];

e1.text:=str;
Alternativ kannst du auch die Buchstaben per delete rausnehmen.

Das ist fast schon etwas zu umständlich. Man bräuchte diese for-Schleife gar nicht, wenn man schon im OnKeyXXXXX die ungültigen Zeichen rausfiltert.

Luckie 2. Mär 2005 22:29

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von Binärbaum
Das ist fast schon etwas zu umständlich. Man bräuchte diese for-Schleife gar nicht, wenn man schon im OnKeyXXXXX die ungültigen Zeichen rausfiltert.

Es geht aber auch um das Einfügen über die Zwischenablage.

romber 2. Mär 2005 22:42

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von Luckie
Es geht aber auch um das Einfügen über die Zwischenablage.

Genau. Und wie mache ich das?

Luckie 2. Mär 2005 22:44

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von romber
Zitat:

Zitat von Luckie
Es geht aber auch um das Einfügen über die Zwischenablage.

Genau. Und wie mache ich das?

Wie man das macht, hat dir doch Toxman schon gezeigt.

Binärbaum 2. Mär 2005 22:48

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von romber
Zitat:

Zitat von Luckie
Es geht aber auch um das Einfügen über die Zwischenablage.

Genau. Und wie mache ich das?

Wie man das macht, hat dir doch Toxman schon gezeigt.

Müsste dort die for-Schleife nicht von 1 bis length(e1.text) laufen statt von 0 bis length(e1.text)-1 :?: IMHO beginnen die Buchstaben eines Strings nämlich bei 1 und nicht bei null.

MfG
Binärbaum

jim_raynor 2. Mär 2005 22:53

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Zitat:

Zitat von Binärbaum
Zitat:

Zitat von Luckie
Zitat:

Zitat von romber
Zitat:

Zitat von Luckie
Es geht aber auch um das Einfügen über die Zwischenablage.

Genau. Und wie mache ich das?

Wie man das macht, hat dir doch Toxman schon gezeigt.

Müsste dort die for-Schleife nicht von 1 bis length(e1.text) laufen statt von 0 bis length(e1.text)-1 :?: IMHO beginnen die Buchstaben eines Strings nämlich bei 1 und nicht bei null.

MfG
Binärbaum

Korrekt.

Sharky 3. Mär 2005 07:32

Re: Edit-Feld: nur Zahlen + Kopieren/Einfügen?
 
Hai,

ich würde dem TEdit ein eigenes PopupMenü zuweisen und dann die einzelnen Funktionen des "normalen" Popups nachbilden.
In der Funktion für das Einfügen einfach prüfen ob im Clipboard nur Zahlen stehen und nur dann diese Einfügen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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 by Thomas Breitkreuz