簡體   English   中英

GUI應用程序中的空主窗體從Delphi轉換為Lazarus

[英]Empty main form in GUI app converted from Delphi to Lazarus

我已經將2個GUI應用程序從Delphi轉換為Lazarus。 這兩個應用程序均可針對Win32平台,i386和GUI進行編譯。 主表單使用Lazarus工具進行了轉換,可以從IDE中進行編輯。 但是當我運行這樣的應用程序時,主窗體沒有出現,只有空白窗體沒有任何控件。

我試圖調試它。 它運行初始化部分中的所有代碼,並運行.lpr項目中的代碼,但是在CreateForm()中發生了一些錯誤,因為它不在主窗體的OnCreate事件中運行代碼。 在事件日志中,關閉此空白表格后,我可以看到寫入的所有文本,其中顯示'<App.Run'

.lpr項目中的代碼:

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

我檢查了是否可以從Lazarus創建簡單的GUI應用程序,但是兩個轉換后的GUI應用程序均無法正常工作。 有什么事嗎 我錯過了什么嗎? 也許拉撒路的許多警告和提示之一很重要?

當我運行我的應用程序時,Lazarus寫道:

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

編輯:

Lazarus轉換工具轉換了.dfm-> .lfm,但是.pas文件存在一些問題。 我不得不手動:

  1. 添加拉撒路單位使用:

    使用{$ IFDEF FPC} LCLIntf,LResources,{$ ENDIF}

  2. 條件編譯Delphi形式{$ R * .dfm}:

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

  3. 在初始化代碼中添加.lrs資源:

    初始化{$ IFDEF FPC} {$ i myunit.lrs} {$ ENDIF}

我懷疑mainform單元(我假設它稱為utest)在其初始化部分中沒有{$ I utest.lrs}。 .lrs是從delphi中的lfm(dfm)創建的lazarus資源文件。

空形式是當前項目的形式,因為您使用了從工具轉換Delphi項目,這意味着當前項目處於活動狀態。
嘗試這個:

  • 在項目選項上, 關閉當前項目
  • 在名為項目向導的小主窗口上,使用convert Delphi project選項。

對不起,我不能給你一個直接的答案。 據我了解,資源文件存在問題。 在delphi中,這是* .res,我不知道它們在拉撒路的樣子。 使用諸如resedit之類的程序http://www.resedit.net/來打開資源文件。 我嘗試了一下,並在其中發布了MAINICON的地方找到了一個“文件夾”圖標。 我猜你有兩個。 在這種情況下,請刪除其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM