其实就用 继承 TEdit 也可以的, 不用 TSpeedButton, TEit 可以用
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
来设定Client 区域的,
例子
procedure TmslGrid.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
inherited;
with Message.CalcSize_Params^.rgrc[0] do begin
Dec(Bottom, NC_HEIGHT);
Inc(Top, NC_HEIGHT);
end;
end;
不知道你明不明白我的意思。这样少了一个 TSpeedButton, 但需要用 mouseDown 判断鼠标是否在按钮(这其实已经不是按钮,其TEdit的一部分)的位置。
标准的控件都是这样写的。