掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
XE2でVCLスタイルをDLLのフォームに適用する方法について (ID:44159)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
># DLL にスタイルをリソースとして埋め込むしかないと思います。 ですよね. VCL スタイルの設定はプロジェクトごとですから.DLL は別のプロジェクトです. で,やってみました.Delphi XE2 に添付されている Amethyst Kamri でやってみました. この VCL スタイルのファイル名は AmethystKamri.vsf です. ところが,以下のコードで,LoadFromResouce が nil となってしまいます. リソースは,[プロジェクト] [リソースと画像] で追加しています. if FindResource(HInstance, 'Resource_1', RT_RCDATA) <> 0 then begin if TStyleManager.LoadFromResource(HInstance, 'Resource_1', RT_RCDATA) <> nil then begin TStyleManager.SetStyle('Amethyst Kamri'); end; end; そこで,Delphi XE2 の新規にプロジェクトを作成し, この VCL スタイルを設定して保存し,コンパイルしてみました. 作成された Project1.dproj を見てみると,以下の記述がありました. これが VCL スタイルの設定のようです. <VCL_Custom_Styles>"Amethyst Kamri|VCLSTYLE|$(PUBLIC)\Documents\RAD Studio\9.0\Styles\AmethystKamri.vsf"</VCL_Custom_Styles> そこで,DLL のプロジェクトを新規に作成し,今回のテストでは,TestDll.dpr としました. 上のファイルに相当するのは,TestDll.dproj となります. これを開いて,上と同じコードを追加してみました. 追加したのは,2 行目です.場所がわかりやすいように,他のも書いておきました. AmethystKamri.vsf というファイルは,ここに書いてあるフォルダにコピーしてテストしています. <PropertyGroup Condition="'$(Base)'!=''"> <VCL_Custom_Styles>"Amethyst Kamri|VCLSTYLE|D:\000\AmethystKamri.vsf"</VCL_Custom_Styles> <VerInfo_Locale>1041</VerInfo_Locale> <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace> <DCC_E>false</DCC_E> <DCC_F>false</DCC_F> 上の 1 行を追加した上で, Dll 内のフォームを生成するイベントで次のコードを実行します. Dll 内のフォームの名前が DllForm の場合です. procedure TDllForm.FormCreate(Sender: TObject); begin TStyleManager.TrySetStyle('Amethyst Kamri'); end; Windows 7 U64(SP1) + Delphi XE2(UP4) で動作確認しました. 実際問題として,DLL という別のファイルを作成するアプリなのだから, ファイルから読み込んでも,いいんじゃないかとも思んですが.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.