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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 17:31   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию Навигация Scrollbox

В ScrollBox лежит Image, как бы сделать, чтобы при нажатии, удерживании левой кнопки и перемещении мышью можно было перемещаться внутри ScrollBox (двигать скроллеры)?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 26.02.2011, 17:36   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TForm1.ImagesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=True;
  x2:=x;
  y2:=y;
end;

procedure TForm1.ImagesMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if PresIm then
    ScrollBox.HorScrollBar.Position := ScrollBox.HorScrollBar.Position - (x2 - x);
end;

procedure TForm1.ImagesMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=False;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 26.02.2011, 17:43   #3
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от ArtGrek Посмотреть сообщение
Код:
procedure TForm1.ImagesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=True;
  x2:=x;
  y2:=y;
end;

procedure TForm1.ImagesMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if PresIm then
    ScrollBox.HorScrollBar.Position := ScrollBox.HorScrollBar.Position - (x2 - x);
end;

procedure TForm1.ImagesMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=False;
end;
а что такое PresIm? Причем нужно одновременно двигать оба скроллера.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 26.02.2011, 17:45   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
var
  presIm: boolean; // я так назвал переменую которая указывает что было нажатие  на картинку, а после отжатия оно false
  x2, y2: integer;
procedure TForm1.ImagesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=True;
  x2:=x;
  y2:=y;
end;

procedure TForm1.ImagesMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if PresIm then
begin
    ScrollBox.HorScrollBar.Position := ScrollBox.HorScrollBar.Position - (x2 - x);
    ScrollBox.VerScrollBar.Position := ScrollBox.HorScrollBar.Position - (y2 - y);
end;
end;

procedure TForm1.ImagesMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=False;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 26.02.2011, 18:10   #5
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Решение хорошее, главное простое и понятное, но код не подходит: там движения скроллеров получаются не вменяемые и не совсем управляемые. Т.е. когда проскочит горизонтальный скроллер, а когда вертикальный, в общем не вменяемая навигация.
Нужно так: в какую сторону ведешь мышь - туда и едут скроллеры, если диагональ - то два скроллера, если например горизонтальное направление - то горизонтальный скроллер.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 26.02.2011, 18:35   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

было написано как говорица, "на коленке"
вот:
Код:
var
  Form1: TForm1;
  presIm: boolean;
  x2, y2: integer;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=False;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if presIm then
  begin
    ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + (x2 - x);
    ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + (y2 - y);
  end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PresIm:=True;
  x2:=x;
  y2:=y;
end;

end.
PS. раз логику понял должен был сам исправить
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 26.02.2011, 18:40   #7
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Надо чтобы в соответствии с движениями мышью, этот код хороший, но управление невменяемое.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 26.02.2011, 19:07   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

А чем вам не понравилось предложенное мной решение в вашей же теме http://www.programmersforum.ru/showthread.php?t=139084
Sibedir вне форума Ответить с цитированием
Старый 26.02.2011, 19:23   #9
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
А чем вам не понравилось предложенное мной решение в вашей же теме http://www.programmersforum.ru/showthread.php?t=139084
Они у меня не запустились.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 26.02.2011, 19:47   #10
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

попробуите мои последнии пост и заидите на свою другую тему
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скроулинг ScrollBox SoftKoc Компоненты Delphi 6 16.12.2010 20:21
Отчистить ScrollBox MyLastHit Общие вопросы Delphi 11 01.09.2010 10:26
ScrollBox SNUPY Помощь студентам 3 22.09.2009 18:51
image в scrollbox Черничный Общие вопросы Delphi 3 14.08.2008 16:35
ScrollBox Mickle Помощь студентам 1 31.03.2007 14:10