Загрузка ресурсов для формы "на лету"

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

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

Загрузка ресурсов для формы "на лету"

Сообщение NXP » 04.04.2008 19:12:35

Пожалуйста, подскажите, возможно, ли такое:

В конце каждого юнита с формой есть инициализация ресурсов

Код: Выделить всё
initialization
  {$I unit.lrs}

где есть

Код: Выделить всё
LazarusResources.Add('TLoginForm','FORMDATA',[
  'TPF0'#10'TLoginForm'#9'LoginForm'#4'Left'#3'|'#1#6'Height'#3#154#0#3'Top'#3
  +#226#0#5'Width'#3''#1#18'HorzScrollBar.Page'#3'~'#1#18'VertScrollBar.Page'#3
  +#153#0#13'ActiveControl'#7#9'ComboBox1'#11'BorderIcons'#11#12'biSystemMenu'#0

  +#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#21#196#238#225#224#226#232
  +#242#252' '#239#238#235#252#231#238#226#224#242#229#235#255#7'OnClick'#7#12
  +'Button1Click'#14'ParentShowHint'#8#8'TabOrder'#2#3#0#0#0#0
]);

Эта функция при инициализации создает ресурсы приложения, которые, используются при построении формы.

И так, вопрос: каким образом загрузить эти ресурсы из внешнего файла (*.lfm) т.е. из исходного вида, как этот

Код: Выделить всё
bject ClientForm: TClientForm
  Left = 388
  Height = 402
  Top = 138
  Width = 457
  HorzScrollBar.Page = 456
  VertScrollBar.Page = 382
  ActiveControl = ClientTree
  Caption = 'ClientForm'
  ClientHeight = 383
  ClientWidth = 457
  Menu = ClientMenu
  OnClose = FormClose
  OnCreate = FormCreate
  OnDestroy = FormDestroy
...
End


В LResources есть что-то подходящее, однако, ничего не удалось создать :x (вернее не корректно)

Это мне необходимо, для полной замены формы под разыми локалями, а также
Для последующей полировки интерфейса заказчиком без предоставления исходников заказчику.
Еще это благотворно скажется на размерах программы. :D
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Сообщение Sergei I. Gorelkin » 04.04.2008 20:52:55

Нужная ф-ция называется Classes.ObjectTextToBinary, она преобразует текстовый формат .lfm в двоичный, из которого можно грузить формы.

Однако я бы отсоветовал использовать этот механизм для указанных целей (локализация и правка заказчиком). Внесение изменений во множество разноязычных форм - очень трудоемкая задача, учитывая что при любой нестыковке ресурса с кодом форма просто не загрузится.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru