16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"TRichEditでの Keyイベントの置き換え"
TRichEdit 固有の Keyイベントを置き換えます。
TRichEdit は、[Ctrl]+[V] などのイベントを独自に持っています。普通に
使うには調子がよいのですが、テキストデータだけ貼り付けたい場合などに
問題が置きます。FormのOnkeyイベントを用いて書き込みをキャンセルしま
す。
コンポーネントまでもぐってOverrideをかけるのが本道ですが、毎度使う
わけでもなく小手先で逃げたい場合に有効です。
[アルゴリズム]
KeyDownでキーイベントを会得
指定のルーチンを走らせる。
TRichEdit を ReadOnly に
↓
KeyUp で ReadOnly 解除
[ソース]
uses Clipbrd;
var
PreKeyFrg : array[0..1] of Boolean;
{
PreKeyFrg[0] : ReadOnly Set
PreKeyFrg[1] : PreFixKey Set
}
(* KeyPreview := True *)
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.KeyPreview := True;
end;
(* KeyDown *)
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var TabX : Byte;
begin
PreKeyFrg[0] := True;
{Ctrl + V run}
if (ssCtrl in Shift) and
not(ssShift in SHift) and
not(ssAlt in Shift) then
case Key of
Ord('V'):
begin
RichEdit1.SelText := Clipboard.AsText;
RichEdit1.ReadOnly := True;
end;
end;
end;
(* ReadOnly ReSet *)
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{ReadOnly}
if PreKeyFrg[0] then
with RichEdit1 do
if ReadOnly then ReadOnly := False;
end;
[動作]
Ctrl + V を押すと、テキストデータのみが貼り付きます。
Original document by 後藤 治彦 氏 ID:(HCG03153)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|