Delphi から Lazarus に変換された GUI アプリの空のメインフォーム
-
22-09-2019 - |
質問
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を変換しました アプリが期待どおりに動作しません。何が間違っているのでしょうか?何か見逃してしまったのでしょうか?おそらく、ラザロが書いた多くの警告やヒントのうちの 1 つが重要でしょうか?
アプリを実行すると、Lazarus は次のように書きます。
windres: warning: 14: "MAINICON": 1045: duplicate value
windres: warning: 16: 1: 1045: duplicate value
Project "Tst_fpc" successfully built. :)
編集:
Lazarus 変換ツールは .dfm -> .lfm を変換しましたが、.pas ファイルにはいくつかの問題がありました。手動で行う必要がありました。
Lazarus ユニットを使用に追加します。
用途 {$IFDEF FPC} LCLIntf、LResources、 {$ENDIF}
Delphi フォーム {$R *.dfm} を条件付きでコンパイルします。
{$IFNDEF FPC} {$R *.dfm} {$ENDIF}
初期化コードに .lrs リソースを追加します。
初期化 {$IFDEF FPC}{$i myunit.lrs} {$ENDIF}
解決
IはMainFormをユニット(私はそれがUTEST呼ばれると仮定する)、その初期化セクションで、{$ I utest.lrs}を持っていないと思われます。 .lrsは、DelphiでLFM(DFM)から作成されたラザロリソースファイル、です。
他のヒント
空のフォームは、ツールから Delphi プロジェクトの変換を使用したときの現在のプロジェクトのフォームです。これは、現在のプロジェクトがアクティブであることを意味します。
これを試して:
- プロジェクトオプションについて 現在のプロジェクトを閉じる.
- プロジェクト ウィザードという名前の小さなメイン ウィンドウで、Delphi プロジェクトの変換オプションを使用します。
私は、私はあなたにまっすぐに答えを与えることはできませんごめんなさい。私が理解から、問題は、リソースファイルに問題があります。 * .resファイルだDelphiでは、私は、彼らがラザロのように見えるかわかりません。リソースファイルを開くには、ResEditを、 http://www.resedit.net/ のようなプログラムを使用してください。私はそれを試してみましたが、ポストMAINICONがあった「フォルダ」アイコンを見つけました。私はあなたが2を持って推測しています。それらの場合の削除1でます。