Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi bestimmte Tasten Sperren. (https://www.delphipraxis.net/69054-bestimmte-tasten-sperren.html)

Noobinator 9. Mai 2006 16:20


bestimmte Tasten Sperren.
 
HY community.

Ich habe ein Problem.
Wir sollen in der Schule ein Programm schreiben, in welchem man nur den Ziffernblock benutzen kann.
(Tasten 0-9)

Nun ist meine frage, wie geht das?

Ich dachte da an Invalidkey, aber da müsste ich ja jeden einzeln sperren.
Gibt es da eine andere Möglichkeit,wie das mann alles außer ein paar bestimme sperrt?

Wenn nicht, wie müsste das mit dem invalidkey aussehen?
habe leider kein Plan davon, und die HIlfe hat mich auch nicht weitergebracht.

Mfg
Noobinator

Peeters 9. Mai 2006 16:23

Re: bestimmte Tasten Sperren.
 
Beispiel mit KeyPress:

Delphi-Quellcode:
procedure TFormHaupt.EditVKKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then Key := #0;
  if not (Key in ['0'..'9', #8, #13]) then Key := #0;
end;

Noobinator 9. Mai 2006 16:32

Re: bestimmte Tasten Sperren.
 
Zitat:

Zitat von Peeters
Beispiel mit KeyPress:

Delphi-Quellcode:
procedure TFormHaupt.EditVKKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then Key := #0;
  if not (Key in ['0'..'9', #8, #13]) then Key := #0;
end;

könntest du das bitte mal kommentieren?
steige da nicht dahinter <---- NOOB

danku 9. Mai 2006 16:48

Re: bestimmte Tasten Sperren.
 
naja du lässt nur den zifferblock zu.
das heißt das alle anderen zeichen "umgeschrieben" werden müssen von dir.
in dem beispiel wir das z.b. so realisiert:

if Key = #13 then Key := #0;
// wenn eingabe = zeilenvorschub [enter-taste] -> dann soll 0 erscheinen

DevilsCamp 9. Mai 2006 16:48

Re: bestimmte Tasten Sperren.
 
Zitat:

Zitat von Peeters
Beispiel mit KeyPress:

Delphi-Quellcode:
procedure TFormHaupt.EditVKKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', #8, #13]) then Key := #0;
end;


mit
Delphi-Quellcode:
Key in ['0'..'9', #8, #13]
prüfst du, ob die gedrückte Taste eine der Ziffern, Backspace (#8) oder Return (#13) ist.

durch
Delphi-Quellcode:
if not (Key in ['0'..'9', #8, #13]) then Key := #0;
setzt du dann Key bei druch einer anderen Taste auf #0, das ist der Wert, der dem TEdit (z.B.) sagt, dass nicht auf den Tastendruck reagiert werden soll.

Die Zeile
Delphi-Quellcode:
if Key = #13 then Key := #0;
kannst du stehen lassen, wenn die Return-Taste nicht auch nicht gedrückt werden darf (ansonsten löschen oder auskommentieren).

Auf Backspace sollte in jedem Fall geprüft werden, da man sonst Falsch-Eingaben nur korrigieren kann, wenn man alles markiert und überschreibt

Neon-chan 9. Mai 2006 16:57

Re: bestimmte Tasten Sperren.
 
Denk aber dran bei der Lösung KeyPreview von Mainform auf true zu setzen :)

DevilsCamp 9. Mai 2006 16:59

Re: bestimmte Tasten Sperren.
 
Zitat:

Zitat von Neon-chan
Denk aber dran bei der Lösung KeyPreview von Mainform auf true zu setzen :)

DANN muss aber nicht das OnKeyPress-Ereignis des Edits sondern das des Forms benutzt werden.

Phistev 9. Mai 2006 17:00

Re: bestimmte Tasten Sperren.
 
Zitat:

Zitat von Neon-chan
Denk aber dran bei der Lösung KeyPreview von Mainform auf true zu setzen :)

Wenn's das KeyPress vom Edit ist (anders gäb's leicht Probs), sehe ich keinen Grund dafür.

/edit: Schon wieder. Wo ist dieser rote Kasten?

Noobinator 9. Mai 2006 19:10

Re: bestimmte Tasten Sperren.
 
also mein Programm sieht wie folgt aus:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;


type
    TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);




  private
    { Private-Deklarationen }
  public
     procedure FormVKKeyPress(Sender: TObject; var Key: Char);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

...



procedure TForm1.FormCreate(Sender: TObject);
begin
form1.onkeypress := FormVKKeyPress;
.....

end;


procedure TForm1.FormVKKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then Key := #0;
  if not (Key in ['0'..'9', #8]) then Key := #0;
end;
end.
aber es funzt nicht... ich möchte nur die Tasten Backspace und 0-9 zulassen.
was ist falsch?

Flare 9. Mai 2006 19:33

Re: bestimmte Tasten Sperren.
 
Zitat:

Zitat von Noobinator
Delphi-Quellcode:
procedure TForm1.FormVKKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then Key := #0;
  if not (Key in ['0'..'9', #8]) then Key := #0;
end;
end.

hmmm...doch nicht, jetzt zeigt er es richtig an, ich dachte es wären die eckigen Klammern :gruebel:


Wo liegt genau der Fehler? (Compilermeldung oder Beschreibung was du machst, was es machen sollte und was dennoch passiert)

Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Seite 1 von 6  1 23     Letzte »    

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