Ресурсы в Lazarus

Вопросы программирования и использования среды Lazarus.

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

pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Ну так приоткройте завесу тайны.
Вы о чём??? Я же не
грамотный совет от опытного пользователя
, а просто интересно стало. Да и за lazarus обидно:
Если заявлено, должно работать!
Вот и потратил время.

п.с.
Хотя, возможно, используя какие то изощрённые методы "онли винда" станет невозможной работа с res файлами в лине. Да и насчёт иных систем не уверен. Поэтому советую: дефолтом пользуйтесь :)

И кстати: эти фотки в учебниках часто мелькают. Хотя да...а: они не так популярны как фото девушки в шляпке...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sn-102
новенький
Сообщения: 16
Зарегистрирован: 24.08.2016 10:02:13

Сообщение sn-102 »

Ну понятно, вроде. Дефолт так дефолт :) Получается работа RES не совсем до конца допилена. Жаль, конечно, что об этом сразу не пишут. Не тратил бы время.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

LazRes генерт нормальные ресурсы.

Код: Выделить всё

    cmpBMP := TBitmap.Create;
    cmpBMP.LoadFromLazarusResource(lrClass.ClassName);

Вот пример кода - таким образом грузятся изображения компонент для LazReport-а.
Там куча методов для доступа к различного вида ресурсам.

Код: Выделить всё

    cmpBMP := TBitmap.Create;
    cmpBMP.LoadFromResourceName(HInstance, lrClass.ClassName);


Причём LazRes верно определяет тип файла по расширению при генерации (res или lrs).
sn-102
новенький
Сообщения: 16
Зарегистрирован: 24.08.2016 10:02:13

Сообщение sn-102 »

alexs писал(а):LazRes генерт нормальные ресурсы

Что и требовалось доказать - получается brcc32 генерит не нормальные ресурсы (для Lazarus'а). Спасибо за ценное замечание.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Продолжу тему ресурсов...
Открыл старый проект, хотел посмотреть на него свежим взглядом, но прикомпиляции выдает ошибку:

Код: Выделить всё

lresources.pp(36,40) Fatal: Невозможно найти FPCAdds, используемый в LResources, несовместимый PPU=E:\lazarus\components\lazutils\lib\i386-win32\fpcadds.ppu, пакет LazUtils

К чему бы этто?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Ustas, пробовал перекомпилировать с очисткой?
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Лекс Айрин писал(а):Ustas, пробовал перекомпилировать с очисткой?

Да.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

ssadragon писал(а):http://wiki.freepascal.org/Lazarus_Resources/ru

Для меня остался неясным такой вопрос: если вместе с формой LFM формируется свой LRS, то как туда добавить свои картинки?
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Конвертируешь свои картинки в lts с помощью lazarus/tools/lazres и подключаешь к проекту
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Я подключаю подключаю свои ресурсы к проекту добавив в конце:

Код: Выделить всё

{I image.lrs}
, но как их от туда достать. Везде пишут пользоваться

Код: Выделить всё

LazarusResources.Find('image1').Value;
. Но функция возвращает строку. А

Код: Выделить всё

Image.Picture.LoadFromLazarusResource('image1')
у меня что то не работатет.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Ustas, а если подключить ресурс через параметры проекта?
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>. Но функция возвращает строку. А
Она и должна возвращать строку, т.к. lrs это "муляж" полноценных ресурсов строками.

>>у меня что то не работатет.
инетересно как это она "что то не работает" можно подробности?
хрустальный шарик говорит что нужно не ('image1') а так как ваша картинка называется внутри image.lrs. Вспоминаем как ее называли при создании image.lrs или открываем его в текстовом редакторе и смотрим - там всё просто и понятно
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Лекс Айрин писал(а):подключить ресурс через параметры проекта

Выдает ошибку, что не найден ресур.
А вообще, функция Image.Picture.LoadFromLazarusResource('image1') работает. Я таким способом загрузил картинку в другое место - все получилось. У меня не получается загнать картинку в PopMenu, через функцию TMenuItem.GetBitmap, когда я его динамически создаю.
Будем искать, зря конетелил. Но все равно, спасибо.

Добавлено спустя 3 минуты 28 секунд:
Ustas писал(а):>>. Но функция возвращает строку. АОна и должна возвращать строку, т.к. lrs это "муляж" полноценных ресурсов строками.

А что дальше со стокой делать?
Ustas писал(а):>>у меня что то не работатет.инетересно как это она "что то не работает" можно подробности?хрустальный шарик говорит что нужно не ('image1') а так как ваша картинка называется внутри image.lrs. Вспоминаем как ее называли при создании image.lrs или открываем его в текстовом редакторе и смотрим - там всё просто и понятно

И предполагалось, что картинка так и называется image1
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

если
>>LazarusResources.Find('image1').Value;
работает, а
>>Image.Picture.LoadFromLazarusResource('image1')
нет
то наверно картинка в неподдерживаемом формате?

>>А что дальше со стокой делать?
что душе угодно. лучше конечно применить штатные методы чтения из ресурса, если их нет - можно строку сохранить в поток или файл или читать напрямую из строки.
Аватара пользователя
DYUMON
постоялец
Сообщения: 234
Зарегистрирован: 11.03.2009 12:32:54
Контактная информация:

Сообщение DYUMON »

А зачем вам в popmenu картинка ? Можно же назначить меню imagelist потом в него загрузить картинки из ресурсов и все это будет отображаться.
Ответить