Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 22:29   #1
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию StringGrid скроллинг ЗАХВАТОМ

Доброе время!

Есть грид со скроллбарами, потому что не помещается вся информация на экран.

Как можно реализовать просмотр (тягание, скролл) таблицы при помощи мыши как в PDF? То есть "захватив" мышкой за саму таблицу и перемещая мышку осуществлять скролл.

Как это можно реализовать?

Вариант со ScrollBox не подходит. У грида есть свой скролл. Нужно его использовать.

Подскажите идеи, плиз.
Yuran вне форума Ответить с цитированием
Старый 18.04.2015, 07:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такой вариант подойдет?:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses windows,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { private declarations }
  public
    { public declarations }
  end;

var  my:integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TStringGrid(Sender).Tag:=1;
  my:=y;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 for i:=0 to StringGrid1.RowCount-1 do StringGrid1.Cells[0,i]:=IntToStr(i);
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if  TStringGrid(Sender).Tag=1 then begin
   if y>my then TStringGrid(Sender).Perform(WM_VSCROLL,SB_LINEDOWN,0)
   else TStringGrid(Sender).Perform(WM_VSCROLL,SB_LINEUP,0);
   my:=y;
  end;
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TStringGrid(Sender).Tag:=0;
end;

end.
P.S. Не копипастить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.04.2015, 09:55   #3
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Спасибо за ответ

Пробовал подобное
Код:
.Perform(WM_VSCROLL,SB_LINEDOWN,0)
И это
Код:
SendMessage(mg.Handle,EM_LINESCROLL,0, grid.Rowcount);
Не работает
Yuran вне форума Ответить с цитированием
Старый 18.04.2015, 10:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А че у меня мой пример сработал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2015, 00:12   #5
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Yuran Посмотреть сообщение
Не работает
Stilet дал вам абсолютно рабочий пример.
Попробуйте добавить в процедуру создания формы ещё пару строк для наглядности:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 StringGrid1.RowCount:=125;
 StringGrid1.Options:=StringGrid1.Options-[goRangeSelect];
 for i:=0 to StringGrid1.RowCount-1 do StringGrid1.Cells[0,i]:=IntToStr(i);
end;
kropotkina-alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBLookupComboBox Скроллинг. lutdan Компоненты Delphi 2 07.06.2013 17:21
скроллинг Chief Паскаль, Turbo Pascal, PascalABC.NET 1 09.06.2009 19:13
Скроллинг мышки Dmitriy Общие вопросы Delphi 1 26.10.2008 23:23
Скроллинг Sanek777 Общие вопросы Delphi 2 11.09.2008 20:05
скроллинг kl45gp JavaScript, Ajax 0 24.03.2008 23:29