|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"TEditor 横スクロールイベントの追加"
nifty:FDELPHI/MES/16/734 で TEditorオーナードローの例としてルーラーを
表示しましたが、時々一部が欠けるなどおかしなところがありました。
速度重視の面でもオーナードローよりも自前のルーラーを用意し、TEditorの
横スクロールと同期をとってスクロールさせる方がよろしいようです。
但し、今のところ TEditorにはスクロールを捕らえるイベントがない(*)ので、
TEditorを継承して OnHorzScrollイベントを拡張したコンポーネントを作成
することとします。
( * 次のバージョンではサポートされるそうです。)
方法は単純、WM_HSCROLLメッセージ処理ハンドラーでイベントを呼び出す
だけです。
以下のコードをファイル名 LEditor.pas で保存すれば出来上がりです。
//--------------- ここから ----------
unit LEditor;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HEditor;
type
TLEditor = class(TEditor)
private
FOnHorzScroll: TNotifyEvent;
procedure WMHScroll(var Message: TWMHScroll);
message WM_HSCROLL;
protected
procedure HorzScroll(Sender: TObject);
public
{ Public 宣言 }
published
property OnHorzScroll: TNotifyEvent read FOnHorzScroll
write FOnHorzScroll;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyCompo', [TLEditor]);
end;
// 横スクロールメッセージ処理
procedure TLEditor.WMHScroll(var Message: TWMHScroll);
begin
inherited;
HorzScroll(Self);
end;
//イベント呼び出しメソッド
procedure TLEditor.HorzScroll(Sender: TObject);
begin
if Assigned(OnHorzScroll) then OnHorzScroll(Sender);
end;
end.
//------------ ここまで -----------
○ 極楽通信環境 AvalonU nifty:FAVALON/LIB/3/59 ○
● 極道録眼鏡「えるつぅ」 nifty:FAVALON/LIB/3/60 ●
Avalon's Friendly Crew #80008 H-Triton (^^) since 1996
Original document by H-Triton 氏 ID:(QZV11422)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|