プラグイン プログラム構成2 前編
2の場合は複数の画面毎に動作を記述するの必要があります。
サンプルプログラムは私の作成したプログラムをダウンロードして下さい。
ダウウンロードしたソースファイルを解凍して、MeryRowCol.dpr を Delphi から開きます。 MeryRowCol.dpr の中の OnEvents に LFrame := TRowColFrame.Create; を記述します。
ここで参照される mRowCol.pas の中に必要な処理を書きます。
// -----------------------------------------------------------------------------
// OnEvents
// イベントが発生した時に呼び出されます
// パラメータ
// hwnd: ウィンドウのハンドル
// nEvent: イベントの種類
// lParam: メッセージ特有の追加情報
// 備考
// EVENT_CREATE: エディタを起動した時
// EVENT_CLOSE: エディタを終了した時
// EVENT_CREATE_FRAME: フレームを作成された時
// EVENT_CLOSE_FRAME: フレームが破棄された時
// EVENT_SET_FOCUS: フォーカスを取得した時
// EVENT_KILL_FOCUS: フォーカスを失った時
// EVENT_FILE_OPENED: ファイルを開いた時
// EVENT_FILE_SAVED: ファイルを保存した時
// EVENT_MODIFIED: 更新の状態が変更された時
// EVENT_CARET_MOVED: カーソルが移動した時
// EVENT_SCROLL: スクロールされた時
// EVENT_SEL_CHANGED: 選択範囲が変更された時
// EVENT_CHANGED: テキストが変更された時
// EVENT_CHAR: 文字が入力された時
// EVENT_MODE_CHANGED: 編集モードが変更された時
// EVENT_DOC_SEL_CHANGED: アクティブな文書が変更された時
// EVENT_DOC_CLOSE: 文書を閉じた時
// EVENT_TAB_MOVED: タブが移動された時
// EVENT_CUSTOM_BAR_CLOSING: カスタムバーを閉じようとした時
// EVENT_CUSTOM_BAR_CLOSED: カスタムバーを閉じた時
// EVENT_TOOL_BAR_CLOSED: ツールバーを閉じた時
// EVENT_TOOL_BAR_SHOW: ツールバーが表示された時
// EVENT_IDLE: アイドル時
procedure OnEvents(hwnd: HWND; nEvent: Cardinal; lParam: LPARAM); stdcall;
var
sStr11: String;
StrList11: TStringList;
I: Integer;
LFrame: TFrame;
begin
if (nEvent and EVENT_CREATE) <> 0 then
begin
//確保
FList := TFrameList.Create;
end
else
begin
if Assigned(FList) then
begin
if (nEvent and EVENT_CREATE_FRAME) <> 0 then
begin
LFrame := TRowColFrame.Create;
with LFrame do
begin
Handle := hwnd;
OnEvents(hwnd, nEvent, lParam);
end;
//追加
FList.Add(LFrame);
end
else if (nEvent and EVENT_CLOSE_FRAME) <> 0 then
begin
//削除
LFrame := FList.Find(hwnd);
if LFrame <> nil then
with LFrame do
begin
OnEvents(hwnd, nEvent, lParam);
FList.Remove(LFrame);
Free;
end;
end
else if (nEvent and EVENT_CLOSE) <> 0 then
begin
//削除
for I := FList.Count - 1 downto 0 do
begin
FList[I].Free;
end;
FList.Free;
end
else
begin
LFrame := FList.Find(hwnd);
if LFrame <> nil then
LFrame.OnEvents(hwnd, nEvent, lParam);
end;
end;
end;
end;