MSFlexGridでコンボボックスを使用するには?

解決


帳簿  2003-02-01 05:36:24  No: 105966

はじめまして
MSFlexGridでコンボボックスを表示させたいのですが良く分かりません。
クリックした時にコンボボックスを表示させて内容を表示させるにはどの用な
やり方があるのでしょうか?又は、MSFlexGrid内にコンボボックスを表示
させるのは可能なのか?
教えて下さい。至らない質問ですいません。宜しくお願いします。


Say  2003-02-01 06:55:41  No: 105967

Visible=False のComboBoxを用意しておいて、
マウスクリック位置からクリックしたセルを割り出し、
そのセルに重なるようにComboBoxを配置し、
Visible=Trueにすればいいかと・・・。


帳簿  2003-02-01 23:40:28  No: 105968

Sayさんありがとうございます。
VBを始めたばかりなのでまだ良く分からないのですが、
何か参考になるようなサイトはあるのでしょうか?
お願いします。


Say  2003-02-03 07:50:32  No: 105969

ヘルプが一番いい資料だと思いますが・・・。

とりあえず、FormにMSFlexGrid、ComboBoxの順に配置し、
ColsとRowsを適当に設定し、
以下のコードを貼り付けて実行してみてください。

Option Explicit

Private Sub MSFlexGrid1_Click()
    Combo1.Width = MSFlexGrid1.CellWidth
    Combo1.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
    Combo1.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
End Sub


とおりすがり  2003-02-04 22:50:35  No: 105970

MSFlexGridではコンボボックスも含めてその他のコントロールも選択した座標を取得してそのコントロールを移動&表示を行わないといけないので、面倒であれば、
グレープシティ社等が販売しているグリッドを使う手もあります。
しかし、費用がかかるのがイヤ!という方は、グリッドを使うのではなく、
テキストやコンボボックス等を配列化させ、スクロールバーを使用してデータを表示するやり方もあります。この方法は面倒に見えますが、実はグリッド制御よりも簡単かもしれません。
うまくやれば、ActiveXコントロールにして使用するという手も…


帳簿  2003-02-04 23:31:46  No: 105971

ActiveXコントロールにして使用するという手も…と言っていますが
どの用なやり方で使用するのですか?
できればテキストやコンボボックス等を配列化も
教えていただけませんでしょうか?
宜しくお願いします。


とおりすがり  2003-02-04 23:56:33  No: 105972

ActiveXコントロールにするには、それなりに設計をしてからでないと後で酷い目に会いますので、クラスやプロパティ、メソッド等の概念を理解してから設計にとりかかりましょう。概念については色々なサイトに載っています。
例えば…http://homepage1.nifty.com/CavalierLab/lab/
です。
さて、配列化についてですが、
例えば、ある商品の明細を表示するプログラムを作成するとしましょう。
各コントロールを作成します。(その時、PictureBoxの中にコントロールを貼り付けるときれいに見えます。)
  txtSCode(textBox)…商品コード
  lblSName(label)  …商品名
  txtTanka(textBox)…単価
  lblZaiko(label)  …在庫
  txtSuryo(textBox)…数量
こんな感じでコントロールを作成し、そのコントロール類をまとめてコピーし(PictureBox内に貼り付けてあれば、PictureBoxをコピーするだけでOK)ペーストしてください。すると、「既に同じ名前の…」のメッセージが表示されますので、「OK」を押すとコントロールが配列化されます。

また、既にコントロールあって、同じ機能であれば、オブジェクト名を同じ名前にしても「既に同じ名前の…」が出てきます。


とおりすがり  2003-02-05 02:01:48  No: 105973

追記:
当然、明細行には限りがあるので、データは構造体配列などを使用して内部変数で管理してくださいね。
ちなみに、行番号等、明細行の位置を示す情報も配列化しておいてください。
その「行番号−1」の値が構造体配列のインデックス値として利用可能です。


帳簿  2003-02-05 02:45:29  No: 105974

アドバイスをありがとうございます。
色々、プログラムをいじってなんとなく分かってきましたが、
コンボの配置について聞きたいのですが
例えば3列目だけのセルにコンボを表示したいのですが分かりません。
教えて頂けますか?


とおりすがり  2003-02-05 03:31:24  No: 105975

MSFlexGridを使っての話ですよね?
でしたら、Select文を使ってみてはどうでしょうか?
例えば、グリッドのクリックイベント時に
Select case MSFlexGrid1.col
    case 3
        'コンボボックス貼り付け処理
end select
としたら3列目だけの表示ができますよ


帳簿  2003-02-05 19:34:38  No: 105976

とおりすがりさん、ありがとうございました。
一応なんとか形になったのでありがとうございました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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