投稿日 | : 2003/12/08(Mon) 14:36 |
投稿者 | : AK |
Eメール | : kuroki@desu.ne.jp |
URL | : |
タイトル | : Re: MsFlexGridの列幅変更 |
> MsFlexGridでたとえば、列に行っているデータの最大幅を列のWidthに設定する方法を
> ご存知の方ご教授ください。
> 例えば、1列目で
> 1行目に「りんご」
> 2行目に「パイナップル」
> 3行目に「みかん」
> と入っていたら、2行目の「パイナップル」が一番長いデータなので、
> 2行目の幅を1列目のWidthに設定する。
こんにちわ。
一番長いデータを調べても駄目です。
フォントによって文字の幅が変わりますので
文字列自体の幅を調べる必要があります。
下記にサンプルを記述しておきます。
では。
'(*.frm) フォームにMSFlexGridとCommandButtonを追加してください。
Option Explicit
Private Sub Form_Load()
Dim ii As Long
'グリッド初期設定
With MSFlexGrid1
.Font.Name = "MS Pゴシック"
.Font.Size = 12
.Top = 15
.Left = 5
.Height = 4000
.Width = 4000
.Rows = 27
.Cols = 2
.ColWidth(0) = 300
.ColWidth(1) = 1000
'データ作成
For ii = 1 To 26
.Row = ii
.Col = 1
.Text = String(10, Chr(64 + ii))
Next ii
End With
'ボタン初期設定
With Command1
Set .Font = MSFlexGrid1.Font
.Caption = "幅変更"
.Height = 400
.Width = 1000
.Top = 4030
.Left = 15
End With
'フォーム初期設定
With Me
.BorderStyle = 1
'グリッドと同じフォントを設定する
Set .Font = MSFlexGrid1.Font
.Height = 4845
.Width = 4155
End With
End Sub
Private Sub Command1_Click()
Dim ii As Long
Dim lTmp As Long
lTmp = 0
With MSFlexGrid1
For ii = 1 To .Rows - 1
.Row = ii
.Col = 1
'一番幅の広い文字列を調べ幅を取得する
If lTmp < Me.TextWidth(.Text) Then
lTmp = Me.TextWidth(.Text)
End If
Next ii
'幅を設定する(余白を考慮して100プラスする)
.ColWidth(1) = lTmp + 100
End With
End Sub