• ベストアンサー

ダイアログ作成での質問

  VS.NET2003のWin32APIで作成しています。 ダイアログボックを使用してデータ入力および作成ができるようにしたいと考えています。 そこで、リスト状になっていてクリックするとコンボボックスになるにはどうしたらいいでしょうか? リスト状に数値入力も可能なのでエディット関係かなと思っているのですが。   ネットで探しているのですが中々見つからないのでここで質問をさせていただきました。   画像を載せました、こういったダイアログにするにはどうしたらいいでしょうか?    

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

まず1つ訂正。 >このようなことを行うコントロールは商業製品でないとなかったと思います。 というのは間違いでした。「グリッドコントロール」で検索したらそれっぽいのがありました。(参考URLの1番目)。 「これを使ったらどうでしょう」で回答が終わってしまった……。 以下、補足への回答です。 >(2)リストコントロールでの処理ならリストビューでのグリッド表示でなくてもいいのでしょうか? ちょっと用語に間違いがあったので修正します。MFCではリストビューコントロールをCListCtrlクラスとして扱っていまして、そのためリストビューコントロールを縮めてリストコントロールと呼んでいました。ですから、No.1の回答中の「リストコントロール」は「リストビューコントロール」と読み替えてください。 # ちなみにMFCにはCListViewと言うクラスもありますが、これはリストビューコントロールだけで構成されたウィンドウを表すクラスでリストビューコントロールとは別物です。 >列の左側が淡色表示されているのですが、こういった処理はリストコントロールでも可能ということでしょうか? 「カスタムドロー」と言うものをつかえば可能です。参考URLの2番目(英語)からのリンクをたどって調べればできるようになります……根気があれば。 ただし、その行を選択するためだけの列が本当に必要かどうか、言い換えると、すべてのセルを編集可能にする必要があるかを考えてからやってください。

参考URL:
http://www.codeproject.com/KB/list/CGridListCtrlEx.aspx,http://msdn.microsoft.com/en-us/library/bb761817%28VS.85%29.aspx
dotneer
質問者

お礼

グリッドコントロールというのがあるんですね。 MFCのようなので使うならMFCを理解してからのほうがいいですね。   リストコントロールでカスタムドローというものがあるのは知りませんでした。 サイトを調べて回ってたんですがなかなかこういうのが無かったので苦戦してました。 英語サイトのようなのですが頑張ってみます。   いろいろと調べて下さり本当にありがとうございます。     

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

このようなことを行うコントロールは商業製品でないとなかったと思います。 自分はMFCで似たようなことを以下の方法で実装しました。 (1)コンボボックスを非表示状態で配置する。 (2)リストコントロールへの「クリックされた」というイベントの処理で以下を行う。  (2-1)コンボボックスで選択を行う列かどうかを確認する。  (2-2)(1)のコンボボックスをクリックされたセルの大きさに変更してクリックされたセルの上に移動する。  (2-3)コンボボックスに選択可能なアイテムを追加し、現在のセルの内容にあわせて選択されているアイテムを変える。 (2-4)コンボボックスを表示状態にする。 (2-5)クリックされたセルを現在編集中のセルとして記憶する。 (3)コンボボックスの「選択された」というイベントの処理で以下を行う。  (3-1)コンボボックスで選択されているアイテムをもとに現在編集中のセルを修正する。  (3-2)コンボボックスを非表示状態にする。 上記にはいろいろと抜けている処理があると思いますが、参考になれば幸いです。

dotneer
質問者

お礼

  丁寧な回答ありがとうございます。 とても参考になりました。 自分はMFCまたはSDKで実装するために調べていました。

dotneer
質問者

補足

(2)リストコントロールでの処理ならリストビューでのグリッド表示でなくてもいいのでしょうか?  列の左側が淡色表示されているのですが、こういった処理はリストコントロールでも可能ということでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A