Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281

Сохранить текущий курсор

01.06.2018, 10:08. Показов 2742. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сохранить текущий курсор, функцию CopyCursor не распознает даже с модулем WinAPi, GetCursor не помогает, он почему-то заносит курсор crWait, изначальное задание - мне нужно заменить на время работы приложения системный курсор, делаю это через SetSystemCursor, так вот, по деактивации приложения должна вызываться команда, которая вернет изначальный курсор, то есть при активации приложения должен сохраняться как-то текущий курсор, но у меня чет не получается никак, как это сделать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2018, 10:08
Ответы с готовыми решениями:

Текущий курсор
Как пользоваться курсорами имеющиеся в программе, а не в ОС, подскажите пожалуйста, почему просто не работает свойство,...

Как отловить текущий курсор
Необходимо отловить вид текущего курсора (стрелочка, рука, палочка и т.д.). Есть у меня один вариант, но он работает только на изменения...

Узнать текущий курсор мыши (его вид)
Здравствуйте) возникла такая задача, поместить текущий курсор мыши в picturebox, всё никак не пойму как это сделать. То есть чтобы на форме...

30
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
01.06.2018, 14:48
Студворк — интернет-сервис помощи студентам
ёшки-матрёшки! почему бы не почитать информацию...?

итак, вводные:
1. индексы системных курсоров имеют значение меньше единицы
2. тип TCursor имеет описание TCursor = -32768..32767;, то бишь число

что можем сделать мы?
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm2.FormCreate(Sender: TObject);
begin
  // загрузить пользовательский курсор "в индекс", не занятый системой
  Screen.Cursors[1000]:= LoadCursorFromFile('Cross.cur');
  // применить этот курсор к объекту (имеется в виду, компоненту VCL,
  // но у тебя игра ведь на панелях построена), в данном случае, к форме
  Cursor:= 1000;
  // если нужно восстановить, то
  Cursor:= crDefault;
end;
и ничего не нужно сохранять
0
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
01.06.2018, 14:57  [ТС]
DenNik, как восстановить курсор на форме я знаю, мне надо было восстановить системный курсор (который я задавал через SetSystemCursor) каким он был, но никак не получалось сохранить нормально, сохранялись все что угодно (курсор который тип ожидает, еще какие-то, но не дефолтный), а там я еще выше код писал, так там вообще бред был, я уже понял что не надо так делать, с самого начала показалось бредовой идеей, теперь я в этом убедился.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
01.06.2018, 14:58
Цитата Сообщение от WarlikeLaux Посмотреть сообщение
мне надо было восстановить системный курсор
я тебе показал пример, в котором вообще не нужно менять системный курсор! ты разобрал пример, попробовал?
0
Нарушитель
10898 / 5832 / 1289
Регистрация: 12.03.2015
Сообщений: 26,920
01.06.2018, 14:59
Цитата Сообщение от DenNik Посмотреть сообщение
ёшки-матрёшки! почему бы не почитать информацию...?
Я про Screen.Cursor уже во 2-м посте спрашивал. Судя по каментам - не тот случай.
0
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
01.06.2018, 15:01  [ТС]
DenNik, Я же говорю, я знаю что такое Sreen.Cursor, над заблокированной формой это не работает!!!

Добавлено через 1 минуту
Verevkin, Я вообще-то читал много про эти курсоры и на форумах лазил и пришел к выводу что над заблокированными и формами, которые не являются модальными курсор не изменить программно, только на уровне системы, по крайней мере на форумах решения я не нашел.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
01.06.2018, 15:13
Цитата Сообщение от WarlikeLaux Посмотреть сообщение
просто нужно сохранить системный курсор который на данный момент в системе
значит неправильно сохраняешь. смотри, щас попробовал - работает
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  Form2: TForm2;
  cur_old,cur_new: HICON;
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button1Click(Sender: TObject);
begin
  // сохранить
  cur_old:= Screen.Cursors[crDefault];     // или какой нужно
  cur_new:= LoadCursorFromFile('Help.cur');
  SetSystemCursor(cur_new,OCR_NORMAL);
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
  // восстановить
  SetSystemCursor(cur_old,OCR_NORMAL);
end;
Добавлено через 49 секунд
главное - не запутаться и не забыть восстановить, иначе - только перезагрузка системы )

Добавлено через 4 минуты
ну ладно-ладно, можно просто выход\вход в систему сделать. я проверял
0
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
01.06.2018, 15:31  [ТС]
DenNik, Похоже на правду, спасибо, проверю, только наверное я не буду это юзать, заменять системный курсор такое себе (ну как я теперь уже понял, точнее я это и так знал, просто я целый день не мог исправить баги эти и пошел на крайности уже).

Добавлено через 8 минут
DenNik, Вот опять, не помогает почему-то.
В Form.OnCreate
Delphi
1
2
3
  CurrentCursor := Screen.Cursors[crDefault];
  GameCursor := LoadCursor(HInstance, 'arrow');
  SetSystemCursor(GameCursor, OCR_NORMAL);
В sButton1.click
Delphi
1
  SetSystemCursor(CurrentCursor, OCR_NORMAL);
Ноль реакции, курсор изменяется, а обратно - нет.

Добавлено через 1 минуту
DenNik, у меня курсор анимированный кстати, может из-за этого разве что, сейчас попробую с обычным такое провернуть.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
01.06.2018, 15:32
я надеюсь, CurrentCursor - глобальная переменная?

Добавлено через 31 секунду
анимированный - дефолтный?
0
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
01.06.2018, 15:41  [ТС]
DenNik, Конечно глобальная, анимированный это формата .ani, не дефолтный, в инете скачал и загрузил в ресурсы проекта, чтобы не таскался прицепом как файл.

Добавлено через 2 минуты
Чет у меня даже обычный не заменяет, щас создам чистый проект и попробую там.

Добавлено через 3 минуты
Чет у меня ваш код не работает, который вы выше скидывала для кнопок, хотя все в точности как там, может в самом файле курсора дело или что, бред какой-то.

Добавлено через 25 секунд
Можете пожалуйста проект скинуть вместе с файлом help.cur?
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
01.06.2018, 15:51
Лучший ответ Сообщение было отмечено WarlikeLaux как решение

Решение

не знаю, у меня тоже перестало работать. могу предложить стопроцентный вариант - хранить предыдущий курсор в файле. его можно сохранить программно один раз (например при старте формы, если еще нет файла, то сохранить). код
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm2.Button1Click(Sender: TObject);
var
  def: TIcon;
begin
  def:= TIcon.Create;
  def.Handle:= Screen.Cursors[crDefault];
  def.SaveToFile('default.cur');
  def.Free;
end;
Добавлено через 1 минуту
но с анимированными не работает
0
 Аватар для WarlikeLaux
9 / 9 / 12
Регистрация: 17.01.2018
Сообщений: 281
01.06.2018, 15:53  [ТС]
DenNik, Да уж, этот вариант работает, но то что с анимированными не работает это конечно плохо, мало ли у пользователя стоит анимированный курсор, ладно, бред это все заменять системный курсор, но спасибо большое за помощь, теперь я знаю еще методы работы с курсорами) Не зря так сказать все равно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2018, 15:53

Вывод информации из программы в текущий активный текстовый курсор
Доброго времени суток! Есть сканнер (Symbol DS9208) с которого выводится информация о штрих-коде в программу (putty, hyperterminal и...

Вывод информации из программы в текущий активный текстовый курсор
Доброго времени суток! Есть сканнер (Symbol DS9208) с которого выводится информация о штрих-коде в программу (putty, hyperterminal и...

Определить текущий индекс, на котором находится курсор массива
var arr, , , ] for (var i = 0, L = inputArray.length; i < L; i++) { for(var j=0; j<L; j++) {//какие-то действия} Проходим по...

Как сохранить текущий шрифт?
Изменить -- всё понятно и легко находится: создать LOGFONT, забить значениями, CreateFontIndirect и так далее. А как получить описание...

Как сохранить текущий график в цикле ?
есть тысяча файлов, которые надо обработать определенным образом и вытянуть из них figure-s. Так вот как в цикле прописать сохранение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru