unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Memo1Enter(Sender: TObject);
procedure Memo1Exit(Sender: TObject);
private
FDummyWinC: TWinControl;
procedure DummyWinCEnter(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
if not Assigned(FDummyWinC) then begin
FDummyWinC := TWinControl.Create(Self);
FDummyWinC.Parent := Self;
FDummyWinC.SetBounds(0,0,0,0);
FDummyWinC.OnEnter:=@DummyWinCEnter;
{ If it has to respond to TAB, include next 2 lines }
FDummyWinC.TabStop := true;
FDummyWinC.TabOrder:=Memo1.TabOrder+1;
end;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
FDummyWinC.SetFocus;
end;
procedure TForm1.Memo1Enter(Sender: TObject);
begin
Memo1.Lines.Add('Entered:'+FormatDateTime('hh:nn:ss',now));
end;
procedure TForm1.Memo1Exit(Sender: TObject);
begin
Memo1.Lines.Add('Exited:'+FormatDateTime('hh:nn:ss',now));
end;
procedure TForm1.DummyWinCEnter(Sender: TObject);
begin
FDummyWinC.PerformTab(True); // Tab to next control
end;
end.