AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Tastatureingabe KeyDown Firemonkey - Android
Thema durchsuchen
Ansicht
Themen-Optionen

Tastatureingabe KeyDown Firemonkey - Android

Ein Thema von Tinko · begonnen am 18. Nov 2016 · letzter Beitrag vom 18. Nov 2016
 
Tinko

Registriert seit: 23. Jan 2014
6 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Tastatureingabe KeyDown Firemonkey - Android

  Alt 18. Nov 2016, 23:34
Vielen Dank. OK, das sieht dann etwa so aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.Edit, FMX.ScrollBox, FMX.Memo, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
    procedure Edit1ChangeTracking(Sender: TObject);
    procedure Memo1ChangeTracking(Sender: TObject);
    procedure Memo1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
    procedure HandleKeyEvent(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.FMX}

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  // HardKeys abrufen
  // Key := 0;
  // KeyChar := #0;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  // Return-key pressed
  if (Key = 13) or (Key = 10) then
    showmessage('KeyDownEvent Key=' + inttostr(Key) + ', KeyChar=' + KeyChar);
end;

procedure TForm1.Edit1ChangeTracking(Sender: TObject);
begin
  HandleKeyEvent(Sender); // or define in object inspector + code in onKeyDown-Event!!!
  // ... other code
end;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  // Return-key pressed
  if (Key = 13) or (Key = 10) then
    showmessage('KeyDownEvent Key=' + inttostr(Key) + ', KeyChar=' + KeyChar);
end;

procedure TForm1.Memo1ChangeTracking(Sender: TObject);
begin
  HandleKeyEvent(Sender);
  // ... other code
end;

procedure TForm1.HandleKeyEvent(Sender: TObject);
var
  i: integer;
  t: string;
  tempText: string;
  Key: Word;
  KeyChar: Char;
begin

{$IFDEF Android}
  // Detect #10 and #13 line breaks
  Key := 0;
  KeyChar := #0;

  if (Sender is TEdit) then
    t := (Sender as TEdit).Text;
  if (Sender is TMemo) then
    t := (Sender as TMemo).Text;

  // Detect line breaks #10 or #13
  tempText := '';
  if Length(t) > 0 then
  begin
    i := Low(t);
    while i <= High(t) do
    begin
      if (t[i] = #13) or (t[i] = #10) then
      begin
        Key := ord(t[i]); // 13 or 10
        KeyChar := t[i]; // #13 or #10
      end
      else
        tempText := tempText + t[i];
      inc(i);
    end;

    if (Key <> 0) then
    begin
      if (Sender is TEdit) then
      begin
        (Sender as TEdit).Text := tempText;
        if assigned((Sender as TEdit).OnKeyDown) then
          (Sender as TEdit).OnKeyDown(Sender, Key, KeyChar, []);
      end;
      if (Sender is TMemo) then
      begin
        (Sender as TMemo).Text := tempText;
        if assigned((Sender as TMemo).OnKeyDown) then
          (Sender as TMemo).OnKeyDown(Sender, Key, KeyChar, []);
      end;
    end;
  end;
{$ENDIF}
end;

end.
  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 08:01 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