空白のリストボックスを作成し、別ページで選択した内容をそのリストボックスに登録する仕組みを作ろうとしています。

普通に
****************
<select size=~>
<option></option>

</select>
****************
とすると、リストボックスの幅が1文字分ぐらいのサイズになってしまいます(内容を登録すれば、最大文字長内容に対応したサイズになります)。
<option>タグの中に空白を埋めるという方法もあるのですが、他の処理も修正しないといけなくなるので、最後の奥の手としか使いたくありません。

<option>タグ内、もしくはjavascript内で設定する方法ってあるんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

-> 「ひとまず」というのは、設定ピクセル以上の長さの内容が登録された場合、


-> 表示が見切れてしまう問題が発生するからです。
-> でも、リストボックスにスクロールバーはつけられませんよね・・・?

そうでした。

[ リストボックスオブジェクト ].style.pixelWidth=[ 整数値 ]

で、JavaScriptからサイズ変更できます。
ですが、登録された内容( 文字列の長さ )を如何にしてピクセル値に変換する
かが、悩みどころだと思います。
(プロポーショナルフォントだと文字によっては同じ文字数でも表示幅は違って
きますから・・・)
    • good
    • 0
この回答へのお礼

やっぱりないですか…。
(少しだけ「実はあるんですよ」という解答を期待してたんですけど)

該当ページはフレーム分割の都合で縦長になっていて、
文字長ごとにリストボックスの大きさを変えると、ページ全体の幅も変わっていました(他のテキストボックスの表示なんかもバタバタ変わって少し見苦しかった)。

だから、ひょっとしたら固定してしまった方がいいのかもしれません。

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

お礼日時:2001/02/01 17:09

スタイルシートを使って指定するしか無いように思います。


例えば次の様にすると、幅が 100ピクセルになります。

<select style="width:100" size=~>
<option></option>
・・・
</select>

この回答への補足

ありがとうございます。ひとまず問題解決です。
「ひとまず」というのは、設定ピクセル以上の長さの内容が登録された場合、表示が見切れてしまう問題が発生するからです。

でも、リストボックスにスクロールバーはつけられませんよね…?

補足日時:2001/02/01 15:28
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel VBAで、B列の幅を、既存のグラフの幅に設定したい。

VBA初心者です。
ワークシート上にグラフを作成した後(例えば「グラフ1」とします)、B列の幅を作成したグラフの幅と同じに設定するには、どのように記述すればよいのしょうか?

Columns("B").ColumnWidth = ActiveSheet.Shapes("グラフ1").Width

Columns("B").Width = ActiveSheet.Shapes("グラフ1").Width

Columns("B").ColumnWidth = ActiveSheet.Shapes("グラフ1").ColumnWidth

どれもうまくいきませんでした。よろしくお願いします。

Aベストアンサー

こんにちは。Wendy02です。

>ColumnWidthのヘルプによると
>解説
>・
>とのことです。

その書き方は、かなり手厳しく感じました。ヘルプで調べてから回答を書きなさい、ということですね。私の書き方がまずかったようですね。失礼しました。

 ただ、そのヘルプの内容は、若干、意味が曖昧です。仮に等幅フォントであっても、本当に、1文字の積み重ねが、列幅になるとお思いになっているのでしたら、それは違います。セル幅は、PIXEL値(Long型)に丸められて、それを逆算して、例えば「8.38」 という数字が出てきているのであって、決して、1文字のフォントの長さが、列幅にそのまま反映しているわけではありません。ロジックでいうと、「AはBによって作られているが、BはAには等しからず」ということになりますね。

変換率の出し方は、以下のようになりますが、Constの定数はやめ、ALPHAを変数にして、以下のようにすればよいはずです。

Dim Alpha As Double
Alpha = ActiveSheet.Cells(256).Width / ActiveSheet.StandardWidth

しょせん、理論値では不可能(だと思う)ですから、影響のないセルに対して、実測値を元に、変換値を出したにすぎませんが。

これで、問題なくできるはずです。

こんにちは。Wendy02です。

>ColumnWidthのヘルプによると
>解説
>・
>とのことです。

その書き方は、かなり手厳しく感じました。ヘルプで調べてから回答を書きなさい、ということですね。私の書き方がまずかったようですね。失礼しました。

 ただ、そのヘルプの内容は、若干、意味が曖昧です。仮に等幅フォントであっても、本当に、1文字の積み重ねが、列幅になるとお思いになっているのでしたら、それは違います。セル幅は、PIXEL値(Long型)に丸められて、それを逆算して、例えば「8.38」 ...続きを読む

Q