問題タブ [toolsapi]
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 - TOrderedListEditDlgへの公式インターフェースはありますか?
専門家では、Delphiが表示するダイアログを再利用して、プロジェクトのライブラリパスを編集したり、同様の目的で使用したりしたいと思います。
私はそれを使用するためのハックを見つけました(ページでTOrderedListEditDlgを探してください)。リンクされた記事を書いた人は彼が何をしているのか知っていると思うので、私はそれほどハッキーな解決策を望んでいませんが、誰が知っていますか...だから:TOrderedListEditDlgへの公式インターフェース(おそらくOTA)を知っていますか?
PS:ダイアログ全体を再作成するのはおそらく簡単なことですが、一貫性とDRYの原則が好きです。
delphi - bplデルファイエキスパートとdllデルファイエキスパートの違いはどれですか
私はデルファイIDEエキスパートで働いていますが、依存関係の問題を回避するために、これらの回答の1つで提案されているように、このエキスパートをdllエキスパートとして再構築することを考えていました。今では、エキスパート(bplとしてコンパイル)がグローバル変数(インスタンス)にアクセスScreen
します。 Application
Delphi IDEの)ので、エキスパートをdllとしてコンパイルするかどうか疑問に思っていましたが、これらの変数にアクセスできます。また、知りたいです。which are the main differences between a bpl delphi expert and a dll delphi expert?
delphi - デルファイIDEエキスパートからIDEのフォームを列挙する方法
私はdelphiIDEの専門家で働いており、Delphi IDEによって表示されるすべてのフォームを列挙する必要があります。現在、Screen.Forms
プロパティを使用していますが、OTAを使用してこれを行う別の方法があるかどうか疑問に思っています。Screen.Forms
私のエキスパートがBPLである場合にのみ機能するためですが、現在はdllエキスパートに移行しています。
delphi - 「ランタイム テーマを有効にする」のチェックを外すか、Delphi XE の内部マニフェストを削除しますか?
次の方法で使用したい Delphi XE で作成しているコンポーネントがあります。
ユーザーが新しい空のプロジェクトを作成します。
ユーザーがコンポーネントをフォームにドロップします。
私のコンポーネントのいくつかの特別なデザインタイム コードが実行されます。これにより、プロジェクト オプションが変更され、プロジェクト オプションの [ランタイム テーマを有効にする] チェックボックスがオフになります。これが可能かどうかさえわからないので、可能かどうか尋ねています。
#3 が不可能な場合は、このコンポーネントの「使いやすさ」の問題に対する別の解決策が必要です。私が抱えている問題は、ユーザーが [ランタイム テーマを有効にする] のチェックを外して静的にリンクされたマニフェスト ファイルを無効にしない場合、EXE にリンクされている静的に生成されたマニフェストが、EXE の外部に必要な外部マニフェスト ファイルを上書きするように見えることです。ディスク。また、実行時にこれらのマニフェストを変更する必要があるため、外部マニフェストが必要になります。もちろん、必要に応じて、これらのマニフェストを使用してランタイム テーマ機能を有効にすることもできます。2 つ目の質問は、外部マニフェストと内部マニフェストの優先度に関するものです。「ランタイム テーマを有効にする」をオンにすると、Delphi アプリにリンクされている内部マニフェスト リソースよりも、外部マニフェストが何らかの形で優先されることがありますか?
#3 以外の許容される解決策:
A. Delphi がマニフェストを生成しないようにします。B. 内部の .manifest ファイルが見つかった場合でも、何らかの方法で実行時に Windows に外部の .manifest ファイルを認識させ、優先順位を付ける。
C. 最も良くないソリューション。実行時に、コンポーネントの CoCreateInstance が失敗した後、リソースを列挙し、外部マニフェストが存在し、混乱していることを報告し、コンポーネントを使用する開発者に、コンポーネントが吐き出すランタイム エラー メッセージを読み取って、無効にするように指示することができます。ランタイムテーマのチェックボックスをオンにして、アプリを再構築します。マニフェストの抽出と読み取りは、Delphi に簡単に変換できる C++ コードを使用して、別の stackoverflow question hereで既に説明されています。
更新受け入れられた回答は私が尋ねたこととまったく同じですが、ハックと見なされ、アクティベーションコンテキストに関するデビッドの回答ははるかに正気であり、推奨されるアプローチです。
Update2組み込みのマニフェストは、プロジェクト設定を介して、リンクするマニフェストを明示的に指定することにより、通常、Delphi の新しいバージョン(XE5 以降)でオーバーライドされます。
delphi - ウェルカムページブラウザでOTAパッケージウィザード内からURIに移動するにはどうすればよいですか?
私がやろうとしているのは、プロジェクトに含まれているHTMLページを表示する(編集しない)機能を作成することです。ウェルカムページにはすでにWebブラウザが埋め込まれているため、その候補として適しているようです。
キュリオスなぜ?これが背景情報のある質問です。
delphi - HTMLドキュメントの特定のプロジェクトマネージャーのローカルメニュー項目の動作を変更するにはどうすればよいですか?
プロジェクトページオプションIDEアドイン¹を複製中です。特に、このアドインは、プロジェクトマネージャーの[開く]アクションのデフォルトの動作²を独自の動作に置き換えます。つまり、ウェルカムページの表示に使用されるのと同じ内部ブラウザーでHTMLページを開きます。だから、私は同じことをしたいのですが、現在私はこのメニューに到達できませんでした。
プロジェクトマネージャーのメニュー項目の追加を容易にするIOTAProjectManagerインターフェースを試しましたが³、それnotifiers
が互いに分離されていることを学んだので、おそらくこのAPIは私の目的には役に立たないでしょう。また、アプリケーション全体のアクション処理に接続しようとしました。それは私に全く結果を与えませんでした、おそらくアクションリストはそこで全く使われていません。
私は、上記の処分は私にハックに頼るしかないのだと思います。それはハックの解決策をここで本当に歓迎します。だから、何かアイデアをお願いしますか?
¹詳細については、このQを参照してください。
²関連するアイテムは、 [開く] 、 [マークアップを表示]、[デザイナーを表示]の3つです。アドインなしでデフォルトでShowDesignerを開きます。
³実際、このAPIを使用すると、アイテムをオンザフライで追加でき、おそらくさらに複雑になります。
図解されているコンテキストメニュー:
TOndrejが以下のコメントで述べているように、[開く]メニュー項目の動作は、対応するダイアログで[プロジェクトページ]として構成されたHTMLドキュメントに対してのみ変更されました。
delphi - OTA (Open Tools API) を使用して、Delphi IDE が変更された構文ハイライトの色を更新するように指示するにはどうすればよいですか?
を Rad Studio IDE (外部アプリケーションとして実行されるこのツールの現在のバージョン) と統合するためのプラグインを作成していますがDelphi IDE Theme Editor
、これまでのところすべて正常に動作しています (下の画像を参照)。 Delphi IDE で選択した構文ハイライトの色を更新する方法
説明させてください。構文ハイライトの色を変更する標準オプション ([エディター オプション] -> [色]) では、任意の要素をカスタマイズして、新しい前景色と背景色を割り当てることができます。. OK .ボタンを押すと、IDE は変更を適用し、IDE エディターはウィンドウは新しい設定で更新されます。
現在、新しい値を変更して保存することはできますが、Delphi IDE に新しい構成を適用するように指示することはできません。変更は、IDE を再起動した場合にのみ表示されます。
ToolsAPI ユニットを検索したところIOTAEditOptions
、IOTAHighlighter
およびIOTAHighlightServices
インターフェイスが見つかりましたが、変更された設定を更新 (リロード) するオプションが含まれているようには見えません。
また、(tdump を使用して) マングルを解除し、coreide1XX.bpl ファイルの関数を直接呼び出してみましたが、これもうまくいきませんでした。
How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?
さらに情報が必要な場合、または質問が明確でない場合はお知らせください。
delphi - Delphi Open Tools API を使用して、自分のアイテムを Delphi IDE Insight (F6) に追加します
INTAIDEINsightService
おそらく使用したい、AddItem
またはAddActionList
Delphi の IDE インサイト機能にエントリを追加したいと考えています。
Delphi OTA wiki によると、 INTAIDEINsightService
独自のアクションを登録できます。私が見つけることができる唯一の参照はhereであり、API の名前に言及しており、API が存在することを示しています。それについての Delphi のヘルプには何もありません。Delphi XEのToolsAPI.pas
ユニットは、アクションを登録できるこのインターフェイスの 2 つのメソッドを示しています。
コメントには、「項目は [説明 |] カテゴリ | TCustomAction.Caption として表示されます。カテゴリを指定しない含まれるアクションは表示されません。」と書かれています。
アクションを使用した他のドキュメントやサンプルは見つかりませんでした。アクションまたは単なるアイテムが説明またはカテゴリ「helloworld」で登録され、検索可能になり、F6 を押すと表示される単純な「hello world」の例は完璧ですが、アクションが優先されます。
このようなウィザードはINTAIDEInsightItem
、IDE インサイト内でレンダリングするために実装する必要があるように見えますが、それが hello-world サンプルに「必要」かどうかはわかりません。アクションを使用する必要があるのか、それとも通常の「アイテム」の追加で十分なのか、よくわかりません。
(私の最終的な目標は、新しい gExperts スタイルのエキスパートを作成して、「IDE インサイトを使用して名前で検索して、ライブラリ パス内の任意のユニットを開く」ことですが、一度に 1 項目ずつ ide インサイトにユニット名を追加することから始めます。 .)
delphi - プロジェクトへのユニットの自動追加
コンポーネントが自動的Delphi 7
にドロップされるプロジェクトDelphi 2006
のファイルに追加する必要があるユニットを使用しています。.dpr
Eureka Log がユニット 'ExceptionLog' をプロジェクト ファイルに自動的に追加する方法と同様に、次のようになります。
プロジェクト内の任意のフォームにコンポーネントをドロップしたときに、プロジェクト ファイルにプログラムでユニットを追加する方法を誰か教えてもらえますか?
delphi - フォームに「ToolsAPI not found」というメッセージが表示される
パッケージには、ToolAPi IOTAIDENotifierインターフェイスを実装するコンポーネントがあります。パッケージをセットアップしてコンパイルし、パレットに表示できます。このコンポーネントのメソッドは、それを使用するプロジェクトがコンパイルされる (実行されない) ときに特定のことを行うように設計されています...これまでのところ、問題がなければすべてです。
別のプロジェクトに属する TForm でこのコンポーネントを使用すると、後で問題が発生します。ビルドしようとすると、コンパイラ メッセージFile not found: ToolsAPI.dcu が表示されます。
パッケージの用途は次のとおりです。
PACKAGESETUPは、bpl をコンパイルするときにのみ定義されます。
エラー メッセージをダブルクリックすると、IDE は ToolsAPI への参照が宣言されているファイルを開きます...どうすればこの問題を解決できますか?