mfc-ml

2005年01月

31

[mfc 50396] Re:コンボボックス内の特定の項目をDisable

まもです。

> コンボボックス内の特定の項目をDisable(選択不可)にすることは可能でしょうか?

話が終焉に向かっているようですので、ごみレスとして流してください。

その昔(Win3.1の頃あたり)、EditBoxのサブクラス化とポップアップ
メニューのオーナードローの組み合わせで、
このような仕様の『コンボボックスもどき』を作った覚えがあります。
#ドロップダウンの部分をポップアップメニューで実装するという事です。

選択対象のアイテム数が少ない事が条件となりますが。。
また、プログラム全体でコンボボックスの仕様を、これに統一化しないと
見た目も悪くなると思います。

私が、この仕様の『コンボボックスもどき』を作った時は、
ユーザの希望だったのですが、当時はWindowsの見た目や操作自体に
ユーザ側が慣れていなかったので、このような仕様も「あり」だったのかな~
と思います。
31

[mfc 50395] Re: Office オートメーションのバージョン間の互換性


社本@ワックです。

> 現在、Officeオートメーションを使用して、EXCELを動かそう
> と試みています。
> 下記のようなソースの場合、Excel2000では正常に動作するの
> ですが、異バージョン(Excel2002)ではCreateDispatchでエ
> ラーになってしまいます。エラー内容は、-2147221164(80040154)
> です。

実行環境は、何でしょうか?
EXCEL 2000 と EXCEL 2002 をインストールして確認したのは
同一のPC&OSでしょうか?

この状況だけ見ると、まだラッパクラス(TLB)は関係ないように思います。
まずは、ラッパクラスは使用しないで、直接、COleDispacthDriverのインスタンスの
CreateDispatch()が成功するかどうかを確認してみてはいかがでしょうか?

#当然、AfxOleInit() or CoInitialize() はしてますよね?


// 社本 明弘
// http://www.wac-jp.com/programmers/
// http://www.ailight.jp/blog/sha256/
// Microsoft MVP for VC++ (Oct 2003 - Oct 2005)
31

[mfc 50394] RE: コンボボックス内の特定の項目をDisable

質問元の今井です。
渋木さま、ご回答ありがとうございます。

On Mon, 31 Jan 2005 18:42:39 +0900
"Hiroaki SHIBUKI" <h...@mbi.nifty.com> wrote:

>  渋木です。

> > 何の項目が選択されたのかを判別するために、コンボボックスのインデックス値に
> > 対する項目名を決めていますが(※)、項目を削除した場合、
> > (※)を変更しなくてはいけなくなります。

>  インデックス値ではなく、SetItemData() した値とかで分岐すればいいんじゃないでしょう
> か。

> > また、ユーザーに対して、選択不可であるということを明示したい意向もあります。

>  表示はオーナードローすれば解決ですが、「選択できない」という「動作」を、ドロップダウ
> ンリストでどう表現するつもりなんでしょう?

>  前項目や次項目が勝手に選択されるような動作をお望みですか?

Disable表示はオーダードローで解決するだろうということ理解しました。
しかし、渋木様ご指摘のとおり、「選択できない」という「動作」を想定しましたところ、
前項目や次項目が勝手に選択されてしまうというように、
確かに不自然と感じました。軽はずみなMLへの質問だったと反省しております。

SetItemData() という関数、有用だと感じました。今まで使ったことがありませんでした。
アドバイス、ありがとうございました。
31

[mfc 50393] Re:コンボボックス内の特定の項目をDisable

しげです。

> 何の項目が選択されたのかを判別するために、コンボボックスのインデックス値に
> 対する項目名を決めていますが(※)、項目を削除した場合、
> (※)を変更しなくてはいけなくなります。
> 単にEnable/Disableにするのであれば、その必要が無くなるかと思いました。

インデックスと項目名のセットが少ないのであれば、その分丸ごと入れ替えて、
ソース上で分岐すれば、それほど改造は多くないのでは?
インデックスと項目名のセットが多いのであれば、渋木さんの言われるように、
SetItemData()を使用するのも一つの方法だと思いますし、選択された文字列そ
のもの(DDX_CBString)を判断材料に使用してもいいのではないでしょうか?


> また、ユーザーに対して、選択不可であるということを明示したい意向もあります。

ドロップダウンリストのコンボボックスって、ユーザが選べるものだけ、
選択肢として表示されるというほうが、普通だと思いますよ。
もしくは、何らかの実行アクション([OK]とか[Next]とか)で、「この項目は
選べません」とかいうメッセージを出すとか(私であれば、前者のUI仕様の
方にしますが)。
31

[mfc 50392] winmysqladminがない

4.1.9ですが、
件名のwinmysqladminがbinフォルダにないのですが、
無くなったのでしょうか?起動の確認はサービスからの確認になるのでしょうか?


__________________________________
Let's Celebrate Together!
Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/so2005/
記事検索
Amazon.co.jp
  • ライブドアブログ