開発するように指示された古いプロジェクトでは、TScrollBox型のフィールドがあります。TScrollBoxに追加されたヘルパーメソッドが機能しません
ナビゲーションボタンのイベントを処理するには、クラスにWM_GETDLGCODEメッセージハンドラが含まれている必要があります。だから私は、新しいクラスを作成しました:
TScrollBoxArrowBtn = class(TScrollBox)
protected
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
end;
実装
procedure TScrollBoxArrowBtn.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
Message.Result := DLGC_WANTARROWS;
end;
をそしてTScrollBoxArrowBtnでTScrollBoxタイプを置き換えます。
FScroll : TScrollBoxArrowBtn;
コンポーネントが矢印ボタンを押すことに応答し始めました。しかし、コピー、削除、SelectAllメソッドは動作を停止しました。以前の開発者は、このような検証方法を追加したので、これが起こった:
"VariableName".ClassType = TScrollBox
私は検証のためにそれらを置き換える:
"VariableName" is TScrollBox
編集この方法は仕事を始めた後。しかし、私はそのようなテストがプロジェクトの他の場所には適用されないとは確信していません。だから私は
FScroll : TScrollBox;
を残すことを決定し、TScrollBoxArrowBtnヘルパークラス作っ:
TScrollBoxArrowBtn = class helper for TScrollBox
protected
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
end;
残念ながら、この方法では動作しません。 "VariableName".ClassType = TScrollBox
のような確認は完全にはじまりましたが、プロジェクトはイベントの矢印ボタンに反応しなくなりました。私は何を間違えたのですか?
私のバージョンのIDEがヘルパーメソッドをサポートしていると確信しています。