AGB  ·  Datenschutz  ·  Impressum  







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

[FMX] OnKeyDown kommt plötzlich nicht mehr durch

Ein Thema von Medium · begonnen am 20. Sep 2018 · letzter Beitrag vom 21. Sep 2018
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#1

[FMX] OnKeyDown kommt plötzlich nicht mehr durch

  Alt 20. Sep 2018, 15:34
Huhu DP!

Ich schreibe mir gerade eine eigene Edit-Komponente mit FireMonkey, da mir bei der beiliegenden ein paar Dinge fehlen. Ich leite diese von TShape ab, welches seinerseits von TControl ableitet.

In meiner Komponente überschreibe ich die Methode "KeyDown", die in TControl als virtual deklariert ist. Und bis vor ca. 2h habe ich damit auch wunderbar Tastendrücke erhalten - jetzt aber auf ein Mal nicht mehr. Und ich komme seit dem nicht dahinter, wieso das so ist.

In der VCL könnte ich es noch mit KeyPreview versuchen, aber dies scheint es in FMX überhaupt nicht zu geben. Meine Komponente hat ja auch, bisher, in einem frischen und leeren FMX Projekt wunderbar funktioniert.

Hier mal die relevanten Code-Teile:

Delphi-Quellcode:
type
  TMyEdit = class(TShape)
  private
    FText: String;
    FFont: TFont;
    .
    .
    .
    FIsClicked: Boolean;
    procedure SetIsClicked(const Value: Boolean);
  protected
    procedure Click; override;
    procedure KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property IsClicked: Boolean read FIsClicked write SetIsClicked;
  published
    property OnKeyDown;
    property OnKeyUp;
  end;

implementation

procedure TMyEdit.Click;
begin
  IsClicked := True;
  inherited;
end;

procedure TMyEdit.KeyDown(var Key: Word; var KeyChar: WideChar; Shift: TShiftState);
begin
  ShowMessage('Taste kommt');
  if IsClicked then
  begin
    ShowMessage('is auch geclickt');
    case Key of
      vkReturn: IsClicked := False;
      vkBack: ...
      vkDelete: ...
      vkLeft: ...
      vkRight: ...
      vkEnd: ...
      vkHome: ...
      else
        FText := FText + KeyChar;
    end;
    Repaint;
  end;
  inherited;
end;
Vorher wurde brav alles neue an FText angehängt, jetzt kommen die (nur zum debuggen eingesetzten) ShowMessages erst gar nicht an. IsClicked wird allerdings korrekt gesetzt, also prinzipiell bekommt die Komponente noch etwas mit.

Auch nachher im eigentlichen Projekt angelegte Handler für die OnKeyDown/Up Events werden nicht mehr ausgeführt. Wie kann das passieren? (Ich möchte gern aus verschiedenen Gründen kein fokussierbares Control daraus machen, und es war bisher auch gar nicht nötig um Tastendrücke zu bekommen.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 


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 05:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz