Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnKeyDown vor Editfeldern etc. (https://www.delphipraxis.net/126540-onkeydown-vor-editfeldern-etc.html)

Ni-k 27. Dez 2008 18:17


OnKeyDown vor Editfeldern etc.
 
Hallo Leute,

ich habe verschiedenen Tasten mit einen OnKeyDown Event funktionen zugewiesen. Jetzt habe ich ebenfalls einige Edit- und Memofelder in die Form eingefügt. Mein Problem ist jetzt, dass bei Tastendruck nicht mehr das Event ausgelöst wird, sondern die Taste im Editfeld wirkt (Bsp: Bei der Taste A soll er eine message ausgeben, aber er schreibt jetzt einfach ein a ins Editfeld)

Wie kann ich das verhindern?

Grüße, Nico

himitsu 27. Dez 2008 18:24

Re: OnKeyDown vor Editfeldern etc.
 
versuch mal .KeyPreview=True (hoffentlich richig geschrieben) der Form

Michael Habbe 27. Dez 2008 18:27

Re: OnKeyDown vor Editfeldern etc.
 
Probier mal das:
Delphi-Quellcode:
procedure TForm1.Edit78KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key = 'a' then
    ShowMessage('blablupp');
  key := #0;
end;
Mit der Zuweisung verhinderst Du die Weitergabe des Keys.

Hawkeye219 27. Dez 2008 19:24

Re: OnKeyDown vor Editfeldern etc.
 
Hallo Nico,

wenn du die Tasten im gesamten Formular abfangen möchtest, bevor sie einem Control übergeben werden, dann könntest du das Ereignis Delphi-Referenz durchsuchenTForm.OnShortCut verwenden:

Delphi-Quellcode:
// uses Menus

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  Key : TShortCut;
begin
  Key := ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData));

  case Key of

    Ord('A'):
      begin
        Self.Caption := 'lowercase a';
        Handled := True;
      end;

    scShift or Ord('A'):
      begin
        Self.Caption := 'uppercase a';
        Handled := True;
      end;

  end;
end;
Du solltest allerdings einen guten Grund haben, die Eingabe von Buchstaben in Memo- und Editfeldern zu verhindern.

Gruß Hawkeye

Ni-k 28. Dez 2008 12:53

Re: OnKeyDown vor Editfeldern etc.
 
Hey Jungs, danke für eure Tipps, sehr interessant. Ich befürchte allerdings inzwischen, dass es wahrscheinlich besser ist, wenn ich alle Eingaben in einem Voreinstellfeld mache und dass eigentliche Programm erst danach starte. Hat jemand einen Link der erklärt wie das geht?

blawen 28. Dez 2008 13:04

Re: OnKeyDown vor Editfeldern etc.
 
Zitat:

Zitat von Ni-k
Hey Jungs, danke für eure Tipps, sehr interessant. Ich befürchte allerdings inzwischen, dass es wahrscheinlich besser ist, wenn ich alle Eingaben in einem Voreinstellfeld mache und dass eigentliche Programm erst danach starte. Hat jemand einen Link der erklärt wie das geht?

Ich verstehe Deine Frage nicht ganz. Was verstehst Du unter "Voreinstellfeld" und wo liegt Dein genaues Problem (Programm starten?) ?


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