mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 10:00:48 +02:00
LCL, fix position of scrollbar in case user clicks verticall scrollbar button arrows
git-svn-id: trunk@31370 -
This commit is contained in:
parent
74c3742e3e
commit
264c6db01f
@ -1141,40 +1141,28 @@ end;
|
|||||||
procedure TCustomDBGrid.WMVScroll(var Message: TLMVScroll);
|
procedure TCustomDBGrid.WMVScroll(var Message: TLMVScroll);
|
||||||
var
|
var
|
||||||
IsSeq: boolean;
|
IsSeq: boolean;
|
||||||
aPos: Integer;
|
aPos, aRange, aPage: Integer;
|
||||||
DeltaRec: integer;
|
DeltaRec: integer;
|
||||||
|
|
||||||
function MaxPos: Integer;
|
function MaxPos: Integer;
|
||||||
begin
|
begin
|
||||||
if IsSeq then
|
if IsSeq then
|
||||||
result := GetRecordCount
|
result := GetRecordCount - 1
|
||||||
else
|
else
|
||||||
result := 4;
|
result := 4;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure CalcPos(Delta: Integer);
|
|
||||||
begin
|
|
||||||
if FDataLink.Dataset.BOF then
|
|
||||||
aPos := 0
|
|
||||||
else if FDatalink.DataSet.EOF then
|
|
||||||
aPos := MaxPos
|
|
||||||
else if IsSeq then
|
|
||||||
aPos := FOldPosition + Delta
|
|
||||||
else
|
|
||||||
aPos := 2;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure DsMoveBy(Delta: Integer);
|
procedure DsMoveBy(Delta: Integer);
|
||||||
begin
|
begin
|
||||||
FDataLink.MoveBy(Delta);
|
FDataLink.MoveBy(Delta);
|
||||||
CalcPos(Delta);
|
GetScrollbarParams(aRange, aPage, aPos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure DsGoto(BOF: boolean);
|
procedure DsGoto(BOF: boolean);
|
||||||
begin
|
begin
|
||||||
if BOF then FDatalink.DataSet.First
|
if BOF then FDatalink.DataSet.First
|
||||||
else FDataLink.DataSet.Last;
|
else FDataLink.DataSet.Last;
|
||||||
CalcPos(0);
|
GetScrollbarParams(aRange, aPage, aPos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -1202,12 +1190,14 @@ begin
|
|||||||
SB_THUMBPOSITION:
|
SB_THUMBPOSITION:
|
||||||
begin
|
begin
|
||||||
aPos := Message.Pos;
|
aPos := Message.Pos;
|
||||||
|
if aPos=FOldPosition then
|
||||||
|
exit;
|
||||||
if aPos>=MaxPos then
|
if aPos>=MaxPos then
|
||||||
dsGoto(False)
|
dsGoto(False)
|
||||||
else if aPos<=0 then
|
else if aPos<=0 then
|
||||||
dsGoto(True)
|
dsGoto(True)
|
||||||
else if IsSeq then
|
else if IsSeq then
|
||||||
FDatalink.DataSet.RecNo := aPos
|
FDatalink.DataSet.RecNo := aPos + 1
|
||||||
else begin
|
else begin
|
||||||
DeltaRec := Message.Pos - FOldPosition;
|
DeltaRec := Message.Pos - FOldPosition;
|
||||||
if DeltaRec=0 then
|
if DeltaRec=0 then
|
||||||
|
Loading…
Reference in New Issue
Block a user