Страница 1 из 1

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

СообщениеДобавлено: 30.01.2011 02:55:55
Padre_Mortius
Подскажите, возможно ли использование внешних файлов с курсорами. Интересует кросплатформенный вариант. Гугление по данному поводу ничего не дало. Буду признателен за простой пример.

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

СообщениеДобавлено: 30.01.2011 10:27:26
Павел Ишенин
Простой пример лежит в examples\cursors

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

СообщениеДобавлено: 30.01.2011 13:46:34
Padre_Mortius
В примере используется загрузка из ресурсов. Хотелось бы возможность на лету менять курсор без перекомпиляции проекта.

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

СообщениеДобавлено: 30.01.2011 15:20:34
Nik
В Windows можно сделать так: http://lazarus.su/other/zagruzka-kursora-iz-fayla.html

Кросс-платформенный способ, увы, не знаю.

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

СообщениеДобавлено: 30.01.2011 15:29:55
Mr.Smart
Пишем свою следующую функцию (не забыв добавить модуль 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;
...

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;