No.2ベストアンサー
- 回答日時:
MaxDropDownItemsプロパティを設定すれば変更できます。
danchorです。 早速のご教示ありがとうございます。
これが個々に設定出来れば作業の効率がグンと上がり、喜んでもらえそうです。
早速改訂して配布することにします。
ついでで申し訳ないのですが、確かこのドロップダウンリストに表示させる順番も変えれたような記憶があるのですが・・・。
すなわち何も指定しなかったときには5番目に表示されるがそれを1番上にして以降順番にでるようにみたいに。
でもそうすると1~4番目は後ろに廻る? それとも無視される??
すみません。 よろしくお願いいたします。
No.7
- 回答日時:
★追記
・『SendMessage』関数の戻り値や引数にキャストをつけていません。
・分かりやすくするために取り除いています。
・このため、いろいろと警告などが表示されると思いますが、そこは質問者さんが
・キャストを上手につけて下さい。
・以上。おわり。
Oh-Orangeさん 再度のご教示ありがとうございます。
「学習機能」・・・・そんなものできっこない! といとも簡単にあきらめていましたが、な~るほど! と感心しきり!
考え方をしっかり理解・整理してぜひ活用させていただきます。
「もっともっとあくなき探求心が必要」だと痛感したもうすぐ還暦近いおっさんの独り言でした。
ありがとうございました。
No.6
- 回答日時:
★どうやら回答者 No.5 さんの考えが近いようですね。
・FEP のような学習機能を実現するにはコンボボックスのデータ項目1つ1つに
インデックス番号(支店名コード)などを関連付けてセット(管理)します。
この関連付けは『CB_SETITEMDATA』というメッセージで行えます。
・その後、ユーザさんが選択したデータ項目を最上位に移動させます。
・移動はデータ項目と関連付けたインデックス番号(支店名コード)をペアで行います。
・移動は『選択位置の取得』→『選択位置の削除』→『先頭位置への挿入』という
3ステップが基本です。
・これで使用頻度が高い順に最上位にデータ項目が移っていきます。
これが学習機能ですね。
・下に簡単なサンプルを載せますが、C/C++ ですよ。
サンプル:初期設定(フォームに読み込ませる最初)
static LPCTSTR lpTable[] = { 文字列0番 … 文字列100番, NULL };
LPCTSTR *lpSeek = lpTable;
INT nIndex; ←インデックス番号(支店名コード)
for ( nIndex = 0 ; *lpSeek != NULL ; nIndex++ ){
SendMessage( Combo.hWnd, CB_INSERTSTRING, nIndex, *lpSeek ); ←データ項目(支店名・文字列)
SendMessage( Combo.hWnd, CB_SETITEMDATA, nIndex, nIndex ); ←インデックス番号を関連付ける
lpSeek++;
}
サンプル:学習機能(選択した項目を上位に移動)
TCHAR szBuffer[ 256 ]; ←文字列領域
INT nSelect; ←選択位置
INT nIndex; ←インデックス番号(支店名コード)
nSelect = SendMessage( Combo.hWnd, CB_GETCURSEL, 0, 0 ); ←選択位置の取得
nIndex = SendMessage( Combo.hWnd, CB_GETITEMDATA, nSelect, 0 ); ←選択位置のインデックス番号を取得
SendMessage( Combo.hWnd, CB_GETLBTEXT, nSelect, szBuffer ); ←選択位置の文字列取得
SendMessage( Combo.hWnd, CB_DELETESTRING, nSelect, 0 ); ←選択位置の削除
SendMessage( Combo.hWnd, CB_INSERTSTRING, 0, szBuffer ); ←先頭位置への挿入
SendMessage( Combo.hWnd, CB_SETITEMDATA, 0, nIndex ); ←先頭位置へインデックス番号を関連付ける
サンプル:項目位置取得(選択している項目のインデックス番号を取得)
INT nSelect; ←選択位置
INT nIndex; ←インデックス番号(支店名コード)
nSelect = SendMessage( Combo.hWnd, CB_GETCURSEL, 0, 0 ); ←選択位置の取得
nIndex = SendMessage( Combo.hWnd, CB_GETITEMDATA, nSelect, 0 ); ←選択位置のインデックス番号を取得
return( nIndex ); ←これがインデックス番号(支店名コード)になります
最後に:
・言葉での説明が難しいので C/C++ での実装例を交えました。
・上記の部分だけでは学習機能が不揮発性ですのでソフトを終了してしまうと、次の起動で初期化されて
しまいます。これを防ぐにはファイルへ使用頻度順のコンボボックスの『学習インデックス情報』を
保存します。また、次の起動にそのファイルを読み込んで使用頻度順に再現させる必要があります。
・まずは、上記の部分を組み込んで『学習機能』ぽいのを実感(体感?)してみて下さい。
・以上。一旦おわりにします。→また何かコメントを…。
No.5
- 回答日時:
質問の意図が
1
2
3
4
5
と表示されているアイテムの3を選択した場合、
3
1
2
4
5
と表示したいのかと思いましたが、No.4さんの言われていることで
あれば、ItemsコレクションのInsertメソッドで実現できますね。
この回答への補足
danchorです。 いつもありがとうございます。
質問の仕方が悪くて申し訳ありません。
今データが
1
2
3
4
5
・
・
100
として
何もしなければ上のように現れるリストをたとえば
5
6
7
8
・
・
100
と表示させることができたとしたときに、1~4はどこに表示されるのかなぁ?と思ったわけです。
現実にはこのデータは1~100まであらかじめフォームが読み込まれたときにセットされていますが、使う人(支店)によっては自分に必要なリストが常に上位にでて欲しいという要求があるためです。
FEPのような学習機能があればいいのでしょうがそこまでの技術力がないためにお知恵を拝借したいと考えた次第です。
No.4
- 回答日時:
★私は C/C++ 言語ですが、ドロップダウンリストの順序は変更できますよ。
・ただ、Visual Basic で簡単に変更できるかは知りませんが…。
・ということで今後の参考にして下さい。
紹介:
・コンボボックスという GUI 部品を操作するには通常は、その部品に対して
いろいろな動作の指示を CB_xxxxx メッセージを送信してやり取りします。
・『CB_RESETCONTENT』は、データ項目をすべてクリア。
・『CB_GETCOUNT』は、データ項目の数を取得。
・『CB_GETCURSEL』は、選択位置を取得。
・『CB_SETCURSEL』は、選択位置を設定。
・『CB_FINDSTRING』は、文字列を検索してその位置を取得。
・『CB_SELECTSTRING』は、選択位置の文字列を取得。
・『CB_INSERTSTRING』は、指定位置に文字列を挿入。 ←※
・『CB_ADDSTRING』は、一番下に文字列を追加。
・『CB_DELETESTRING』は、指定位置の文字列を削除。
・上記以外にもいろいろと CB_xxxxx メッセージがあります。
本題:
・それで通常は『CB_ADDSTRING』メッセージで一番下に文字列を追加します。
・そしてある時『CB_INSERTSTRING』メッセージで一番上に文字列を挿入するように
指定すれば回答者 No.2 さんの『回答へのお礼』が実現できます。
・これらの操作は『PostMessage』、『SendMessage』、『SendDlgItemMessage』の
API 関数などで行います。→Visual Basic で簡単に呼び出せますか?
書式:
・『SendMessage( hWnd, CB_ADDSTRING, 0, 文字列配列 );』
・『SendMessage( hWnd, CB_INSERTSTRING, 挿入位置(0から始まる), 挿入文字列 );』
・『hWnd』がコンボボックスのウインドウ・ハンドルです。
・以上。おわり。
参考URL:http://wisdom.sakura.ne.jp/system/winapi/windata …
Oh-Orangeさん おはようございます。
ご教示ありがとうございます。
質問の仕方が悪くて済みません。
意図するところはNO.5さんへの補足に書かせていただきましたが、コンボボックスでのいろいろがよく分かり、大変参考になりました。
もっともっと色々本を読んだりして研究します。
今後ともよろしくお願いいたします。
No.3
- 回答日時:
>ついでで申し訳ないのですが、確かこのドロップダウンリストに表示させる順番も変えれたような記憶があるのですが・・・。
できましたっけ・・・
私は知らないでの、別の方法としては、セットしているアイテム自体
を並び替えるとか・・・
No.1
- 回答日時:
こんにちは。
NETは扱ったことないので何なんですが、
VBAでは表示行をコントロールするプロパティがありますので
親玉のVBにないはずはないですね。
VBAでは、ListRowsプロパティです。
それから最大何行表示できるか、ということはあまり意味のないことだと考えます。
何故なら・・・・・・・・・・・・。(^^;;;
以上です。
ありがとうございます。
この問題は#2の方の回答で解決ですが、今ひとつ欲が出て・・・・。
(すみません)
>それから最大何行表示できるか、ということはあまり意味のないことだと考えます。
私の場合、意味はあります。
現在デフォルトで表示は8行、データは12行分あるとすると毎回スクロールさせる必要がありますね。(順番を変えなければ)
でも今回みたいに可変であったり最大15とか決められればそれなりに考えることもできますので・・・。
この例で「最大10行」といわれたら意味ないですけどね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- その他(ブログ) bloggerのレイアウト→ページリストに入りきらない(テーマ:contempo light) 1 2023/05/12 11:06
- 数学 多様体について質問です。 Rを実数全体としてf:S^n={(p_1,…,p_(n+1)∈R^(n+1 2 2023/06/24 00:54
- Google Drive Google Drive (G:)の容量を、購入した容量と一致させるにはどうすればよいでしょうか? 1 2022/04/10 22:32
- アプリ uqモバイルについて再度質問させていただきます my uq mobileのデータ使用量・現在量の表示 1 2022/08/13 08:17
- 教えて!goo このアプリ不具合多くないですか?知恵袋の回答が来なさすぎて最近こっち来たんですけど、最初は「お礼」「 4 2022/09/30 02:54
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- その他(Microsoft Office) Officeの使用開始とプロダクトキーについて 1 2022/10/10 23:55
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
好きな「お肉」は?
牛肉、豚肉、鶏肉、ラム肉、クマやシカの狩猟肉……。 いろ〜んな肉が食べられるようになりましたよね。 あなたがこれまで食べて「これはうまい!」とか「なんじゃこりゃ!」と好きになったお肉を教えてください。
-
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
SQLサーバーからひっぱるACCESSコンボボックスの上限について
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA:小数点以下の数字を取得で...
-
VB.NETで DataRow()を利用して...
-
VBA リストボックス複数選択か...
-
VBA リストボックス内の値を複...
-
VBAでActiveDirectoryのユーザ...
-
データ数をカウントしたいのですが
-
like演算子内に変数って使えな...
-
郵便番号検索APIにてget Elemen...
-
JavaScriptでWindowsログオンID...
-
特定のウィンドウのキャプチャ...
-
C言語におけるコンピュータ名・...
-
EXCELのリストボックスを選択し...
-
VB .netにて現在時刻+1時間後...
-
自動的に高さ指定していないt...
-
時間を分に変換するプログラム
-
ListView 項目の選択/選択解除...
-
エクセルVBAで複数選択できるよ...
-
条件分岐
-
現在時刻をミリ秒まで取得
-
利用者側のMACアドレスを取得し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
count(*)で取得した値をJAVAの...
-
JavaScriptにおいてコンピュー...
-
Flexgridで選択行の列の値を取...
-
データ数をカウントしたいのですが
-
like演算子内に変数って使えな...
-
利用者側のMACアドレスを取得し...
-
時間を分に変換するプログラム
-
現在時刻をミリ秒まで取得
-
エクセルVBAで複数選択できるよ...
-
Spreadの選択行の取得について
-
JavaScriptでWindowsログオンID...
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
-
NTPサーバから時刻を取得する
-
VBA リストボックス内の値を複...
-
VBA Shapesの座標からセル位置...
おすすめ情報