Загрузка произвольного курсора из файла
Модератор: Модераторы
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Загрузка произвольного курсора из файла
Подскажите, возможно ли использование внешних файлов с курсорами. Интересует кросплатформенный вариант. Гугление по данному поводу ничего не дало. Буду признателен за простой пример.
-
Павел Ишенин
- постоялец
- Сообщения: 475
- Зарегистрирован: 24.03.2007 09:16:52
Простой пример лежит в examples\cursors
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
В примере используется загрузка из ресурсов. Хотелось бы возможность на лету менять курсор без перекомпиляции проекта.
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
В Windows можно сделать так: http://lazarus.su/other/zagruzka-kursora-iz-fayla.html
Кросс-платформенный способ, увы, не знаю.
Кросс-платформенный способ, увы, не знаю.
Пишем свою следующую функцию (не забыв добавить модуль 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;
...- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
что-то не заработал сей способ(((
Добавлено спустя 1 час 25 минут 24 секунды:
но все заработало, когда оформил все одной процедурой.
Добавлено спустя 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; 