私は Delphi 7 を使用しています。PageControl の空きスペース (最後に表示されたタブよりも右側の領域) のクリック (左) に反応したいと考えています。どうやってやるの?
質問する
1082 次
1 に答える
6
PageControl の親コントロールでクリックを処理できます。PageControl がフォームに配置されている場合、フォームの 'MouseDown' イベントがその指定された領域に対して呼び出されます。その理由は、PageControl がHTTRANSPARENT
その領域のヒット テスト メッセージを返し、マウス メッセージがその下のコントロールに送られるためです。
WM_NCHITTEST
それがうまくいかない場合は、たとえばコントロールをサブクラス化するか、派生コントロールで の処理方法を変更できます。
type
TMyPageControl = class(TPageControl)
protected
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TMyPageControl.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
if Message.Result = HTTRANSPARENT then
Message.Result := HTCLIENT;
end;
次に、コントロールのOnMouseDown
イベントが発生します。もちろん、メッセージの戻り値を変更する前にリージョンをテストすることもできます。この例は、それがどのように機能するかを示すためだけのものです。
于 2013-01-11T17:32:52.823 に答える