お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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