1

我如何在 Delphi7 的 dbgrid 上隐藏或删除水平滚动。我尝试通过更改宽度 onResize 但方法不正确。

4

2 回答 2

6

尝试这个:

EnableScrollBar(DBGrid1.Handle,SB_HORZ,ESB_DISABLE_BOTH);
ShowScrollBar(DBGrid1.Handle,SB_HORZ,False);

问题是禁用滚动,但它显示:-(

其他选项是:

TDBgrid2 = class(TDBgrid)
  private
    procedure WMNCCalcSize(var msg: TMessage); message WM_NCCALCSIZE;
  end;
  .
  .
procedure TDBgrid2.WMNCCalcSize(var msg: TMessage);
var
  style: Integer;
begin
  style := getWindowLong( handle, GWL_STYLE );
  if (style and WS_HSCROLL) <> 0 then
    SetWindowLong( handle, GWL_STYLE, style and not WS_HSCROLL );
  inherited;
end;

它更复杂,但它是完美的解决方案。

于 2013-05-08T08:44:50.060 回答
2

大卫完美解决方案的后续行动。如果使用相同的类型名称,您不必更改 .dfm 中的类

  TDBgrid = class(DBGrids.TDBgrid)
  private
    procedure WMNCCalcSize(var msg: TMessage); message WM_NCCALCSIZE;
  end;
于 2014-10-20T09:12:58.390 回答