Gridの選択をそのままにスクロースさせるには?

解決


osakana  2005-05-07 04:25:31  No: 14654

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;


osakana  2005-05-07 05:06:22  No: 14655

自分で、解決しちゃいました

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;


osakana  2005-05-07 05:06:41  No: 14656

解決


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加