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

解決


じんくん  2004-05-08 17:58:25  No: 113062

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

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

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


じんくん  2004-05-08 18:00:29  No: 113063

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


魔界の仮面弁士  2004-05-08 23:14:50  No: 113064

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


じんくん  2004-05-08 23:37:50  No: 113065

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

以下の様に、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-09 01:03:03  No: 113066

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

    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-09 01:27:10  No: 113067

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


じんくん  2004-05-09 01:54:49  No: 113068

中項目、小項目にも、境界線を入れえると、大項目の境界(グループとして)
が見えにくいと思い、下表の様に、境界線をグループで消したかったのです。
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-09 03:51:19  No: 113069

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

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


じんくん  2004-05-10 22:52:47  No: 113070

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

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加