問題タブ [ttaskdialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Delphi TTaskDialogでチェックボックスがオンになっているかどうかを確認するにはどうすればよいですか?
OK、これは簡単なはずですが、少なくともあまり良くないドキュメントには解決策が見つかりません..でTTaskDialog
、1つのチェックボックスを追加するオプションがあります。tfVerificationFlagChecked
のフラグを使用して、その初期状態を制御できますFlags
。しかし、ダイアログが表示された後に状態を取得するにはどうすればExecute
よいですか?
もちろんOnVerificationClicked
、各呼び出しで、イベントを使用して、チェックボックスの初期状態に最初は等しいローカル変数を切り替えることができます。しかし、より自然な解決策が期待されます。
delphi - TTaskDialog の使用方法
クラスをどのように使用しますTTaskDialog
か (Delphi 2009 以降)? 公式ドキュメントは役に立ちませんでした。実際、CodeInsight または VCL ソース コードを使用してクラスを調べると、さらに多くのことがわかります。そこには教育的な説明はありませんが、少なくともエラーもありません (ほんの数例です)。
そしてつい最近、ダイアログ内のハイパーリンクのクリックにどのように応答できるのか疑問に思いました。実際、tfEnableHyperlinks
フラグを設定すると、ダイアログのテキスト部分に HTML ハイパーリンクを含めることができます。(まあ、ドキュメントはフラグについて言った:「設定されている場合、コンテンツ、フッター、および展開されたテキストにハイパーリンクを含めることができます。当然、リンクが<A
HTML 要素を使用して実装されていることは「明白」です。)OnHyperLinkClick
ハイパーリンクのクリックに応答するためにイベントを使用していると思います。しかし、このイベントは です。TNotifyEvent
では、どのリンクがクリックされたかをどうやって知るのでしょうか? ドキュメントにはそれについて何も書かれていないので、推測するしかありませんでした。最終的にURL
、ダイアログのパブリックプロパティが設定されていることがわかったので、できるようになりました
公式ドキュメントには、このプロパティに関して次のように記載されています。
URL には、タスク ダイアログの URL が含まれます。
さて、あなたは認めなければなりません、それは素晴らしい説明です! しかし、これよりも悪いことです: ドキュメントには説明が欠けているだけでなく、エラーも含まれています。たとえば、
ExpandButtonCaption: このボタンの追加情報。
それはあまり正確ではありません。何のボタン?この特定のプロパティのヘルプを表示すると、
ExpandButtonCaption には、キャプションが展開されたときに表示される追加のテキストが含まれています。
どちらも良くありません。何のキャプション?適切な説明は
ExpandButtonCaption は、ユーザーがダイアログを展開して詳細情報を表示できるようにするボタンの横に表示されるテキストです。たとえば、このプロパティは「詳細」の場合があります。
とにかく、現在、2 つのコマンド リンク ボタンを含むダイアログを作成しようとしています。オペレーティング システムがこれらのボタンをキャプションと長い説明の両方で表示できることは知っていますが、TTaskButton
. ドキュメンテーションは素晴らしいものではありません。
しかし、ここ SO でこの特定のことを達成する方法を尋ねる代わりに、別の質問をします。
TTaskDialog クラスに関する (非公式の) ドキュメントはありますか?
delphi - Delphi TTaskDialog で VCLStyles を使用できますか?
Delphi TTaskDialog で VCLStyles を使用できますか?
delphi - 進行状況表示に TTaskDIAlog を使用する Delphi の例
Delphi で TTaskDialog を使用してプログレス バーを表示する例が見つかりません。Embarcadero のドキュメントは、TTaskDialog に関する限り、まったく役に立ちません。
私が見つけた最高のガイド:
http://specials.rejbrand.se/TTaskDialog
進行状況バーを表示するためのサンプルは含まれていません。
プログレス バーの Delphi ソースにさまざまなフラグが表示されますが、それらを試すために、タスク ダイアログをモードレスで表示してフラグを試す方法がわかりません。
更新: タスク ダイアログは、モードレス プログレス ダイアログが使用される従来の方法では使用できないという結論に達しました。長時間実行される操作に対して私が通常行うことは次のとおりです。
bummi の回答に基づいた TTaskDialog での私の実験は、次のことを示しています。
- タイマー イベントは、進行状況バーの更新には役立ちません。イベントは発生しますが、タイマー イベントのプログレス バーへの更新は updatewindow 呼び出しでも表示されません。
- ダイアログはモードレスで起動できないため、何らかの方法でタイマー イベントを作成してプログレスバーを更新したとしても、タイマー イベントで作業を進めるにはロジックを大幅に変更する必要があります。
- プログレスバーの位置を表示できる唯一の方法は、実行前に設定することです。その意味では、SilverWarior の回答で説明されているとおりに機能します。ユーザーから次のボタンの応答を取得する必要がある場合にのみ、新しいプログレスバーの位置でループ操作を表示する可能性が高いようです。それが正しい答えのように思えますが、私はこのアップデートへのより多くの応答を待ちます.
PS このテストには Delphi 2007 を使用しました。そのため、タイマーによる進行状況バーの更新が後の IDE で機能するかどうかはわかりません。しかし、D2007 コードでさえ内部的に標準の TaskDialog メッセージを送信して進行状況バーを更新するため、私はそれを疑っています。