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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2012, 22:10   #31
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Забыл написать, что программа запускается. Но скорость мыши не меняется и в label ничего не записывается.
Jeraldino74 вне форума Ответить с цитированием
Старый 04.11.2012, 23:37   #32
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Вот это уже странно, так как у меня работает прекрасно. Вариант первый - попробуйте так, как сказал Stilet на пару постов выше. Вариант второй - выкладывайте глючный код сюда, будем разбираться.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.11.2012, 00:16   #33
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Ваш вариант мне ближе. Поэтому выкладываю код. Только вы сразу ответ не показывайте. А только укажите, где я чего не так делаю.

Код:
     // Кнопка "выход"
procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

  // Процедура параметров чувствительности мыши
procedure SetMouseSens(val: Byte);
begin
  SystemParametersInfo(SPI_SETMOUSESPEED, 0, pointer(val), 0);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  if TrackBar1.Position=1 then SetMouseSens(6);
  if TrackBar1.Position=2 then SetMouseSens(7);
  if TrackBar1.Position=3 then SetMouseSens(8);
  if TrackBar1.Position=4 then SetMouseSens(9);
  if TrackBar1.Position=5 then SetMouseSens(10);
  if TrackBar1.Position=6 then SetMouseSens(11);
  if TrackBar1.Position=7 then SetMouseSens(12);
  if TrackBar1.Position=8 then SetMouseSens(13);
  if TrackBar1.Position=9 then SetMouseSens(14);
  if TrackBar1.Position=10 then SetMouseSens(15);
end; 

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var p: string;
begin
  p:='10';
  if TrackBar1.Position>0 then p:=IntToStr(trackBar1.Position);
  Label6.Caption:='X='+IntToStr(X)+' Y='+IntToStr(Y)+' Sence='+p;
end;


  // Включаем таймер при открытии и записываются координаты курсора
procedure TForm1.FormCreate(Sender: TObject);
var cur:TPoint;
begin
  Timer1.Interval:=1;
  Windows.GetCursorPos(Cur);
  Edit4.Text:=('X='+IntToStr(cur.X)+' Y='+IntToStr(cur.Y));
end;

end.

Последний раз редактировалось Jeraldino74; 05.11.2012 в 00:55.
Jeraldino74 вне форума Ответить с цитированием
Старый 05.11.2012, 00:44   #34
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Во-первых, в лабел все прекрасно записывается, не пишется в Эдит
Во-вторых, подсказываю:

1) Значение Edit задается только при создании формы
2) Не вижу свойства TForm1.TrackBar1Change(Sender: TObject); - для чего оно нужно, сами догадаетесь, хотя я выше код писал
3) Нажмите Поиск в Дельфе, вставьте туда SetMouseSens и посмотрите, сколько раз она найдется в коде.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.11.2012, 00:53   #35
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

1) Да чтоб я провалился. Не записывается у меня в label ((

2)
Код:
  // Изменяем чувствительность мыши. Отсчёт идёт от "6" т.к. "1" уж слишком тормозно
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  if TrackBar1.Position=1 then SetMouseSens(6);
  if TrackBar1.Position=2 then SetMouseSens(7);
  if TrackBar1.Position=3 then SetMouseSens(8);
  if TrackBar1.Position=4 then SetMouseSens(9);
  if TrackBar1.Position=5 then SetMouseSens(10);
  if TrackBar1.Position=6 then SetMouseSens(11);
  if TrackBar1.Position=7 then SetMouseSens(12);
  if TrackBar1.Position=8 then SetMouseSens(13);
  if TrackBar1.Position=9 then SetMouseSens(14);
  if TrackBar1.Position=10 then SetMouseSens(15);
end;
3) 11 раз с учётом названия в процедуре.
Jeraldino74 вне форума Ответить с цитированием
Старый 05.11.2012, 01:11   #36
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

1) Ладно. По-поводу лабела пока забудем. По поводу Едита уточню: значения, заданные в FormCreate будут в том же состоянии, пока не закроется форма (если она основная в проекте). Менять их нужно программно из других процедур.

Заметьте вот здесь закономерность:

Код:
  if TrackBar1.Position=1 then SetMouseSens(6);
  if TrackBar1.Position=2 then SetMouseSens(7);
  if TrackBar1.Position=3 then SetMouseSens(8);
  if TrackBar1.Position=4 then SetMouseSens(9);
  if TrackBar1.Position=5 then SetMouseSens(10);
  if TrackBar1.Position=6 then SetMouseSens(11);
  if TrackBar1.Position=7 then SetMouseSens(12);
  if TrackBar1.Position=8 then SetMouseSens(13);
  if TrackBar1.Position=9 then SetMouseSens(14);
  if TrackBar1.Position=10 then SetMouseSens(15);
1->6
2->7
3->8
...
10->15

Ничего не замечаете?

2) После какого действия должна изменяться скорость мыши?

3) Уверены, что значения скорости поддержатся аж до 15? У меня на первом десятке прекрасно все работает.

4) Вот здесь Вы слишком дословно скопировали код:

Код:
  p:='10';
p должно принимать значения либо максимальной скорости (при трекбаре=0), либо значению трекбара. У Вас максималка=15. Ферштейн? Ну и плюс пункт 1 отсюда, про закономерность.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 05.11.2012 в 01:17.
Sciv вне форума Ответить с цитированием
Старый 05.11.2012, 11:02   #37
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

1) По поводу присвоения setMouseSens. Я ведь сам устанавливаю, что хочу при первом положении ползунка, чтобы было 6, а при 10 уже 15.

2) Скорость мыши меняется, когда пользователь передвигает ползунок. И как только ползунок достиг 4 позиции, скорость мышки принимает значение 9.

3) Ну я пробовал поставить и 20. Трудно адекватно определить быстрее ли она двигается, чем например даже при 9. НУ ладно, я исправил к каждой позиции ползунка от 0 до 9(всего 10)Правильно? присвоил соответствующее число скорости мыши от 1 до 10.

Цитата:
4) Вот здесь Вы слишком дословно скопировали код:

Код:
  p:='10';
p должно принимать значения либо максимальной скорости (при трекбаре=0), либо значению трекбара. У Вас максималка=15. Ферштейн? Ну и плюс пункт 1 отсюда, про закономерность.
4) Про 4 пункт не понял. Сделаю так. Вот как я понимаю ваш код.

Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var p: string; // задаём переменной p строковое значение
begin
  p:='10'; // Присваиваем строку 10
  if TrackBar1.Position>0 then p:=IntToStr(trackBar1.Position); // если позиция ползунка отличная от нуля, то переменная p принимает строковое значение положения ползунка
  Label6.Caption:='X='+IntToStr(X)+' Y='+IntToStr(Y)+' Sence='+p; // ну это вывод сообщения
end;
Jeraldino74 вне форума Ответить с цитированием
Старый 05.11.2012, 17:24   #38
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Поясняю, что имел в виду:

1)
Код:
if TrackBar1.Position=1 then SetMouseSens(6); и тд
эквивалентно единственной строчке:

Код:
SetMouseSens(TrackBar1.Position+5);
Стоит ли столько кода писать?

2) Простите, был неправ с этим вопросом, но дошло поздно Смотрел на TrackBar1Change как баран на ворота, а вызова процедуры не увидел. Снимаю вопрос.

3) Я вот экспериментальным путем выяснил, что скорость от 1 до 6 вполне заметно изменяется, а вот выше - либо незаметно невооруженным взглядом, либо не меняется. У Вас в программе как раз в это "выше" диапазон и попадает.

4) Я имел в виду, что раз Вы меняете скорость от 6 до 15 то должно быть p:='15';
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.11.2012, 17:40   #39
Jeraldino74
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 45
По умолчанию

Ну да всё верно. Исправил.

Код:
     // Кнопка "выход"
procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

  // Процедура параметров чувствительности мыши
procedure SetMouseSens(val: Byte);
begin
  SystemParametersInfo(SPI_SETMOUSESPEED, 0, pointer(val), 0);
end;

  // Изменяем чувствительность мыши. Отсчёт идёт от "6" т.к. "1" уж слишком тормозно
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 SetMouseSens(TrackBar1.Position+1);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var p: string;
begin
  p:='10';
  if TrackBar1.Position>0 then p:=IntToStr(trackBar1.Position);
  Label6.Caption:='X='+IntToStr(X)+' Y='+IntToStr(Y)+' Sence='+p;
end;

  // Включаем таймер при открытии и записываются координаты курсора
procedure TForm1.FormCreate(Sender: TObject);
var cur:TPoint;
begin
  Timer1.Interval:=1;
  Windows.GetCursorPos(Cur);
  Edit4.Text:=('X='+IntToStr(cur.X)+' Y='+IntToStr(cur.Y));
end;

end.
Вообщем получается, что скорость ползунка при параметрах min=0 max=9 (10 позиций), Position(0) = 1.

Всё же решил послушать вас, и сделал регулировку скорости мыши от 1 до 10.

Ну так возвращаясь к ещё одной поставленной мной задачи, запись в Label. по прежнему ничего не записывается.

++ такой вопрос, TrackBar графически может принимать как бы сказать: Тоненькая полоска и ползунок и риски. Без "белого фона" - не знаю как объяснить. Может поняли? Как убрать "белый фон". Чувствую себя неуклюже, как пятиклассник.
Jeraldino74 вне форума Ответить с цитированием
Старый 05.11.2012, 17:58   #40
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Чувствую себя неуклюже, как пятиклассник.
Проще принтскрин выложить

Цитата:
запись в Label
У Вас в коде указана Label6. Проверьте, в ту ли Лаблу Вы пишете?

PS. Есть другие компоненты с трах-барами, разных стилей, форм и расцветок, в интернете полно подобного барахла - как в комплекте библиотек, так и отдельно. Можно скачать, установить и юзать.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
датчик случайных чисел Наталия 555 Общие вопросы C/C++ 3 31.03.2011 13:58
Датчик случайных чисел Ksy JavaScript, Ajax 0 07.02.2011 23:10
Мышка как датчик вращения loader-ua Фриланс 7 19.11.2009 00:01
Мышка как датчик вращения loader-ua Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.11.2009 17:22