Einzelnen Beitrag anzeigen

Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#1

Doppelklick im TTouckKeyboard (Delphi 2010)

  Alt 18. Apr 2012, 15:04
Hallo,
ich verwende das TTouchKeyboard von Delphi 2010 in meiner Anwendung. Beim Test der Anwendung auf einem Tablet PC (Windows 8 Beta) ist mir nun aufgefallen, dass sich die Tastatur beim schnellen Schreiben mit der Maus anders verhält als bei Touch-Eingabe.
Klicke ich mit der Maus (schnell) auf den Button 'A', entstehen 2 'A'. Tippe ich mit dem Finger (schnell) auf den Button, wird nur 1 'A' geschrieben. Ich muss eine Pause zwischen den beiden Finger-Tipps lassen, die ich als störend empfinde - gerade wenn man 2 Mal den gleichen Buchstaben tippt.

Um der Sache auf den Grund zu gehen, habe ich mir ein TBeepTouchKeyboard abgeleitet und die Events OnClick und OnDblClick veröffentlicht:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Keyboard;

type
  TBeepTouchKeyboard = class(TTouchKeyboard)
  published
    Property OnClick;
    property OnDblClick;
  end;

  TForm1 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    BeepKeyboard: TBeepTouchKeyboard;
    procedure OnTouchKeyDown(Sender: TObject);
    procedure OnTouchKeyDblKlick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeAndNil(BeepKeyboard);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BeepKeyboard := TBeepTouchKeyboard.Create(self);
  BeepKeyboard.Parent := self;
  BeepKeyboard.OnClick := OnTouchKeyDown;
  BeepKeyboard.OnDblClick := OnTouchKeyDblKlick;
  BeepKeyboard.Top := 10;
  BeepKeyboard.Left := 10;
  BeepKeyboard.Width := 300;
  BeepKeyboard.Height := 200;
end;

procedure TForm1.OnTouchKeyDown(Sender: TObject);
begin
  Beep();
  self.Caption := 'Einfacher Klick';
end;

procedure TForm1.OnTouchKeyDblKlick(Sender: TObject);
begin
  Self.Caption := 'Doppelklick';
end;

end.
Folgendes Verhalten habe ich beobachtet:
  • 1 Mal Maus klicken: 1 Beep, 1 Buchstabe geschrieben, Caption = 'Einfacher Klick'
  • 2 Mal Maus klicken: 2 Beeps, 2 Buchstaben geschrieben, Caption = 'Einfacher Klick'
  • 1 Mal Finger tippen: 1 Beep, 1 Buchstabe geschrieben, Caption = 'Einfacher Klick'
  • 2 Mal Finger tippen: 1 Beep, 1 Buchstabe geschrieben, Caption = 'Einfacher Klick'

Wie bringe ich das TTouchKeyboard dazu, bei schneller Touch-Eingabe 2 Buchstaben zu schreiben? Mir ist (fast) jede Lösung recht, ich möchte nur nicht Delphis Keyboard.pas ändern müssen.

Ich bin für jede Hilfe dankbar.
  Mit Zitat antworten Zitat