我看了一下Tdbctrlgrid的源码发现在下面的事件中有变化
procedure TDBCtrlGrid.UpdateScrollBar;
var
SIOld, SINew: TScrollInfo;
begin
if FDatalink.Active and HandleAllocated then
with FDatalink.DataSet do
begin
SIOld.cbSize :=sizeof(SIOld);
SIOld.fMask := SIF_ALL;
GetScrollInfo(Self.Handle, FScrollBarKind, SIOld);
SINew := SIOld;
// SINew.cbSize:=50;
if IsSequenced then
begin
SINew.nMin := 3;
SINew.nPage := Self.RowCount * Self.ColCount;
SINew.nMax := DWORD(RecordCount) + SINew.nPage - 1;
if State in [dsInactive, dsBrowse, dsEdit] then
SINew.nPos := RecNo;
end
else
begin
SINew.nMin := 3;
SINew.nPage := 0;
SINew.nMax := 4;
if BOF then SINew.nPos := 0
else if EOF then SINew.nPos := 4
else SINew.nPos := 2;
end;
if (SINew.nMin <> SIOld.nMin) or (SINew.nMax <> SIOld.nMax) or
(SINew.nPage <> SIOld.nPage) or (SINew.nPos <> SIOld.nPos) then
SetScrollInfo(Self.Handle, FScrollBarKind, SINew, false);
end;
end;
如果我把这段代码屏蔽掉就不会出现滚动条了,但是要增加滚动条的宽度,还看不太明白
最后发行是执行SetScrollInfo(Self.Handle, FScrollBarKind, SINew, false);
然后调用windows api函数进行操作的,SINew是个TScrollInfo,我看了一下是个记录类型的结构
tagSCROLLINFO = packed record
cbSize: UINT;
fMask: UINT;
nMin: Integer;
nMax: Integer;
nPage: UINT;
nPos: Integer;
nTrackPos: Integer;
end;
PScrollInfo = ^TScrollInfo;
TScrollInfo = tagSCROLLINFO;
我原本以为cbSize是控制宽度的,但是修改后还是没有变化SINew.cbSize:=50;
请高手指点一下
procedure TDBCtrlGrid.UpdateScrollBar;
var
SIOld, SINew: TScrollInfo;
begin
if FDatalink.Active and HandleAllocated then
with FDatalink.DataSet do
begin
SIOld.cbSize :=sizeof(SIOld);
SIOld.fMask := SIF_ALL;
GetScrollInfo(Self.Handle, FScrollBarKind, SIOld);
SINew := SIOld;
// SINew.cbSize:=50;
if IsSequenced then
begin
SINew.nMin := 3;
SINew.nPage := Self.RowCount * Self.ColCount;
SINew.nMax := DWORD(RecordCount) + SINew.nPage - 1;
if State in [dsInactive, dsBrowse, dsEdit] then
SINew.nPos := RecNo;
end
else
begin
SINew.nMin := 3;
SINew.nPage := 0;
SINew.nMax := 4;
if BOF then SINew.nPos := 0
else if EOF then SINew.nPos := 4
else SINew.nPos := 2;
end;
if (SINew.nMin <> SIOld.nMin) or (SINew.nMax <> SIOld.nMax) or
(SINew.nPage <> SIOld.nPage) or (SINew.nPos <> SIOld.nPos) then
SetScrollInfo(Self.Handle, FScrollBarKind, SINew, false);
end;
end;
如果我把这段代码屏蔽掉就不会出现滚动条了,但是要增加滚动条的宽度,还看不太明白
最后发行是执行SetScrollInfo(Self.Handle, FScrollBarKind, SINew, false);
然后调用windows api函数进行操作的,SINew是个TScrollInfo,我看了一下是个记录类型的结构
tagSCROLLINFO = packed record
cbSize: UINT;
fMask: UINT;
nMin: Integer;
nMax: Integer;
nPage: UINT;
nPos: Integer;
nTrackPos: Integer;
end;
PScrollInfo = ^TScrollInfo;
TScrollInfo = tagSCROLLINFO;
我原本以为cbSize是控制宽度的,但是修改后还是没有变化SINew.cbSize:=50;
请高手指点一下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货