Einzelnen Beitrag anzeigen

Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: FormKeyPress doppelten Aufruf verhindern

  Alt 26. Jan 2019, 10:49
Das FormKeyPress-Ereignis wird niemals "doppelt" aufgerufen, damit es überhaupt aufgerufen wird muss Form.KeyPreview := TRUE gesetzt werden (im Objektinspektor, oder per Code).

Nur in diesem Fall bekommt man in FormKeyPress vor der ComboBox die Gelegenheit zu entscheiden, ob eine eigene Verarbeitung in Frage kommt bzw. eine spezielle Reaktion auf die Taste erwünscht ist. Auch kann man hier Entscheiden ob sie eventuell nicht an die ComboBox übergeben werden soll (Key := #0).

Folgendes (ansonsten sinnbefreites) Beispiel zeigt dir ein paar Möglichkeiten (auf der Form befinden sich ein Memo, eine ComboBox und eine Checkbox):

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := TRUE;
// KeyPreview := FALSE;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  //
  Memo1.Lines.Add(Format('Key: %s', [Key]));


  if UpCase(Key)='Cthen
  begin
    CheckBox1.Checked := Not CheckBox1.Checked;
  end;

  if Key='athen
  begin
    Key := #0;
    Memo1.Lines.Add('No lower case ''a'' at all!');
  end;

  if Key='vthen
  begin
    Key := UpCase(Key);
  end;
end;
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat