Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi maskedit oder edit, wo nur 1 und 0 zugelassen sind (https://www.delphipraxis.net/10264-maskedit-oder-edit-wo-nur-1-und-0-zugelassen-sind.html)

KoRn117 14. Okt 2003 23:36


maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
hallo,

ich hab folgendes problem, ich weiß nciht wie ich ein edit fenster mache was nur nullen und einsen zuläßt. ich kapier das komische maskedit nicht so wirklich.


danke


korn117

Matthias_H 14. Okt 2003 23:59

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
Hi,

ist eigentlich simpel. Verwende das Ereignis OnKeyPress mit folgendem Code:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
    if not (key in [#8,'0'..'1']) then key:=#0;
end;
"#8" wird benötigt, damit die Rückwärtstaste funktioniert.

Grüße

nTE 15. Okt 2003 01:04

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
Dann könnte man immernoch per Copy & Paste andere Zeichen einfügen.

Sorry, kein Lösungsvorschlag von mir, denn ich geh jetzt pennen. =)
Gute Nacht.

APP 15. Okt 2003 05:58

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
Hallo,

Copy&Paste mit CTRL+C/V scheidet aus, da auch onKeyPress wirkt,
sodass nur mehr das Einfügen über das Kontextmenü mit der Maus
verhindert werden muß.

Variante 1:

Delphi-Quellcode:
PROCEDURE TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
  VAR Handled: Boolean);
BEGIN
  // Verhindert, dass das Kontextmenü aufklappt
  // etwas brachial und unelegant :-)
  Handled := True;
END;
Variante 2:
Delphi-Quellcode:
PROCEDURE TForm1.Edit1Exit(Sender: TObject);
VAR
  i                               : Integer;
BEGIN
  // beim Verlassen des Controls auf Gültikeit prüfen...
  FOR i := 1 TO length(Edit1.Text) DO
    IF NOT (Edit1.Text[i] IN ['0'..'1']) THEN
      BEGIN
        Edit1.Text := '';
        Edit1.SetFocus;
        Exit;
      END
END;

nTE 15. Okt 2003 07:41

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
Mein Vorschlag dazu wäre noch:
(Natürlich einiges übernommen von APP)

Delphi-Quellcode:
PROCEDURE TForm1.Edit1Exit(Sender: TObject);
VAR
  i                               : Integer;
  sTempStr                        : String;
BEGIN
  // beim Verlassen des Controls auf Gültikeit prüfen...
  sTempStr := Edit1.Text;

  FOR i := 1 TO length(sTempStr) DO
    IF NOT (sTempStr[i] IN ['0'..'1']) THEN
        Delete(sTempStr, i, 1);

  Edit1.Text := sTempStr;
END;
So wird nicht gleich der ganze Edit1.Text gelöscht, sondern nur die ungültigen Zeichen.
Übrigens würde ich das Kontextmenü nicht abschalten, ich finde es jedenfalls immer sehr unpraktisch, wenn ich ein Programm bedienen muss das sowas macht.

Alexander 15. Okt 2003 07:42

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
Mein Vorschlag:
Du kannst auch einfach ein SpinEdit nehmen :tongue:

KoRn117 15. Okt 2003 19:10

Re: maskedit oder edit, wo nur 1 und 0 zugelassen sind
 
vielen dank leute hatte schon mit dem ansatz gedacht (onkeypress) aber ich wusste nicht genau wie ich die bedingung schreiben sollte.


danke

ciao


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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