添加到TScrollBox的辅助方法不起作用

问题描述 投票:0回答:1

在我被指示开发的一个旧项目中,有一个类型为TScrollBox的字段。

FScroll   : 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;

组件开始响应按下箭头按钮。但是copy,delete,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版本支持帮助方法。

delphi-2010
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.