2012-05-04 18 views
4

VCLStylesを使用するためにDelphiのTTaskDialogを作成できますか?VCLStylesを使用するためにDelphi TTaskDialogを作成できますか?

+5

['TTaskDialog'](http://docwiki.embarcadero.com/Libraries/en/Vcl.Dialogs.TTaskDialog)は完全に[' Windows Vista up dialog']です(http://msdn.microsoft.com /en-us/library/windows/desktop/bb787471%28v=vs.85%29.aspx)、これは(もし可能であれば)行うのが難しいと思います。私の提案はあなた自身を作成することです(さらに、あなたは利益を得るでしょう、あなた自身のタスクダイアログは、Windows XPでも以下のように動作します)。 – TLama

+0

['Arnaud'](http://stackoverflow.com/users/458259/arnaud-bouchez)が['タスクダイアログシミュレーション 'を作成しました](http://blog.synopse.info/post/2011/03/05/Open-Source-SynTaskDialog-unit-for-XP、Vista、Seven)をインストールしてください。 – TLama

+1

Tlama/Arnaud - 私は再びStackOverflowコミュニティの知識と有用性に驚いています! – Mmarquee

答えて

4

AFAIK、そして彼のコメントのTLamaによると、このTTaskDialogはWindows APIを直接マップするだけで、VCLスタイルを直接行うことはできません。

しかし、described in this article about using VCL Styles within a TWebBrowserのようなハックを使用すると、これを行うことができます。

これはいくつかの仕事であり、実現可能ではないと私は思う。 Windowsで作成されたすべてのコンポーネントをハックする必要がありますが、これは簡単ではありません。 Task Dialog APIは、TWebBrowserのように、多くのコールバックがオーバーライドされる準備ができている、完全で詳細なCOMインターフェイスを提供していません。

Open-Source Task Dialog emulation codeを最初に使用すると、エミュレーションレイヤーを純粋なVCLコンポーネントで使用するように強制できます。この場合、スタイルを扱うのは簡単です。ユニットを改善させるために、私たちにフィードバックとパッチを送ってください!他のユーザーは、このようなすてきな機能を享受したいと思っています。これはオープンソースでは素晴らしいものです。何かを始めて公開してからcontributions are integratedとすると結果が良くなります。 :)

+0

+ 1ed、私はクレジットを盗もうと思っていません:-)とにかく私はポジショニングに関する奇妙な問題を発見しました。 'Form.Canvas.TextWidth'を設定すると位置が高い負の値に変更されます。フォームのサイズを変更するたびに位置の値も小さくなるため、フォームは決して表示されません。なぜこのようなことが起こるのか分からない。これはフォームの位置IMHOに影響しないはずだからだ。 – TLama

+0

@TLama「Form.Canvas.TextWidthを設定する」とはどういう意味ですか? –

+0

'SynTaskDialog.pas'、653行目。削除した投稿のように' Execute'を呼び出しました。その行に 'Form.Left'と' Form.Top'が負の値に変更されました(とにかく)。 Btw。私は 'poScreenCenter'の位置が設定された呼び出し元のフォームを持っています(それはどういうわけか、なぜか分かりません)。 – TLama

6

VCL Styles Utilsライブラリには、TTaskDialogのサポートが追加されました。

enter image description here

enter image description here

プロジェクトにこれらのユニットを追加する必要があり、この機能を有効にするには。

  • Vcl.Styles.Utils.Forms
  • Vcl.Styles.Utils.SysStyleHook
  • Vcl.Styles.Utils.SysControls
  • Vcl.Styles.Hooks

詳細情報ことができますこのblog postに見つかります。

関連する問題