StringGridで2行を1レコードとして扱うには?


dajya_ranger  2013-09-02 12:48:33  No: 45193  IP: 192.*.*.*

OS:WindowsXP
言語:Delphi XE2
要約:StringGridでセルを結合してではなく、2行を1行として扱いたい

伝票形式の画面を作成するため、2行で1レコード(1行)の画面をStringGridで作りたいのですが、StringGridを基底クラスとしてコンポーネントを作る予定でいます。
そこで、DrawCellをオーバーライドして書き換えればいいのだとは思うのですが、具体的にどうしたらいいのか、途方に暮れています。
何か、ヒントでもいいのでご教授下さると嬉しいです。お願いします。

編集 削除
DEKO  2013-09-02 13:02:24  No: 45194  IP: 192.*.*.*

直接の回答ではありませんが...。

TDBCtrlGrid を使って TDBEdit を配置するのが面倒なくてよろしいかと。
一時的な DB として MyBASE (TClientDataSet) を使えば便利ですよ。

[ほかのデータベース対応コントロールが入ったグリッドの作成 (DocWiki)]
http://docwiki.embarcadero.com/RADStudio/ja/%E3%81%BB%E3%81%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E5%AF%BE%E5%BF%9C%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%8C%E5%85%A5%E3%81%A3%E3%81%9F%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E4%BD%9C%E6%88%90

[オンメモリテーブル (MyBase)]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=273

編集 削除
daja_ranger  2013-09-02 14:32:08  No: 45195  IP: 192.*.*.*

DEKOさん、早速のレスありがとう御座います。
TDBCtrlGridを使うというのは、ナイス・アイデアなんですが、奇数行に色(淡い青)を付ける要求仕様でして、中々難しいですね。
また、入力はほとんどなく、ドラッグ&ドロップでの作業になります。
(伝票1明細に対して、1仕入のアイテム(これも2行表示)をドラッグ&ドロップするような操作です)
ZColorGridとかも検討しましたが、結合セルになってしまうので、当方が意図するような表にならないので困ってます。
何か、良いアイデアがありましたら、ご教授お願いします。

編集 削除
Quest  2013-09-02 14:42:56  No: 45196  IP: 192.*.*.*

奇数行というのは、セットになっている2行のうちの1行目のことでしょうか?
2行を1セットとして、1セット目、3セット目に色をつけるのでしょうか?
前者の場合ならTDBCtrlGridにTPanelを貼り付けてしまうという力技もありますが(^^;

編集 削除
dajya_ranger  2013-09-02 15:36:20  No: 45197  IP: 192.*.*.*

Questさん、レスありがとうございます。

>奇数行というのは、セットになっている2行のうちの1行目のことでしょうか?
>2行を1セットとして、1セット目、3セット目に色をつけるのでしょうか?

通常の帳票イメージでして、2行を1セットとしますが、そのうちの1行目を青にし、2行目を白とします。
ですからご指摘の通り、TDBCtrlGridに力技も使えなくはないんでしょうが・・・。

編集 削除
take  2013-09-03 08:20:55  No: 45198  IP: 192.*.*.*

よくわかりませんが
「StringGridを基底クラスとしてコンポーネントを作る予定でいます。」
とのことなので
普通にDrawCellをオーバーライドして書き換えればいいではないでしょうか?

ちょうど良さそうなサンプルと小技集
http://www.geocities.jp/asumaroyuumaro/program/tips/stringgrid.html

DrawCellを使えばそのセル内は自由に描画できます。
(描画処理は時前で用意する必要がありますが)

編集 削除