tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルAxMSHFlexGridを使って、列数を動的に変えたい
記事No3134
投稿日: 2006/02/17(Fri) 10:38
投稿者JEE
[[OSのVer]:WindowsXP SP2   [VBのVer]:VB.NET2003 

はじめまして。
最近VB.Netをはじめた者です。(VB6.0の開発経験はありません) 

AxMSHFlexGridを使って、列数を動的に変えたいのですが、
(5行2列を5行3列に変える)
フォームデザイナでRowsを5、Columnsを2にしておき、
ボタンが押されたときに、列数を3にするのに以下の処理を実行したらエラーになりました。

------------------------------------------------------------------
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
        'AxMSHFlexGrid1.Col = 3
    End Sub
エラー ---------------------------------------------
'System.Runtime.InteropServices.COMException' のハンドルされていない例外が
axinterop.mshierarchicalflexgridlib.dll で発生しました。

追加情報 : HRESULT からの例外です : 0x800A753A。
------------------------------------------------------------------

Tipsに書かれてたset_Colsを使用してみましたが、列数は2のままで変わりませんでした。
ちなみに↓これではコンパイルエラーが発生したので、
        AxMSHFlexGrid1.set_Cols(, 3)
↓このように書きました。
        AxMSHFlexGrid1.set_Cols(AxMSHFlexGrid1.Rows, 3)

分かる方がいましたら、教えてください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: AxMSHFlexGridを使って、列数を動的に変えたい
記事No3135
投稿日: 2006/02/17(Fri) 11:27
投稿者魔界の仮面弁士
>         'AxMSHFlexGrid1.Col = 3

Col プロパティは、現在の列位置を表すプロパティです。列数自体を変化させるには、
Cols プロパティ……を .NET から設定できるようにした、set_Cols メソッド……ですね。


> Tipsに書かれてたset_Colsを使用してみましたが、列数は2のままで変わりませんでした。
>         AxMSHFlexGrid1.set_Cols(, 3)
カンマが余計であるような気がします。 .set_Cols(3) で試してみてください。

単純な列数追加であれば、.set_Cols(Integer, Integer) メソッドよりも、
.set_Cols(Integer) メソッドの方が良いですよ。


> ↓このように書きました。
>         AxMSHFlexGrid1.set_Cols(AxMSHFlexGrid1.Rows, 3)
.set_Cols(Integer, Integer) の最初の引数は、「行数」ではなく「バンド」を意味しています。

[ツリー表示へ]
タイトル解決しました!
記事No3137
投稿日: 2006/02/17(Fri) 11:36
投稿者JEE
返信ありがとうございます。

AxMSHFlexGrid1.set_Cols(3)

↑これで実行したらうまくいきました。
ありがとうございました!!

[ツリー表示へ]
タイトルRe: AxMSHFlexGridを使って、列数を動的に変えたい
記事No3136
投稿日: 2006/02/17(Fri) 11:31
投稿者YAS
>AxMSHFlexGrid1.Col = 3
ではなくて
AxMSHFlexGrid1.Cols = 3
                  ^
ではどうですか?

-----
あらら,書いている間にもっと詳しいレスがついてしましました。

[ツリー表示へ]
タイトルありがとうございました。
記事No3138
投稿日: 2006/02/17(Fri) 11:39
投稿者JEE
返信ありがとうございます。

AxMSHFlexGrid1.set_Cols(3)
これでうまくいきました。

ちなみに、AxMSHFlexGrid1.Cols = 3
VB.Netではコンパイルエラーが発生するようです。

[ツリー表示へ]
タイトルRe: ありがとうございました。
記事No3139
投稿日: 2006/02/17(Fri) 12:53
投稿者YAS
申し訳ありません。
VB2005で調べてしまいました。

[ツリー表示へ]
タイトルRe: AxMSHFlexGridを使って、列数を動的に変えたい
記事No3141
投稿日: 2006/02/17(Fri) 17:54
投稿者花ちゃん
> Tipsに書かれてたset_Colsを使用してみましたが、列数は2のままで変わりませんでした。
> ちなみに↓これではコンパイルエラーが発生したので、
>         AxMSHFlexGrid1.set_Cols(, 3)

申し訳ありませんでした。今確認したところ、私が作ったサンプルでは
 AxMSHFlexGrid1.set_Cols(, 3)  でok で
 AxMSHFlexGrid1.set_Cols(3)      で下に波線が表示してエラーとなります。

コントロールを一度削除して、貼り付け直しても同様なので、新たに違うプロジェクトを
作成して試して見たところ、上記が逆になりました。
記憶に無いのですがアップグレードした時のコードがどこかに残っているのかな??
新たに作成したと思うのだけど.... 原因不明

[ツリー表示へ]
タイトルIL を見てみたい…
記事No3142
投稿日: 2006/02/17(Fri) 19:23
投稿者魔界の仮面弁士
> 申し訳ありませんでした。今確認したところ、私が作ったサンプルでは
>  AxMSHFlexGrid1.set_Cols(, 3)  でok で
>  AxMSHFlexGrid1.set_Cols(3)      で下に波線が表示してエラーとなります。

おっとと。
第一引数を省略、第二引数必須なメソッドというのは、珍しいですね。


> 新たに違うプロジェクトを作成して試して見たところ、上記が逆になりました。

うーん。元の IA が、どのバージョンの tlbimp で生成されたのか気になります。(^^;

[ツリー表示へ]
タイトル環境のようです。
記事No3149
投稿日: 2006/02/18(Sat) 11:32
投稿者花ちゃん
昨夜は自宅のノートパソコンだったので、作り直したら
AxMSHFlexGrid1.set_Cols(10) で動作しましたが

元々作成したデスクトップのパソコンでは、AxMSHFlexGrid1.set_Cols(10) では
エラーとなります。
新たに作り直しても同じで、ノートパソコンで作成した、Interop.MSHierarchicalFlexGridLib.dll と
AxInterop.MSHierarchicalFlexGridLib.dll をペーストしてやれば、AxMSHFlexGrid1.set_Cols(10)
で動作しますが、原因は不明です。
MSHFLXGD.OCX も作成日やバージョンも同じです。
環境の違いといえば、VB6.0のサービスパックが、ノートの方は、5 でデスクトップが 6 位
しか違いがありません。

だめな方のデスクトップでVB2005 で作成すれば、AxMSHFlexGrid1.set_Cols(10) で ok と
なります。
と言う事は、 VB.NET 2003 に何らかの原因があるのでしょうか?
こんな事って私のこの1台だけなのかな?

下記でも、同様の書き方しているぞー
hhttp://www.vbforums.com/showthread.php?referrerid=61394&t=355045
With MSHFlexGrid
            .set_Cols(0, 4)

でも .set_ColWidth(0, 300) は、引数が2個になっている 私はset_ColWidth(0, , 300) で
ないとエラーとなる。

ここでも
hhttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200306_03060078.html

[ツリー表示へ]
タイトル原因判明
記事No3154
投稿日: 2006/02/18(Sat) 20:40
投稿者花ちゃん
2台の環境の違いを調べていたら、Framework 1.1 のサービスパックがあたって
いなかったので、もしやと思い、SP1 を当てたところ、問題が解決しました。
どうもお騒がせ致しました。

Framework のサービスパックがあたっていない方、この際にぜひ SP1 をあてて
おいて下さい。

[ツリー表示へ]