Tutorial-Key Ereignisse

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TEdit auf die Form. Wenn Sie vorhaben diese virtuellen Keycodes „VK_“ zu verwenden, dann müssen sie zusätzlich die unit Windows einbinden. Klicken Sie in Ihrer Form auf das EditFeld,wählen Sie im Objektinspektor Ereignisse und danach OnKeyPress. Erstezen Sie das Ereignis durch folgenden Quelltext:

Lazarus Animation OnKeyPress - Ereignis erstellen.
Lazarus: Ein Ereignis OnKeyPress erzeugen.

Entweder Sie geben die VK_Variablen-Namen an und binden die Unit Windows ein, oder sie geben die Nummer an, die den Kostanten zugeordnet sind. Ich Verwende hier zur besseren Lesbarkeit des Quelltextes die Konstanten. Hier Sehen Sie die Ceykodes aus der Unit Windows. Eine Liste der VK-Codes und nähere Informationen erhalten Sie hier.

Übersicht

Name: Beschreibung:
Ganzzahlen Lässt nur die Eingabe ganzer Zahlen zu, ohne MinusZeichen mit Löschtasten.
Ganzzahlen mit Minus Lässt nur die Eingabe ganzer Zahlen zu, mit MinusZeichen am Textanfang mit Löschtasten.
Flieskommazahlen Eingabe von Kommazahlen ohne Tausenderpunkte Minuszeichen am Anfang Erlaubt, ein Komma erlaubt.
Erste Groß Eingabe eines Textes erste Buchstabe Groß der Rest klein. Umlaute werden nicht unterstützt.

Nur Ganzzahlen zulassen ^

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
 If Not(Key In ['0'..'9',Char(VK_BACK), Char(VK_DELETE)]) then key:=#0;
end;

Zugelassen werden hier nur Zahlen und Char(VK_BACK), Char(VK_DELETE) Backspace und Entferne.

Nur Ganzzahlen zulassen mit Minuszeichen am Anfang ^

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  // das Erste Zeichen?
  if Edit1.Text = '' then
  begin
    if not (Key in ['0'..'9', '-', char(VK_BACK), char(VK_DELETE)]) then
      key := #0;
  end;
  // Wenn nicht dann ohne minus
  if Edit1.Text <> '' then
  begin
    if not (Key in ['0'..'9', char(VK_BACK), char(VK_DELETE)]) then
      key := #0;
  end;
end;

Fliekommazahlen mit einem Dezimalseparator ^

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
//Das ist sehr schlecht geschrieben , aber es funktioniert
//Erlaube Minus nur vorne und erlauben nur ein dezimaltrenner
//verbiete Buchstaben und Zeichen und Tausendertrenner
var
  Komma: boolean;
begin
  //Stelle Komma auf aus
  Komma := False;
  //Verbiete den tausenderpunkt
  if (key in [DefaultFormatSettings.ThousandSeparator]) then
    key := #0;
  //Wenn Trennzeichen dann Komma
  if pos(DefaultFormatSettings.DecimalSeparator, (Edit1.Text)) > 0 then
    komma := True;
  // das Erste Zeichen?
  if Edit1.Text = '' then
  begin
    //Dann mit Minus erlaube Komma
    if not (Key in ['0'..'9',
      '-', DefaultFormatSettings.DecimalSeparator, char(VK_BACK),
      char(VK_DELETE)]) then
      key := #0;
  end;
  // Wenn nicht dann ohne minus und ohne komma wenn vorhanden
  if (Edit1.Text <> '') and (komma) then
  begin
    if not (Key in ['0'..'9', char(VK_BACK),
      char(VK_DELETE)]) then
      key := #0;
  end;
  //  kein Minus, mit komma wen kein komma
  if (Edit1.Text <> '') and not (komma) then
  begin
    if not (Key in ['0'..'9', DefaultFormatSettings.DecimalSeparator,
      char(VK_BACK), char(VK_DELETE)]) then
      key := #0;
  end;
end;

Erster Buchstabe groß keine Umlaute ^

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if not (Key in ['A'..'Z','a'..'z',Char(VK_BACK), Char(VK_DELETE)]) then key := #0;
  // das erste Zeichen Großbuchstabe der Rest klein
  if Edit1.Text = '' then Key:=Upcase(Key) else lowerCase(key);
end;

Nun werden Sie hier in dem Zusammenhang sicherlich die Auswertung von Umlauten vermissen. Wir haben dieses Thema schon sehr oft gehabt. Und wenn Sie auf dieser Seite schon den ein oder anderen Artikel gelesen haben, dann werden Sie auch die damit verbunden Schwierigkeiten kennen. Um Umlaute vernünftig auswerten zu können ist das Ereignis OnKeyPress nicht das richtige. Deswegen verweisen wir hier auf folgende Seite, wo das Ereignis „UTF8KeyPress“ behandelt wird.