VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -