[リストへもどる]
一括表示

投稿時間:2003/01/06(Mon) 20:08
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
リスト項目数を変更する、について。
こんにちは。わからないことがあるので投稿してみました。
Win98 SecondEditionで VB6.0 SP5 を使っています。
こちらのHPの「コンボボックスのドロップダウンリスト項目数を変更する」サンプルを参考にさせて
もらっているのですが、以下の事をしたら、コンボボックスが消えてしまいました。
@フォームにFrame1を置く。
AFrame1の中にCombo1を置く。
Bサンプルと全く同じコードを書いて実行してみる。
フォーム上にコンボボックスを置いただけではこのようなことがなかったのですが、Frameの中にコン
ボボックスを置いてサンプルと同じようなことがしたいと思っています。どのように回避すればよいの
でしょうか?
どなたかご存知の方、教えてください。宜しくお願いします。

投稿時間:2003/01/06(Mon) 20:41
投稿者名:Say
Eメール:
URL :
タイトル:
Re: リスト項目数を変更する、について。
原因は座標系です。
詳しく書くとWindowsシステムの中身の話になりますので
簡単な回避方法のみ記述します。

FrameにはScaleModeがありませんから、
FrameのかわりにPictureBoxを使ってください。
さらに、ソースコード中 Me. と書かれているところが3箇所ありますから、
3箇所とも Picture1. にかきかえればOKです。

投稿時間:2003/01/06(Mon) 20:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: リスト項目数を変更する、について。
表示位置をピクセル単位換算すればいいかと思います。

'===== コンテナ上のコンボボックスの場合 =====
Private Sub Combo2_DropDown()
    'ドロップダウンリストの表示項目数を12に設定
    Call sCBDropDownListItem1(Combo2, 12)
End Sub

Private Sub sCBDropDownListItem1(CBControl As Control, Item As Long)
    Dim CBHeight  As Long
    Dim Result    As Long
    Dim Ratio     As Long
    'ピクセルあたりのtwip 数を取得
    Ratio = Screen.TwipsPerPixelX
    With CBControl
        '項目の高さを取得
        CBHeight = SendMessage(.hwnd, CB_GETITEMHEIGHT, 0&, ByVal 0&)
        '12項目表示する場合の高さを求める
        CBHeight = (.Height \ Ratio) + CBHeight * Item + 2
        'コンボボックスの高さを変更
        Result = MoveWindow(.hwnd, .Left \ Ratio, .Top \ Ratio, .Width \ Ratio, CBHeight, 1&)
    End With
End Sub

こちらの方がどちらでも使用できるからいいかも。


#丸に数字のような文字は機種依存文字です。インターネットでは使用しない方がいいかと思います。
またまた、同タイムで負けてしまった。

投稿時間:2003/01/07(Tue) 09:17
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
御礼: リスト項目数を変更する、について。
>Sayさん、花ちゃんさん
御返事ありがとうございました。教えてくださった方法でやってみようと思います。Picturteコントロ
ールを使う、というのも思いつかなかった発想なのでやってみようと思います。

>花ちゃんさん
丸に数字が入った文字が機種依存とは知りませんでした。教えてくださってありがとうございました。
これから気をつけます。

ありがとうございました!!