Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi OnKeyDown wird bei Firemonkey 2x ausgeführt (https://www.delphipraxis.net/165900-onkeydown-wird-bei-firemonkey-2x-ausgefuehrt.html)

divBy0 20. Jan 2012 13:08

OnKeyDown wird bei Firemonkey 2x ausgeführt
 
Hallo,

ich bin gerade etwas mit Firemonkey am experimentieren und dabei ist mir aufgefallen, dass das OnKeyDown eines TEdit 2x ausgeführt wird.

Beispiel bei Werteingabe TEdit gelb färben, mit Return weiß färben funktioniert unter der VCL, aber unter Firemonkey nicht.

Delphi-Quellcode:
(* Firemonkey *)
procedure TForm1.EditVoltageKeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if Key = vkReturn then
  begin
    SetEditControlColor((Sender as TEdit), claWhite);
  end else
    SetEditControlColor((Sender as TEdit), claYellow);
end;
Delphi-Quellcode:
(* VCL *)
procedure TForm1.EditVoltageKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
  begin
    (Sender as TEdit).Color := clWindow;
  end else
    (Sender as TEdit).Color := clYellow;
end;
Kann das jemand bestätigen?

Bernhard Geyer 20. Jan 2012 13:26

AW: OnKeyDown wird bei Firemonkey 2x ausgeführt
 
Welcher Update-Stand? Evtl das Wochendende abwarten und das mit Update#4 testen.

divBy0 20. Jan 2012 13:28

AW: OnKeyDown wird bei Firemonkey 2x ausgeführt
 
XE2 Version 16.0.4358.45540 (Update #3)

himitsu 20. Jan 2012 13:34

AW: OnKeyDown wird bei Firemonkey 2x ausgeführt
 
Versuch es mal im OnKeyUp ... ist das dort immernoch so?

einbeliebigername 20. Jan 2012 13:42

AW: OnKeyDown wird bei Firemonkey 2x ausgeführt
 
Hallo,

Ja, mit folgendem unter XE2 Update 3:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    procedure Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    fKeyDownCount: Integer;
    fKeyUpCount: Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  Inc(fKeyDownCount);
  Label1.Text:= Format('KeyDownCount= %d; KeyUpCount= %d', [fKeyDownCount, fKeyUpCount]);
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  Inc(fKeyUpCount);
  Label1.Text:= Format('KeyDownCount= %d; KeyUpCount= %d', [fKeyDownCount, fKeyUpCount]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Text:= Format('KeyDownCount= %d; KeyUpCount= %d', [fKeyDownCount, fKeyUpCount]);
end;
Zählt immer schön bei jedem Tastendruck zwei hoch.
Zitat:

Zitat von himitsu (Beitrag 1146891)
Versuch es mal im OnKeyUp ... ist das dort immernoch so?

Da auch.

Im Update 4 soll ja sehr viel an FireMonkey verbessert worden sein.

Einbeliebigername.

divBy0 20. Jan 2012 13:58

AW: OnKeyDown wird bei Firemonkey 2x ausgeführt
 
Dann warte ich mal das Update #4 ab, soll ja in Kürze kommen.


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