2009-11-25 9 views
1

Я конвертировал свои 2 приложения GUI из Delphi в Lazarus. Оба приложения собираются для платформы Win32, i386 и с графическим интерфейсом. Основная форма была преобразована с использованием инструмента Lazarus и может быть отредактирована из IDE. Но когда я запускаю такое приложение, основная форма не появляется, только пустая форма без каких-либо элементов управления.Пустая основная форма в графическом приложении конвертирована из Delphi в Lazarus

Я попытался отладить это. Он запускает весь код в разделах инициализации, и запускает код из проекта .lpr, но что-то не так происходит в CreateForm(), потому что не запускает код в основной форме OnCreate. В журнале событий я вижу все тексты, которые я пишу с ним '<App.Run', появляющиеся после закрытия этой пустой формы.

Код в .lpr проекта:

Application.Initialize; 
    AddToEventLogInfo('App.CreateForm'); 
    Application.CreateForm(TfrmTst, frmTst); 
    AddToEventLogInfo('App.Run>'); 
    Application.Run; 
    AddToEventLogInfo('<App.Run'); 

Я проверил, что я могу создавать простые приложения с графическим интерфейсом от Лазаря, но и преобразован GUI приложение не работает должным образом. Что может быть неправильным? Я что-то пропустил? Может быть, одно из многих предупреждений и намеков, что письмо Лазаруса важно?

Когда я запускаю мое приложение Lazarus пишет об этом:

windres: warning: 14: "MAINICON": 1045: duplicate value 
    windres: warning: 16: 1: 1045: duplicate value 
    Project "Tst_fpc" successfully built. :) 

EDIT:

Lazarus инструмент преобразования конвертируется .dfm -> .lfm, но имеет некоторые проблемы с .pas файл. Я должен был вручную:

  1. добавить единицы Lazarus к применению:

    использует {$ IFDEF FPC} LCLIntf, LResources, {$ ENDIF}

  2. Условный компиляции Delphi формы {$ R * .dfm}:

    {$ IFNDEF FPC} {$ R * .dfm} {$ ENDIF}

  3. Добавить .lrs ресурс в коде инициализации:

    инициализации {$ IFDEF FPC} {$ я myunit.lrs} {$ ENDIF}

ответ

2

Я подозреваю, что блок основной формы (я предполагаю, что он называется utest) не имеет {$ I utest.lrs} в разделе инициализации. Файл .lrs является файлом ресурсов lazarus, созданным из lfm (dfm) в delphi.

+0

Да, это было. Конвертер из Lazarus сделал файл .lfm, но имеет некоторые проблемы с .pas-файлом. Дополнительная информация в обновленном вопросе. –

0

Я сожалею, что не могу дать вам прямой ответ. Из того, что я понимаю, проблема связана с файлом ресурсов. В delphi это * .res, я не знаю, как они выглядят в Лазаре. Используйте программу, например resedit, http://www.resedit.net/, чтобы открыть файл ресурсов. Я попробовал это и нашел значок «папки», где был пост MAINICON. Я предполагаю, что у вас двое. В этом случае удалите один из них.

1

Пустая форма является формой для текущего проекта, так как вы использовали проект Delphi для конвертирования из инструментов, что означает, что текущий проект активен.
Попробуйте это:

  • На вариант проекта закрыть текущий проект.
  • В маленьком главном окне, названном мастером проекта, используйте вариант преобразования Delphi.

 Смежные вопросы

  • Нет связанных вопросов^_^