16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"D5:コードエディタ(Shift+F3で↑検索)"
この発言に対し以下のコメントが寄せられています
#00955 Satobe さん RE:D5:コードエディタ(Shift+F3で↑検索)
◆解説
Delphi5 のコードエディタに「Shift+F3キーで↑検索」する機能
を追加します。
◆実際のコード(およびインストール手順)
以下のユニットを作成し、適当なフォルダに保存します。
----- ユニット名 unitSearchFB.pas -----
unit unitSearchFB;
//
//コードエディタ:キー割り当て拡張
// F3 ↓検索
// SHIFT+F3 ↑検索
//
interface
procedure Register;
implementation
uses Windows, Classes, SysUtils, ToolsAPI, Menus, Forms, Dialogs,
Controls, ActiveX;
const
kfImplicits = kfImplicitShift or kfImplicitModifier
or kfImplicitKeypad;
type
TSearchFB = class(TNotifierObject, IUnknown, IOTANotifier,
IOTAKeyboardBinding)
procedure SearchForward(const Context: IOTAKeyContext;
KeyCode: TShortCut; var BindingResult: TKeyBindingResult);
procedure SearchBackward(const Context: IOTAKeyContext;
KeyCode: TShortCut; var BindingResult: TKeyBindingResult);
function GetBindingType: TBindingType;
function GetDisplayName: string;
function GetName: string;
procedure BindKeyboard(const BindingServices: IOTAKeyBindingServices);
end;
procedure Register;
begin
(BorlandIDEServices as IOTAKeyBoardServices)
.AddKeyboardBinding(TSearchFB.Create);
end;
{ TSearchFB }
procedure TSearchFB.BindKeyboard(
const BindingServices: IOTAKeyBindingServices);
begin
BindingServices.AddKeyBinding([ShortCut(VK_F3, [])],
SearchForward, nil, kfImplicits,
'', 'SearchAgainItem');
BindingServices.AddKeyBinding([ShortCut(VK_F3, [ssShift])],
SearchBackward, nil, kfImplicits,
'', 'SearchAgainItem');
end;
procedure TSearchFB.SearchForward(const Context: IOTAKeyContext;
KeyCode: TShortCut; var BindingResult: TKeyBindingResult);
begin
if Context.EditBuffer.EditPosition.SearchOptions.Direction
<> sdForward then begin
Context.EditBuffer.EditPosition.SearchOptions
.SetDirection(sdForward);
Context.EditBuffer.EditPosition.SearchAgain;
end;
Context.EditBuffer.EditPosition.SearchAgain;
BindingResult := krHandled;
end;
procedure TSearchFB.SearchBackward(const Context: IOTAKeyContext;
KeyCode: TShortCut; var BindingResult: TKeyBindingResult);
begin
if Context.EditBuffer.EditPosition.SearchOptions.Direction
<> sdBackward then begin
Context.EditBuffer.EditPosition.SearchOptions
.SetDirection(sdBackward);
Context.EditBuffer.EditPosition.SearchAgain;
end;
Context.EditBuffer.EditPosition.SearchAgain;
BindingResult := krHandled;
end;
function TSearchFB.GetBindingType: TBindingType;
begin
Result := btPartial;
end;
function TSearchFB.GetDisplayName: string;
begin
Result := 'Shift+F3で↑検索';
end;
function TSearchFB.GetName: string;
begin
Result := 'Satobe.SearchFB';
end;
end.
---------- ここまで ----------
Delphi5 を起動、[ファイル|すべて閉じる]
[コンポーネント|コンポーネントのインストール]、
[新規パッケージに追加]タブをクリック
ユニットファイル名 → unitSearchFB.pas のフルパス名
パッケージファイル名 → 上記と同じフォルダの SearchFB.dpk とする
パッケージの説明 → エディタ拡張(Shift+F3で↑検索)
[OK] ボタンをクリック
「すぐにコンパイル/インストールしますか?」→ [いいえ]ボタン
コードエディタを[×]ボタンで閉じて、パッケージエディタが見える
ようにする
パッケージエディタの[オプション]をクリック
[情報]タブ
パッケージの種類 → 設計時のみ使用可能
再構築時の動作 → 直接指定した時以外再構築しない
[コンパイラ]タブ(このあたりは適当(^^;)
デバッグ情報/ローカルシンボル/シンボル情報、あたりを OFF
[ディレクトリ/条件]タブ
出力ディレクトリ/ユニット出力ディレクトリ/DCP出力ディレクトリ
を(とりあえず(^^;)パッケージと同じフォルダに設定
検索パス/デバッグ用ソースパス、は何も入力しない
[OK] ボタンをクリック
パッケージエディタの[インストール]をクリック
「...がインストールされました」→ [OK] ボタン
[×]ボタンでパッケージエディタを閉じる
「プロジェクト SearchFB を保存しますか?」→ [はい]ボタン
以上でインストール完了です。
Delphi5 [ツール|エディタオプション] [キーの割り当て]タブを
表示させてみて下さい。
右側の「拡張モジュール」に『Shift+F3で↑検索』と表示されて
いればokです。
その左側のチェックボックスがチェックされていれば、Shift+F3
キーで↑検索を行う機能が有効になります。
#Delphiをいったん再起動しないと有効にならないかな?
お試しくださいませ。m(_`_)m
#Demos\ToolsAPI\Editor Keybinding のコードを参考に、見よう
#見まねで作りました。正しいコードなのかどうか?よくわかって
#おりませんが、とりあえず私の環境では正常に動作しているみた
#いです。(^^;
Original document by Satobe 氏 ID:(JCG00336)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|