[英]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文件存在一些問題。 我不得不手動:
添加拉撒路單位使用:
使用{$ IFDEF FPC} LCLIntf,LResources,{$ ENDIF}
條件編譯Delphi形式{$ R * .dfm}:
{$ IFNDEF FPC} {$ R * .dfm} {$ ENDIF}
在初始化代碼中添加.lrs資源:
初始化{$ IFDEF FPC} {$ i myunit.lrs} {$ ENDIF}
我懷疑mainform單元(我假設它稱為utest)在其初始化部分中沒有{$ I utest.lrs}。 .lrs是從delphi中的lfm(dfm)創建的lazarus資源文件。
空形式是當前項目的形式,因為您使用了從工具轉換Delphi項目,這意味着當前項目處於活動狀態。
嘗試這個:
對不起,我不能給你一個直接的答案。 據我了解,資源文件存在問題。 在delphi中,這是* .res,我不知道它們在拉撒路的樣子。 使用諸如resedit之類的程序http://www.resedit.net/來打開資源文件。 我嘗試了一下,並在其中發布了MAINICON的地方找到了一個“文件夾”圖標。 我猜你有兩個。 在這種情況下,請刪除其中之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.