2011-12-27 15 views
2

私はVCLアプリケーションとかなり孤立したVCLコードを持っています。 Mac OSXサポートにFire Monkeyフォームを追加したいと思います。VCLとFMXの両方を1つのアプリケーションに組み込む方法は?

IFDEFを使用してWindows用にVCLをビルドするかFireMonkeyを使用してMac OSX用にビルドするかを決定する予定です。

アプリケーションがVCLの場合、残念ながらプロジェクトマネージャからMacOSプラットフォームを追加する方法はありません。

何とかこれをハックする方法はありますか?おそらく手動で.dprファイルと.dprojファイルを微調整しますか?

+1

参照[デルファイ-XE2-可能ツー・-FireMonkeyの-フォームでインスタンス化-vcl-application](http://stackoverflow.com/questions/7315050/delphi-xe2-possible-to-instantiate-a-firemonkey-form-in-vcl-application)を参照してください。同じコードベースのWindowsとosxアプリケーションを作成することはできますか? –

+0

自分のコードであれば(3Dパーティーではない)、プロジェクトフォームVCLをMIDA(http://www.midaconverter.com/)のようなコンバータを使用してFMに変換することを検討することがあります – philnext

+0

MIDAは自分のGDI +カスタムコントロール、DevExpressツールキット。私は標準のVCLからTActionList、TPanel、TFormだけを使用します:)しかし、とにかくチップのおかげで。 –

答えて

3

それを他の方法で回避を行うことについてはどう:FireMonkeyのアプリケーション

    • スタートあなたはVCLまたはFireMonkeyの
    間chooiseできるようにIFDEF
  • OS Xのプラットフォームターゲットを追加

    1形式のプロジェクトでこれを行うことは難しくありません。現在のVCL dprから既存のものをすべて追加してください。

    これは、実際には、VCLとFireMonkeyの.dprと.dprojがどのように異なるのかを把握できるようになるかもしれません(私は一度試しましたが、短期間でやりすぎたので、将来の研究)。

    注:

    あなたDPRファイルにIFDEFを入れたときに非常に注意してください。 Delphi IDEはDPRファイルを所有しています。たとえば、新しいフォームを追加したり、プロジェクトのプロパティを変更したりすると、IFDEFSが削除されます。

  • +0

    私は実際に働いたのであなたの答えを受け入れます。私は、コードベースからtogather VCLとFMXフォームを1つに統合し、Windows XPとMac OSXでそれらを実行することに成功しました。どのように正確に行ったか、詳細なスクリーンショットとソースコードについては、http://mtgs.blogspot.com/2011/12/how-to-create-and-application-which.html –

    +0

    をご覧ください。スクリーンショットをありがとう。上記の私の編集を見てください:これらのIFDEFsに注意してください。 –

    +1

    > Delphi IDEはDPRファイルを所有しており、新しいフォームを追加したり、プロジェクトのプロパティを変更するときにIFDEFSを削除します。 ちょっと注意してください。以前のDelphiのバージョンでは、ファイルの追加時に.dprファイルのusesブロックでIFDEFを完全にクリーンアップしましたが、Delphi XE5バージョンはより穏やかに動作し、他のユニットのIFDEFには触れません。 –

    1

    VCLコードを他のコードから分離するのは非常に良い兆候です。

    n-Tierアーキテクチャは意味があり、IMHOの完全RADアプローチはプロトタイプ作成には適していますが、メンテナンス可能なアプリケーションの作成にはいくつかの欠点があります。

    Delphi XE2を使用する標準的な方法は、FireMonkeyフォームとUIのみを使用することです。したがって、クロスコンパイルが容易になります。これは、メインテナンスの面では完全に意味があります。FireMonkeyのコードとフォームが設​​定されたら、再コンパイルするだけで、いくつかのプラットフォームに展開できます。そして、近い将来、Linuxがターゲットになる可能性があることを忘れないでください(DXSceneはLinuxとAndroidの準備ができていました)。フォームコンバータを使用すると、VCLの代わりにFireMonkeyを使用してコードを作成するのに役立ちます。

    Mac OS Xのシンプルなフォームが必要なだけで、Windows用のより複雑なアプリケーション(マーケティングターゲットによってはアイデアかもしれません)が必要な場合は、純粋なFireMonkey「ライト」アプリケーションを作成できます。しかし、条件付き定義をたくさん使うのはお勧めしません。適切なFireMonkeyプラットフォームを使用して、多様なプロジェクトを作成します。 VCLプロジェクトとFireMonkeyプロジェクトの間で、非VCLユニットをすべて共有します。このパターンには条件付き定義は必要ありません。

    +0

    私は、VCL + FMXベースの/条件付アプリケーションを持つことの利点/欠点を知っています。 FMは未熟でバグが多いIMHOであり、TMSやDevExpressのような素晴らしいツールキットはありません。私は、WindowsユーザーがcxGridグッズを喜んで利用したいと考えており、新しいMacユーザーのために全く新しいUI(2D FMに基づいています)を提供したいと思います。質問は、私のIDEに強制的に "Mac OSを追加"を私のプラットフォームメニューに表示させるかどうかではありませんでした。 –

    2

    dprojファイルを手作業で編集して、<Platforms>タグにOSX32を追加しようとしましたか?あなたはおそらくそれを認識しているが、場合にはそうでない

    <Platforms> 
        <Platform value="Win64">True</Platform> 
    
        <Platform value="OSX32">True</Platform> 
    
        <Platform value="Win32">True</Platform> 
    </Platforms> 
    

    、プロジェクトにFMXフォームを追加することができますサイモン・スチュアートからこのMonkeyMixerプラグインがあります。私は本当にのいずれかがMac用のテストすることはできません

    注意が、私はまだ100%のWindowsんだ、これまで...

    +0

    私はすでにJeroenの答えを受け入れてくれました。なぜなら、私は実際の解決策(http://mtgs.blogspot.com/2011/12/how-to-create-and-application-which.html)につながったからです。私はdprojを勉強してから始めるのが簡単な方法かもしれないので、あなたの回答にも投票しました。 –

    +0

    +1; MonkeyMixerという名前を忘れてしまいました。 .dprojの設定を理解してくれてありがとう。 –

    関連する問題