ListView feste Spalten

MasterEvil

Erfahrenes Mitglied
Kann mir einer sagen wie man bei einem ListView die Spalten fest macht, so das der Anwender die Größe nichtmehr verändern kann?

Schonmal Danke im Vorraus :)
 
Edit: ListView feste Spalten

Edit:
Habe mich vertan, das bewirkt dass die Spalten nich anders angeordnet werden können.

Hallo, das geht mit:
Code:
ListView1.AllowColumnReorder = False
 
Zuletzt bearbeitet:
Ja, das geht leider nicht.
Hab auch schon alle sichtbaren Funktionen durchprobiert aber kein Erfolg.

Hab übrigens das wichtigste vergessen, es handelt sich um VB6.
Mir würde auch ein alternatives ListView reichen welches das beherrscht.

Mit OLE-Drag-Mode auf automatisch klappt es ja, aber das gibt einen unschönen grafischen Effekt :p

mfg
 
ich hab was gefunden, ist zwar etwas komplizierter aber tut wenigstens das was es soll:

ich habs aus nem anderen Forum und schreibs hier nochmal falls nochmal einer das selbe Problem hat:

Nachdem man im Form_Load das ListView aufgebaut hat erstellt man SubClass von dem ListView
Code:
Private Sub Form_Load()
   With Listview1
      .View = lvwReport
      .ColumnHeaders.Add 1, , "Col1"
      .ColumnHeaders.Add 2, , "Col2"
      .ColumnHeaders.Add 3, , "Col3"
   End With
   StartSubClass ListView1.hWnd
End Sub

Dann benötigt man noch das folgende Modul dass das Ziehen dann verhindert:
Code:
Private Const HDN_FIRST = (-300)
Private Const HDN_BEGINTRACKA = (HDN_FIRST - 6)
Private Const HDN_BEGINTRACKW = (HDN_FIRST - 26)
Private Const WM_NOTIFY = &H4E
Private Const GWL_WNDPROC = (-4)

'ACHTUNG: Abgewandelte Notity-Struktur
Private Type MyNMHDR
   hwndFrom As Long
   idFrom As Long
   code As Long
   iItem As Long
End Type

Private Declare Function CallWindowProc Lib "user32" Alias _
   "CallWindowProcA" ( _
   Byval lpPrevWndFunc As Long, _
   Byval hWnd As Long, _
   Byval msg As Long, _
   Byval wParam As Long, _
   Byval lParam As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias _
   "SetWindowLongA" ( _
   Byval hWnd As Long, _
   Byval nIndex As Long, _
   Byval lParam As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias _
   "RtlMoveMemory" ( _
   ByRef pDest As Any, _
   ByRef pSrc As Any, _
   Byval ByteLen As Long)

Private hOldWndProc As Long

Sub StartSubClass(Byval hWnd As Long)
   hOldWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubClassLV)
End Sub

Sub EndSubClass(Byval hWnd As Long)
  SetWindowLong hWnd, GWL_WNDPROC, hOLdWndProc
End Sub

Function SubClassLV(Byval hWnd As Long, Byval message As Long, _
                    Byval wParam As Long, Byval lParam As Long) As Long
   Dim nm As MyNMHDR

   If message = WM_NOTIFY Then
      CopyMemory Byval nm, Byval lParam, Len(nm)
      If nm.code = HDN_BEGINTRACKA Or nm.code = HDN_BEGINTRACKW Then
          SubClassLV = True
          Exit Function
      End If
   End If

   SubClassLV = CallWindowProc(hOldWndProc, hWnd, message, wParam, Byval lParam)
End Function

Der Cursor ist zwar immernoch da aber ziehen geht nicht mehr :)
 
Zurück