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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2009, 21:32   #1
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию Управление курсором

Привет всем... Вообщем мне нужно чтобы в моей программе я не мог передвигать курсор мышкой, мне нужно чтобы курсор передвигался за счет нажатия на кнопки клавы. Кто знает как это сделать если это вообще возможно, помогите пожалуста!!!
BuT@JL вне форума Ответить с цитированием
Старый 16.10.2009, 21:38   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

SetCursorPos(X,Y);
Остальное - просто.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 16.10.2009, 21:46   #3
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Спасибо, но мне нужно чтобы я не мог передвигать курсор МЫШКОЙ в приложение, ну как бы отключить её только в моей проге.
BuT@JL вне форума Ответить с цитированием
Старый 16.10.2009, 21:47   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
var
  Form1: TForm1;
  pt:TPoint;
  x,y:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetCursorPos(pt);
  x:=pt.X;
  y:=pt.Y;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin


case Key of
  37: x:=x-3;
  38: y:=y-3;
  39: x:=x+3;
  40: y:=y+3;
end;

  SetCursorPos(x,y);

end;

end.
profi вне форума Ответить с цитированием
Старый 16.10.2009, 21:50   #5
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Отключить мышку

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  CState: Integer;
begin
  CState := ShowCursor(True);
  while Cstate >= 0 do
    Cstate := ShowCursor(False);
end;

//Включение курсора
procedure TForm1.Button2Click(Sender: TObject);
var
  Cstate: Integer;
begin
  Cstate := ShowCursor(True);
  while CState < 0 do
    CState := ShowCursor(True);
end;
Этот пример нашел в google.ru, пользуйтесь поиском примеров куча.

Последний раз редактировалось profi; 16.10.2009 в 21:55.
profi вне форума Ответить с цитированием
Старый 16.10.2009, 21:51   #6
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

profi Да нет, это не то, курсор просто исчезает, мне нужно чтобы его было видно на форме, просто чтобы его нельзя было передвигать с помощью мыши.

Последний раз редактировалось BuT@JL; 16.10.2009 в 21:53.
BuT@JL вне форума Ответить с цитированием
Старый 16.10.2009, 22:04   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Можно запомнить координаты курсора и в таймере каждую 1 мс. возвращать его обратно. Но решение не очень...
Arigato вне форума Ответить с цитированием
Старый 16.10.2009, 22:13   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
Счастье

а еще можно так, слегка модифицируем 1-пример profi:
Код:
case Key of
  37: x:=x-3;
  38: y:=y-3;
  39: x:=x+3;
  40: y:=y+3;
end;
 pt.X:= x;
 pt.Y:= y;
  SetCursorPos(x,y);
иии добавляем перехват...
Код:
private procedure DefaultHandler(var M); override;
end;
...


procedure Tform1.DefaultHandler(var M);
begin
 if TMessage(M).Msg = WM_MOUSEMOVE then SetCursorPos(pt.X,pt.y);
 inherited
end;
- но, имхо таймер делает тоже самое
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 16.10.2009 в 22:16.
raxp вне форума Ответить с цитированием
Старый 16.10.2009, 22:13   #9
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Arigato я попробывал и в таймере и в ApplicationEvents... да, решение не очень )
BuT@JL вне форума Ответить с цитированием
Старый 16.10.2009, 22:15   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Курсор успевает отклониться.
А что, если просто нарисовать свой курсор, а стандартный спрятать?
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два вопроса: Цвет пикселя и управление курсором MaslovArt Win Api 6 22.06.2012 20:34
упрАвление курсором sqqa Паскаль, Turbo Pascal, PascalABC.NET 17 29.10.2010 23:16
проблемы с курсором Serega AKS Операционные системы общие вопросы 4 02.09.2009 15:05
Проблема с курсором в C# Kania Общие вопросы .NET 0 24.03.2009 15:21
рисунки курсором bars1k Помощь студентам 2 25.04.2008 10:32