表MSFlexGridまたはMSHFlexGridでセルの結合をするには?

解決


じんくん  2004-05-08 08:58:25  No: 113062  IP: [192.*.*.*]

大変お世話になっております。
今、画面上に、表画面を作りたく、MSHFlexGridを使用しました。
そこで、例えば、表の一番左端の項目を大項目とした場合、2行〜複数行を
結合して、1つのセルにすることが出来るでしょうか?
┌────┬───┬──┐
│        │      │1  │
│        │中項目├──┤      大項目:全体行で1セルに結合
│        │      │2  │
│大項目  ├───┼──┤
│        │      │3  │
│        │中項目├──┤      中項目:2セル以上を1セルに結合
│        │      │4  │
└────┴───┴──┘

また、セルを結合しなくても、境界線だけ1部消すことは可能でしょうか?
┌────┬───┬──┐
│        │AAA│1  │
│        │      │    │←上段:境界線だけ消して、各セルにデータ表示
│        │BBB│2  │
│大項目  ├───┼──┤
│        │      │3  │
│        │中項目├──┤←下段:中項目セルを結合して1つのデータ表示
│        │      │4  │
└────┴───┴──┘
もし、MSHFlexGridまたはMSFlexGridで出来ない場合、他の方法があれば
是非教えて下さい。

よろしくお願い致します。

編集 削除
じんくん  2004-05-08 09:00:29  No: 113063  IP: [192.*.*.*]

↑罫線が乱れて、見難くなってすみません。
よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-05-08 14:14:50  No: 113064  IP: [192.*.*.*]

前者の例では、5行分使えばOKです。
  1列目: 1〜5行目に「大項目」と書く。
  2列目: 1〜2、4〜5行目に「中項目」と書く。3行目は空。(または別の文字列)
このように設定しておき、3行目の高さをゼロにしてみてください。

編集 削除
じんくん  2004-05-08 14:37:50  No: 113065  IP: [192.*.*.*]

魔界の仮面弁士殿>早速の回答ありがとうございます。

以下の様に、5行分に同じ名前(大項目)を設定しただけでは、
    MSHFlexGrid1.TextMatrix(1, 0) = "大項目"
    MSHFlexGrid1.TextMatrix(2, 0) = "大項目"
    MSHFlexGrid1.TextMatrix(3, 0) = "大項目"
    MSHFlexGrid1.TextMatrix(4, 0) = "大項目"
    MSHFlexGrid1.TextMatrix(5, 0) = "大項目"
┌───┐
│大項目│
├───┤
│大項目│
├───┤
│大項目│
├───┤
│大項目│
├───┤
│大項目│
└───┘
上記のように、大項目が5行に表示されるだけで、結合して1つには
表示出来ませんでした。
もう少し詳しく教えていただければと思います。
どうぞ、よろしくお願い致します。

編集 削除
じんくん  2004-05-08 16:03:03  No: 113066  IP: [192.*.*.*]

魔界の仮面弁士殿>前述セル結合は下記の通りで出来ました!

    MSHFlexGrid1.TextMatrix(1, 0) = "大項目"
    MSHFlexGrid1.TextMatrix(2, 0) = "大項目"
    
    MSHFlexGrid1.MergeCells = flexMergeFree
    MSHFlexGrid1.MergeCol(0) = True

下段の2行を知りませんでしたが、なんとか出来ました。ありがとうございます。

後述の、セル間の境界線非表示方法が分かれば、是非教えて下さい。
┌────┬───┬──┐
│        │AAA│1  │
│大項目  ├───┼──┤←ここの境界線を、下記のように消せますか?
│        │BBB│2  │
└────┴───┴──┘
              ↓
┌────┬───┬──┐
│        │AAA│1  │
│大項目  │      │    │←境界線(上下または左右)だけ消して、
│        │BBB│2  │  各セルにデータ表示(セル結合ではない)
└────┴───┴──┘

度々の質問で申し訳ありません。是非よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-05-08 16:27:10  No: 113067  IP: [192.*.*.*]

> ここの境界線を、下記のように消せますか?
それはできませんが、ワードラップを有効にしておき、
改行を含んだテキストをセルに表示させることで
それに近い画面表示にする事ができます。

編集 削除
じんくん  2004-05-08 16:54:49  No: 113068  IP: [192.*.*.*]

中項目、小項目にも、境界線を入れえると、大項目の境界(グループとして)
が見えにくいと思い、下表の様に、境界線をグループで消したかったのです。
AAAとBBB,111と222は、1セルの改行ではなく、
各々の1データで、境界線だけ消したかったのです。
ワードまたはエクセルの表で罫線を非表示するふうに。
┌────┬───┬────┐
│        │AAA│111  │
│  1    │      │        │←境界線(上下または左右)だけ消して、
│        │BBB│222  │  各セルにデータ表示(セル結合ではない)
├────┼───┼────┤
│        │CCC│333  │
│  2    │      │        │
│        │DDD│444  │
├────┼───┼────┤
│        │EEE│555  │
│        │      │        │
│  3    │FFF│666  │
│        │      │        │
│        │GGG│777  │
└────┴───┴────┘

消すのが無理な場合、線種を変えることは出来ますでしょうか?
┌────┬───┬────┐
│        │AAA│111  │
│  1    ├------┼-------┤←境界線を破線とか、線の太さ、色を
│        │BBB│222  │  変えれるとか…。
├────┼───┼────┤
│        │CCC│333  │
│  2    ├------┼-------┤
│        │DDD│444  │
├────┼───┼────┤
│        │EEE│555  │
│        ├------┼-------┤
│  3    │FFF│666  │
│        ├------┼-------┤
│        │GGG│777  │
└────┴───┴────┘
長い書き込みになってしまいましたが、回答、よろしくお願いします。
Labelと罫線の組み合わせで表を作成した方が良いのでしょうか…。

編集 削除
魔界の仮面弁士  2004-05-08 18:51:19  No: 113069  IP: [192.*.*.*]

結論から言えば、罫線種の指定は、MS(H)FlexGridでは無理です。

環境が許すのであれば、MSHFlexGridの代わりに、
Microsoft Spreadsheetコントロールで代用してみては如何でしょう。

編集 削除
じんくん  2004-05-10 13:52:47  No: 113070  IP: [192.*.*.*]

魔界の仮面弁士殿>返事が遅くなり申し訳ありません。
MS(H)FlexGridでの罫線枠が無理ということなので、
Microsoft Spreadsheetコントロールで挑戦してみました。
結果、理想通りの枠が出来ました。

そこで、新たな問題にぶつかったので、新規の質問とします。

MS(H)FlexGridの件は、どうもありがとうございました。
引き続きご指導お願いします。

編集 削除