Gridのスクロールバーの位置設定がないので
直接設定をすると、バーだけ動いて中身がスクロールしません。
選択項目をそのままにして、スクロールさせるには
どうすればいいのでしょうか?
procedure TFormMain1.DrawGrid1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
Handle : HWND;
MinPos,MaxPos ,NewPos : Longint;
fnBar : Longint;
begin
Handled := True; // Handled は,コントロールがイベントを処理したかどうかを示します。
Handle := DrawGrid1.Handle;
if ssCtrl in Shift then
fnBar := SB_HORZ
else
fnBar := SB_VERT;
NewPos := GetScrollPos(Handle, fnBar);
GetScrollRange(Handle, fnBar, MinPos, MaxPos);
NewPos := Min(MaxPos, NewPos+5);
SetScrollPos(Handle,fnBar,NewPos,True);
end;
自分で、解決しちゃいました
procedure TFormMain1.DrawGrid1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var
NewPos : Longint;
begin
Handled := True; // Handled は,コントロールがイベントを処理したかどうかを示します。
if Not(ssCtrl in Shift) then
with DrawGrid1 do
begin
NewPos := Max(FixedRows,RowCount-VisibleRowCount);
NewPos := Min(TopRow+5, NewPos);
if TopRow <> NewPos then TopRow := NewPos;
end;
if ssCtrl in Shift then
with DrawGrid1 do
begin
NewPos := Max(FixedCols,ColCount-VisibleColCount);
NewPos := Min(LeftCol+5, NewPos);
if LeftCol <> NewPos then LeftCol := NewPos;
end;
end;
解決
ツイート | ![]() |