コンボボックスの表示名を任意のものに変える
コンボボックスの表示名を任意のものに変える
初めまして。お世話になります。
SetWindowText(GetDlgItem(hMainWnd,EditBox1),Moji1)
とすれば、エディットボックスにMoji1を表示できますが、
SetWindowText(GetDlgItem(hMainWnd,ComboBox1),Moji2)
としても、コンボボックスにMoji2を表示できません。
Moji2はコンボボックスのリストに定義された文字です。
マウスでクリックしてコンボボックスの内容を変更することはできますが、
プログラム上からコンボボックスの内容を変更する方法を
教えていただけないでしょうか?
SetWindowText(GetDlgItem(hMainWnd,EditBox1),Moji1)
とすれば、エディットボックスにMoji1を表示できますが、
SetWindowText(GetDlgItem(hMainWnd,ComboBox1),Moji2)
としても、コンボボックスにMoji2を表示できません。
Moji2はコンボボックスのリストに定義された文字です。
マウスでクリックしてコンボボックスの内容を変更することはできますが、
プログラム上からコンボボックスの内容を変更する方法を
教えていただけないでしょうか?
こんな感じでつかっていますが、セットしてある項目の何個目を表示するか
を指定します。表示内容を変更するには項目に文字をセットしなおしその行
を表示するようにしてやればいいと思います。
Dim hCombo As HWND ' コンボボックスのハンドルを持つ
Dim Nangyoume As Long ' 選択されている項目のインデックスを持つ
Dim s_ToName[4] As String
s_ToName[0]="1共通"
s_ToName[1]="2現場"
s_ToName[2]="3一般"
s_ToName[3]="4仮設"
s_ToName[4]="5管理"
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim cnt As Integer
' コンボボックスのハンドルを取得
hCombo=GetDlgItem(hMainWnd,ComboBox1)
' コンボボックスの項目を設定
For cnt = 0 To 4
SendMessage(hCombo,CB_ADDSTRING,0,s_ToName[cnt])
Next
' 最初の項目を選択
ComboBox_SetCurSel(hCombo,0)
End Sub
を指定します。表示内容を変更するには項目に文字をセットしなおしその行
を表示するようにしてやればいいと思います。
Dim hCombo As HWND ' コンボボックスのハンドルを持つ
Dim Nangyoume As Long ' 選択されている項目のインデックスを持つ
Dim s_ToName[4] As String
s_ToName[0]="1共通"
s_ToName[1]="2現場"
s_ToName[2]="3一般"
s_ToName[3]="4仮設"
s_ToName[4]="5管理"
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim cnt As Integer
' コンボボックスのハンドルを取得
hCombo=GetDlgItem(hMainWnd,ComboBox1)
' コンボボックスの項目を設定
For cnt = 0 To 4
SendMessage(hCombo,CB_ADDSTRING,0,s_ToName[cnt])
Next
' 最初の項目を選択
ComboBox_SetCurSel(hCombo,0)
End Sub
ご丁寧にありがとうございます
おかげさまで解決することができました。
レスしていただけなければいまも悩んでいたところです…。
ひとつだけ。このスレを参考にするひとのために。
SendMessage(hCombo,CB_SETCURSEL,番号,0)
で、任意の内容を選べます~♪
レスしていただけなければいまも悩んでいたところです…。
ひとつだけ。このスレを参考にするひとのために。
SendMessage(hCombo,CB_SETCURSEL,番号,0)
で、任意の内容を選べます~♪
Re: ご丁寧にありがとうございます
yamaさん さんが書きました:' 最初の項目を選択
ComboBox_SetCurSel(hCombo,0)
ComboBox_SetCurSel関数を書いたのは自分なので登場...。以下のような定義になります。Satoさん さんが書きました:SendMessage(hCombo,CB_SETCURSEL,番号,0)
で、任意の内容を選べます~♪
コード: 全て選択
' コンボボックスの項目を選択
Function ComboBox_SetCurSel(ByVal hWnd As HWND,ByVal nIndex As Long) As Long
ComboBox_SetCurSel=SendMessage(hWnd,CB_SETCURSEL,nIndex As WPARAM,0) As Long
End Function
Re: ご丁寧にありがとうございます
MainWnd.sbp(633) - "ComboBox_SetCurSel" 無効な識別子です
になっちゃうので、その書き方はうちではできないんですよ…。
バージョンは4.24.00です。
になっちゃうので、その書き方はうちではできないんですよ…。
バージョンは4.24.00です。
Re: ご丁寧にありがとうございます
> MainWnd.sbp(633) - "ComboBox_SetCurSel" 無効な識別子です
>
> になっちゃうので、その書き方はうちではできないんですよ…。
ですから、定義する必要があります。
以下のコードをグローバル領域に置いておけばComboBox_SetCurSel関数が使えるようになります。
>
> になっちゃうので、その書き方はうちではできないんですよ…。
ですから、定義する必要があります。
以下のコードをグローバル領域に置いておけばComboBox_SetCurSel関数が使えるようになります。
コード: 全て選択
' ComboBox_SetCurSel : コンボボックスの項目を選択
' hWnd : コンボボックスのウィンドウハンドル
' nIndex : 0から始まる選択する項目の位置
Function ComboBox_SetCurSel(ByVal hWnd As HWND,ByVal nIndex As Long) As Long
ComboBox_SetCurSel=SendMessage(hWnd,CB_SETCURSEL,nIndex As WPARAM,0) As Long
End Function
Re: ご丁寧にありがとうございます
いえ、レスをつけていただけなければわからなかったので、
すごく感謝しています。このコードは定義すれば使えるとして、
どこかで一括公開されているのでしょうか?探してみます。
あとABHelperは見ることができませんでした。
Web表示するタイプみたいですが…。
そっちも頑張ってみます。
すごく感謝しています。このコードは定義すれば使えるとして、
どこかで一括公開されているのでしょうか?探してみます。
あとABHelperは見ることができませんでした。
Web表示するタイプみたいですが…。
そっちも頑張ってみます。
Re: ご丁寧にありがとうございます
> すごく感謝しています。このコードは定義すれば使えるとして、
> どこかで一括公開されているのでしょうか?探してみます。
自分の場合、C++言語(C言語?)で定義されているマクロ関数?を参考にして書き写しているだけですので、C++言語(あるいはC言語)を参考にしてご自分で定義することもできます。
ドコかで公開っていう話になると、今さっき件の関数はABHelperにて公開しました。他にも定義した関数が有るのでまたそのうち暇なときにでも載せる予定です...。
ComboBox_***っていう関数は、山本さんが定義してないだけで、これからするのかもしれないし、ちょっと面倒なんですよね。
他にも面倒くさいことになってきてて、自分はBytePtrを要所要所、LPSTRにして定義してたんですけど、山本さんはPSTRで定義なさってるんですよね(汗)
なるべく忠実に行きたいので今まで書いたLPSTRをPSTRに変更しようと思ってて...でも暇がない。
> あとABHelperは見ることができませんでした。
これは自分がそうなったことが無くて、チンプンカンプンなんですよねぇ...(涙)
「ヘルプましん」っていうフリーソフトを使って作ってるんですけど、これが影響してるのか?してないような気がするんですけど...。
とりあえず「ヘルプましん」がバージョンアップされてたのでインストールしてコンパイル、それをアップロードしておきました。
> どこかで一括公開されているのでしょうか?探してみます。
自分の場合、C++言語(C言語?)で定義されているマクロ関数?を参考にして書き写しているだけですので、C++言語(あるいはC言語)を参考にしてご自分で定義することもできます。
ドコかで公開っていう話になると、今さっき件の関数はABHelperにて公開しました。他にも定義した関数が有るのでまたそのうち暇なときにでも載せる予定です...。
ComboBox_***っていう関数は、山本さんが定義してないだけで、これからするのかもしれないし、ちょっと面倒なんですよね。
他にも面倒くさいことになってきてて、自分はBytePtrを要所要所、LPSTRにして定義してたんですけど、山本さんはPSTRで定義なさってるんですよね(汗)
なるべく忠実に行きたいので今まで書いたLPSTRをPSTRに変更しようと思ってて...でも暇がない。
> あとABHelperは見ることができませんでした。
これは自分がそうなったことが無くて、チンプンカンプンなんですよねぇ...(涙)
「ヘルプましん」っていうフリーソフトを使って作ってるんですけど、これが影響してるのか?してないような気がするんですけど...。
とりあえず「ヘルプましん」がバージョンアップされてたのでインストールしてコンパイル、それをアップロードしておきました。
-
- 記事: 33
- 登録日時: 2006年5月22日(月) 21:01
- お住まい: 山口
- 連絡する:
ABHelper
僕も同じ現象に会いまして、おそらくXPのセキュリティ機能ではないでしょうか?
Helperを保存したあと、ファイルを右クリック>プロパティで「ブロックの解除」をクリックして下さい。
chmファイルが生で配布されているのが原因ではないでしょうか。zipを解凍すれば、中のファイルはブロックされませんし。
スレの趣旨とは違う気もするのですが、一応報告です。
Helperを保存したあと、ファイルを右クリック>プロパティで「ブロックの解除」をクリックして下さい。
chmファイルが生で配布されているのが原因ではないでしょうか。zipを解凍すれば、中のファイルはブロックされませんし。
スレの趣旨とは違う気もするのですが、一応報告です。
Re: ABHelper
> 僕も同じ現象に会いまして、おそらくXPのセキュリティ機能ではないでしょうか?
> Helperを保存したあと、ファイルを右クリック>プロパティで「ブロックの解除」をクリックして下さい。
XPなんですけど、ファイルの「プロパティ」の中に「ブロックの解除」すら無いんですけど...。
> chmファイルが生で配布されているのが原因ではないでしょうか。zipを解凍すれば、中のファイルはブロックされませんし。
よく考えたらどうして今まで圧縮せずに配布してたのか。
とりあえず今の時間帯、サーバーお休み中でアップロード出来ないので圧縮した物のアップは明日にします。
> スレの趣旨とは違う気もするのですが、一応報告です。
一応自分のサイトにも掲示板有るのでそっちで報告して貰って構わないんですけどね...。
ありがとうございました。
> Helperを保存したあと、ファイルを右クリック>プロパティで「ブロックの解除」をクリックして下さい。
XPなんですけど、ファイルの「プロパティ」の中に「ブロックの解除」すら無いんですけど...。
> chmファイルが生で配布されているのが原因ではないでしょうか。zipを解凍すれば、中のファイルはブロックされませんし。
よく考えたらどうして今まで圧縮せずに配布してたのか。
とりあえず今の時間帯、サーバーお休み中でアップロード出来ないので圧縮した物のアップは明日にします。
> スレの趣旨とは違う気もするのですが、一応報告です。
一応自分のサイトにも掲示板有るのでそっちで報告して貰って構わないんですけどね...。
ありがとうございました。