|
|
|
TKeyMacro コンポーネントは、キーボードマクロを実現するための 非ビジュアルコンポーネントです。
Delphi-IDE のコードエディタで、Shift + Ctrl + R で記録開始・記録終了 Shift + Ctrl + P で記録されたキー操作を再現することが出来ますが、 TKeyMacro コンポーネントは、この仕組みを、フォーカスを受け取る (OnEnter イベントを持つ)TWinControl に対して実現するためのコンポーネントです。
使い方
TKeyMacro の Control プロパティに TMemo, TEdit などキーボードマクロの 対象となるコンポーネントのインスタンスを代入しておき、 BeginRec メソッドで記録、EndRec メソッドで記録終了、 Execute メソッドで記録したマクロを実行することが出来ます。 開発日誌のページに 技術情報があります。
サンプルコーディング。サンプルプロジェクト実現部そのままですが。
procedure TForm1.Memo1Enter(Sender: TObject);
begin
// 対象コンポーネントを取得
KeyMacro1.Control := TWinControl(Sender);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
// マクロ記録開始・終了
if not (KeyMacro1.Status in [msRecording, msRunning]) then
KeyMacro1.BeginRec
else
KeyMacro1.EndRec;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
// マクロ実行
KeyMacro1.Execute;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
// マクロデータをクリア
KeyMacro1.Clear;
end;
procedure TForm1.KeyMacro1Change(Sender: TObject);
begin
// TKeyMacro コンポーネントの状態に合わせて
// フォーム上のビジュアルを更新する。
{
+------+----------------------+----------------------+-----------+
| | SpeedButton1 (Rec) | SppedButton1 (Exe) | Label1 |
+------+---------+------------+---------+------------+-----------+
|Status| Enabled | Font.Style | Enabled | Font.Style | Caption |
+------+---------+------------+---------+------------+-----------+
|無し | True | [] | False | [] | None |
+------+---------+------------+---------+------------+-----------+
|記録中| True | [Bold] | False | [] | Recording |
+------+---------+------------+---------+------------+-----------+
|待機中| True | [] | True | [Bold] | Waiting |
+------+---------+------------+---------+------------+-----------+
|実行中| False | [] | False | [Bold] | Running |
+------+---------+------------+---------+------------+-----------+
}
case KeyMacro1.Status of
msNone:
begin
SpeedButton1.Enabled := True;
rec1.Enabled := True;
exe1.Enabled := False;
SpeedButton2.Enabled := False;
SpeedButton3.Enabled := False;
Label1.Font.Color := clBlack;
Label1.Caption := 'None';
end;
msRecording:
begin
SpeedButton1.Enabled := True;
rec1.Enabled := True;
exe1.Enabled := False;
SpeedButton2.Enabled := False;
SpeedButton3.Enabled := False;
Label1.Font.Color := clRed;
Label1.Caption := 'Recording';
end;
msWaiting:
begin
SpeedButton1.Enabled := True;
rec1.Enabled := True;
exe1.Enabled := True;
SpeedButton2.Enabled := True;
SpeedButton3.Enabled := True;
Label1.Font.Color := clMaroon;
Label1.Caption := 'Waiting';
end;
msRunning:
begin
SpeedButton1.Enabled := False;
rec1.Enabled := False;
exe1.Enabled := False;
SpeedButton2.Enabled := False;
SpeedButton3.Enabled := False;
Label1.Font.Color := clRed;
Label1.Caption := 'Running';
end;
end;
end;
|
|