伝票レイアウトを実現するには、DataGridViewCellのカスタマイズを結構色々やる必要があるねぇ。
プロパティやメソッドを色々・・・ってのもあるけど、一番のヤマ場は
OnPaintメソッド
業務系のAPを作る人たちの中で、グラフィック描写の知識が多い人ってのはかなりレア度が高いと思う。
関わっている業態にもよるだろうけど、ふつーに販売管理だーなんだー、っていう人だったらなおさら未知の領域だと思われ。
Graphicsクラスとか、業務には全くかかわりの無い領域だからねぇ。こんなの知らなくたって業務システム作れるしw
なのでOnPaintは最後の最後として、まずは必要となるプロパティから。
オーバーライドする必要があるのは少なくて二つばっかり。
EditTypeプロパティ
このセルが利用する編集コントロールのTypeを返却するプロパティ。今回は、前回の記事までで利用している
IDataGridViewEditingControlインターフェースを継承したクラス、のTypeになるね。
ValueTypeプロパティ
このセルで扱う値のTypeを返却するプロパティ。今のところ特にそれ専用のクラスというのは用意してないけど、
実装のしやすさなどの面も考慮して、このあたりで一つ用意しておくといいかも。
あくまでも「そんなものは用意しない!」というならオーバーライドしないでもOK。気合で対応だ!
独自に追加するプロパティは今のところ一つかな?
編集時に「UserControlを継承したコントロール」を利用するっていう仕組みなんだけど、実際に利用するTypeを取得設定できる
ようなプロパティが必要。んで値を保持しておく必要もあるね。自分で作っているときはEditorInstanceTypeプロパティとか
そんな名前で作っているな。
それでこのプロパティについては、後々(この表現が多いけど)手を加えると楽になる事があるんだよね。
それはプロパティのグリッドから設定できるようにすること。
要はデザイン時に設定できるようにすることで、InitializeComoponentメソッド内部で実行してくれるから、DataGridViewが元々
抱えている不具合(RowTemplate.Heightが値を変更してもデザイン時に適用されない、とか)も気にしないですむんだよね。
ただ、これをやるにはTypeConverterという結構厄介なクラスと係わり合いになる必要があるので・・・。
一通りの実装が終わった後で記事にしようと思う。
0 件のコメント:
コメントを投稿