Загрузка произвольного курсора из файла

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Загрузка произвольного курсора из файла

Сообщение Padre_Mortius » 30.01.2011 02:55:55

Подскажите, возможно ли использование внешних файлов с курсорами. Интересует кросплатформенный вариант. Гугление по данному поводу ничего не дало. Буду признателен за простой пример.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Загрузка произвольного курсора из файла

Сообщение Павел Ишенин » 30.01.2011 10:27:26

Простой пример лежит в examples\cursors
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: Загрузка произвольного курсора из файла

Сообщение Padre_Mortius » 30.01.2011 13:46:34

В примере используется загрузка из ресурсов. Хотелось бы возможность на лету менять курсор без перекомпиляции проекта.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Загрузка произвольного курсора из файла

Сообщение Nik » 30.01.2011 15:20:34

В Windows можно сделать так: http://lazarus.su/other/zagruzka-kursora-iz-fayla.html

Кросс-платформенный способ, увы, не знаю.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Загрузка произвольного курсора из файла

Сообщение Mr.Smart » 30.01.2011 15:29:55

Пишем свою следующую функцию (не забыв добавить модуль LCLType):
Код: Выделить всё
function LoadCursorFromFile(const aFileName: String): HCURSOR;
var
cur: TCursorImage;
begin
  cur:=TCursorImage.Create;
  cur.LoadFromFile(aFileName);
  Result:=cur.ReleaseHandle;
  cur.Free;
end;


после вызываем:
Код: Выделить всё
...
  if OpenDialog1.Execute then
   begin
    Screen.Cursors[1]:=LoadCursorFromFile(UTF8ToSys(OpenDialog1.FileName));
    Panel1.Cursor:=1;
   end;
...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Загрузка произвольного курсора из файла

Сообщение Лекс Айрин » 15.07.2015 12:28:04

что-то не заработал сей способ(((

Добавлено спустя 1 час 25 минут 24 секунды:
но все заработало, когда оформил все одной процедурой.

Код: Выделить всё
procedure TMainForm.MenuItemCursorClick(Sender: TObject);
Var
   Cur: TCursorImage;
begin
   if OpenDialogCursor.Execute then
   begin
    Cur := TCursorImage.Create;
  try
    Cur.LoadFromFile(UTF8ToSys(OpenDialogCursor.FileName));
    Screen.Cursors[1024] := Cur.ReleaseHandle;
  finally
    Cur.Free;
  end;
  Screen.Cursor := 1024;
   end else begin end;
end;                         
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru