> hWnd = ( HWND* )GetDlgItem(IDC_COMBO2);
> AD.ComboSet(TableName, hWnd);
CComboBox *pCombo = ( CComboBox* )this->GetDlgItem( IDC_COMBO2 );
AD.ComboSet(TableName, pCombo);
>bool CAdoOperation::ComboSet(const CString TableName, HWND* hWnd)
bool CAdoOperation::ComboSet( const CString TableName, CComboBox* pCombo )
> pField = pFields->Item[ 0L ];
だと、社員番号ですが?
> pCombo = (CComboBox *)GetDlgItem(*hWnd, IDC_COMBO2);
削除
>if ( m_pConnect ) m_pConnect.Release();
ここでReleaseするのは不味い気もする。
(Openでm_pConnectをCreateInstanceしているので。)
というか、もう最初のコードは全てやめてしまったほうがいい気がしますが。
(中途半端に私のやつと混ぜてもうまいこと組み合わせれないでしょう)
アドバイスありがとうございます。
int a = pCombo->AddString(value);
でvalueには 田中 と入って 戻り値のエラー確認(CB_ERRとCB_ERRSPACE)
をしても正常に終了しているのですが、コンボボックスには表示されないです。
もうちょっとがんばりたいのでよろしくお願い致します。
> コンボボックスには表示されないです。
とは?
コンボボックスのリストに追加するのですよね?
コンボボックスのテキストに表示させたいのでしょうか?(その場合どの値を入れるの?)
コンボボックスのリストに表示です。
もしかして、私の伝え方が悪いせいで多大な迷惑をかけてるかも
と思い、環境をもう一度書きます。
■動作環境 :WindowsXP
■開発環境 :Visual C++6.0(ダイアログベース)
■コンボボックス作成方法:ダイアログで作成(作成後は何もいじっていない)
■開発環境 :Visual C++6.0
■データベース :Access2000(ADO接続)
私の
> コンボボックスには表示されないです。
発言は画面イメージのようにコンボボックスに表示されないという事です。
画面イメージ
ダイアログ名 :社員
コンボボックス:社員名(田中・佐藤・井上)と表示
※画面は田中を選択している時の例
|----------------------------|
|社員名 |
|----------------------------|
| |
| 社員 |
| |----------------| |
| |田中 | |
| |----------------| |
| |田中 | |
| |佐藤 | |
| |井上 | |
| |________________| |
|____________________________|
色々ご迷惑をかけてしまい申し訳ありません。
>valueには 田中 と入って
はどのように確認されましたか?デバッガ?
VC++6.0でF10を押下してステップ実行をして値の確認をしました。
_bstr_t value( pField->Value.bstrVal );
このステップを過ぎると
シンボル名 値
value {田中 (1)}
となっています。
pCombo->AddString(value);
の value をクイックウオッチで確認しても{田中 (1)}となっています。
コンボボックスのリストには何も表示されないので下記の画面状況の状態です。
画面状況
|----------------------------|
|社員名 |
|----------------------------|
| |
| 社員 |
| |----------------| |
| | ▼| |
| |----------------| |
| |
| |
| |
| |
|____________________________|
▼を押しても出ないですか?
もしかして、リソースでリストの幅を小さくしすぎているとか。
ためしに、今までのコード関係なく、InitDialogに
CComboBox* pCombo = ( CComboBox* )this->GetDlgItem( IDC_COMBO2 );
pCombo->AddString( _T( TEST ) );
として、表示されるか確認してみてください。
あ、ひょっとしたら、コンボボックスのタイプの違いなのかも。
一般的にコンボボックスといえば「ドロップダウン」になるのですが、
> 2006/09/14(木) 12:57:22
のような表示をしたいというならば、「標準」にしないとだめです。
この設定は、リソースエディタで、コンボボックスを選択し、右クリックからプロパテ
ィを選択して、スタイルタブのタイプで変更できます。
BOOL CAppointmentDlg::OnInitDialog()
{
// TODO: 特別な初期化を行う時はこの場所に追加してください。
CComboBox* pCombo = ( CComboBox* )this->GetDlgItem( IDC_COMBO2 );
pCombo->AddString( _T( TEST ) );
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
で試しましたがやはり表示されません。
コンボボックスの幅ですが、ダイアログで作成しているので幅はデフォルトのまま
です。
絵の描き方が下手で済みません。
コンボボックスのスタイルのタイプはドロップダウン リストでやります。
コンボボックスのプロパティは何もいじっていません。
再度
>▼を押しても出ないですか?
CComboBox* pCombo = ( CComboBox* )this->GetDlgItem( IDC_COMBO2 );
pCombo->AddString( _T( TEST ) );
pCombo->SetCurSel( 0 );
とすると、テキストボックスに TEST という文字は設定されますか?
>CComboBox* pCombo = ( CComboBox* )this->GetDlgItem( IDC_COMBO2 );
> pCombo->AddString( _T( TEST ) );
> pCombo->SetCurSel( 0 );
>とすると、テキストボックスに TEST という文字は設定されますか?
設定されました。
>もしかして、リソースでリストの幅を小さくしすぎているとか。
これ間違えました。高さのことです。
リソースエディタ上で、コンボボックスを選択して▼部分をクリックする
(最初から▼部分をクリックしても同じ)と
ドロップダウンリストの部分を含めた大きさを設定できます。
その大きさが、コンボボックスのテキストボックスの大きさと同じになっていないです
か?
□::::::::□::::::::□
::┌─────┬─┐::
::│ │▼│::
::└─────┴─┘::
□ □
:: ::
:: ::
:: ::
□::::::::■::::::::□
上のように表示される大きさ。
Blueさんありがとうございます。
2006/09/14(木) 15:02:42 のアドバイスでコンボボックスの表示が
できました。
まだ聞きたい事があるのですが
お題の『Access のデータを VCのコンボボックスに表示』の件は解決したので
解決マークをつけます。ありがとうございます。
またよろしくお願い致します。