AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnKeyDown vor Editfeldern etc.

Ein Thema von Ni-k · begonnen am 27. Dez 2008 · letzter Beitrag vom 28. Dez 2008
Antwort Antwort
Ni-k

Registriert seit: 4. Dez 2008
Ort: Bad Vilbel
8 Beiträge
 
#1

OnKeyDown vor Editfeldern etc.

  Alt 27. Dez 2008, 19:17
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: OnKeyDown vor Editfeldern etc.

  Alt 27. Dez 2008, 19:24
versuch mal .KeyPreview=True (hoffentlich richig geschrieben) der Form
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: OnKeyDown vor Editfeldern etc.

  Alt 27. Dez 2008, 19:27
Probier mal das:
Delphi-Quellcode:
procedure TForm1.Edit78KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key = 'athen
    ShowMessage('blablupp');
  key := #0;
end;
Mit der Zuweisung verhinderst Du die Weitergabe des Keys.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: OnKeyDown vor Editfeldern etc.

  Alt 27. Dez 2008, 20:24
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
  Mit Zitat antworten Zitat
Ni-k

Registriert seit: 4. Dez 2008
Ort: Bad Vilbel
8 Beiträge
 
#5

Re: OnKeyDown vor Editfeldern etc.

  Alt 28. Dez 2008, 13:53
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?
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen
Online

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
679 Beiträge
 
Delphi 12 Athens
 
#6

Re: OnKeyDown vor Editfeldern etc.

  Alt 28. Dez 2008, 14:04
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?) ?
Roland
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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