VisualBasic6.0 の ListView (mscomctl.ocx) で、列ヘッダがクリックされたときに、列ヘッダが凹まないようにしたいのですが、 API をご存知の方がいらっしゃいましたら、教えてください。初心者なので、できればコードつきで。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2008/04/27 12:35:15
  • 終了:2008/04/29 11:06:01

ベストアンサー

id:mj99 No.1

mj99回答回数138ベストアンサー獲得回数382008/04/28 13:32:08

ポイント100pt

コモンコントロールのウィンドウスタイル

SetWindowLongでスタイルをいじります。

Option Explicit

Private Const GWL_STYLE As Long = -16
Private Const LVS_NOSORTHEADER = &H8000&
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub Form_Load()
    
    ' 列見出しを押せなくする
    Dim dwStyle As Long
    dwStyle = GetWindowLong(ListView1.hwnd, GWL_STYLE)      ' リストビューの現在のスタイルを取得
    dwStyle = dwStyle + LVS_NOSORTHEADER                    ' ソートボタン無しスタイルを追加
    Call SetWindowLong(ListView1.hwnd, GWL_STYLE, dwStyle)  ' リストビューにスタイルを設定
    
    ' 適当なテストデータ
    Dim obItem As ListItem
    
    ListView1.View = lvwReport
    
    ListView1.ColumnHeaders.Add , , "1列", 500
    ListView1.ColumnHeaders.Add , , "2列", 500
    ListView1.ColumnHeaders.Add , , "3列", 500
    
    Set obItem = ListView1.ListItems.Add()
    obItem.Text = "1-1"
    obItem.SubItems(1) = "1-2"
    obItem.SubItems(2) = "1-3"
    Set obItem = ListView1.ListItems.Add()
    obItem.Text = "2-1"
    obItem.SubItems(1) = "2-2"
    obItem.SubItems(2) = "2-3"
    Set obItem = ListView1.ListItems.Add()
    obItem.Text = "3-1"
    obItem.SubItems(1) = "3-2"
    obItem.SubItems(2) = "3-3"
    
End Sub
id:lph

おおお、完璧です。

mj99 様、大変ありがとうございました!!!

2008/04/29 11:04:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません