カスタム ListBox コントロールを作成したいと思います。Firefoxのダウンロードのように見える場合があります
しかし、特定のレイアウトのカスタム描画をハードコーディングする代わりに、レイアウトを個別に定義できるようにしたいと考えています。説明させてください、リストボックスには公開されたプロパティ Layout: TWinControl があります。アイデアは、言うパネルでレイアウトを設計することです。したがって、上記の例では、次のようになります。
次に、ListBox の customdraw で、パネルの描画を使用します。もちろん、各行は対応する項目のデータを描画します。したがって、コントロールは DbAware になり、recordIndex は描画ごとに調整されます。(DBAware コントロールは実際には使用せず、カスタム データ バインディングを使用しますが、原則は同じです)
誰かがすでにこのようなことをしていますか? それは良い/悪い考えだと思いますか?
テストアプリの作成を開始しました。この質問を編集して、特定の実装に関する質問を追加します。
すべての行に対してパネルのインスタンスを 1 つだけ使用することを望んでいます。リストボックスの外に表示されないようにする必要があります。
これまでのところPanel.PaintTo()
、 ListBoxOnDrawItem
で使用してみましたが、基本的には機能しますが、 Panel が親であり、フォームの他の場所に表示されている場合のみです。パネルを非表示にできますが、まだペイントを使用できますか? これをどのように実装しますか?