TDrawGridコントロールがあり、選択したレイアウトの種類に応じて画像がグリッドのセルに表示されるアプリケーションをDelphiで開発する必要があります。セルのキャンバスに線を引きます。私が提供する必要のある機能は、線を描画すること、セルに複数の線を描画すること、任意の1つの線を選択して移動、展開、削除することです。
すべての行がマウスイベントに応答するように、実行時に行をコントロールとして作成する方法はありますか?
描画オブジェクトをウィンドウ化されていないVCLコントロールとして実装しないことをお勧めします。それから多くを得ることができませんが、いくつかのこと(ヒットテストなど)は、これを自分でコーディングする場合よりもはるかに難しいでしょう。
VCLコントロールは長方形であるため、平行な対角線の場合、少なくとも部分的に1つのコントロールが他のコントロールの上に配置されます。通常、マウスイベントは、Zオーダーの最上位のコントロールにのみ到達します。これは、独自のコードで修正する必要があるものです。
選択した線には終点がマークされている必要があります。これにより、ユーザーは移動またはサイズ変更のために終点を取得する場所を知ることができます。繰り返しになりますが、カスタムコントロールが(実行時に)提供しないものがあるため、これをコーディングする必要があります。
おそらく、線オブジェクトクラスを作成し、線の作成、描画、選択、移動、サイズ変更、削除のすべての機能を自分で実装するだけです。
過去に、図形、テキスト、接続線を使用するネットワークデザインアプリケーションを作成しました。私はDevExpressのExpressFlowChart製品を利用しました。これは、いくつかのfoiblesがありますが、タスクを比較的簡単にしました。
mghieが述べたように、ヒットテストは特に問題となる問題の1つです。誰かにあなたのためにその重い物を持ち上げてもらうのはいいことです。
カスタム コントロールを作成できます。(いくつかのキャッチがあるので、必ずコンポーネント作成者のマニュアルを参照してください)。
TShape コントロールを見始めることができます。単純な形状に使用されます。たぶん、それを拡張してラインをサポートすることができます。