ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 16.08.2002

Diese Seite wurde zuletzt aktualisiert am 16.08.2002
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Icons im Raster

Zurück...


Anzeige

(-hg) mailto:hg_lvwarrangeicons@aboutvb.de

Die Abstände der Icons in einem ListView-Steuerelement in der Icons-Ansicht (Eigenschaft View gleich lvwIcon oder lvwSmallIcon) werden automatisch von den Einstellungen in den Bildschirmeigenschaften festgelegt. Sie können zwar die Icons über deren Left- und Top-Eigenschaften beliebig positionieren, wenn Sie die Eigenschaft Arrange des ListViews auf lvwNone setzen. Doch sobald Sie die Icons horizontal oder vertikal im Raster ausrichten wollen (etwa, weil der Anwender die Icons verschoben hat, oder nach einer Größenänderung des ListViews), indem Sie Arrange auf lvwAutoLeft oder lvwAutoTop setzen, kommen wieder die Systemeinstellungen zur Geltung.

Sie können jedoch auf die Anordnung per Arrange-Eigenschaft verzichten. Lassen Sie diese auf lvwNone eingestellt, können Sie ja die Icons über die Left- und Top-Eigenschaft frei positionieren - also auch in einem beliebigen, von Ihnen vorgegebenen Raster.

Der folgenden Prozedur LvwArrangeIcons übergeben Sie das betreffende ListView-Steuerelement, eine der ListArrangeConstants (lvwNone oder ungültige Werte bleiben wirkungslos, die beiden anderen, lvwAutoLeft und lvwAutoTop entsprechen dem Original), die gewünschte Spaltenbreite und optional die gewünschte Zeilenhöhe (fehlt diese, wird der Wert der Spaltenbreite auch für die Zeilenhöhe übernommen), beide in TWIPS.

Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Declare Function GetClientRect Lib "user32" _
 (ByVal hwnd As Long, lpRect As RECT) As Long

Public Sub LvwArrangeIcons(ListView As ListView, _
 ByVal Arrange As ListArrangeConstants, ByVal ColWidth As Single, _
 Optional ByVal RowHeight As Single)

  Dim rc As Long
  Dim nRect As RECT
  Dim nRowsCols As Long
  Dim l As Long
  Dim nLeftTop As Single
  
  Select Case Arrange
    Case lvwAutoLeft, lvwAutoTop
    Case Else
      Exit Sub
  End Select
  With ListView
    Select Case .View
      Case lvwIcon, lvwSmallIcon
      Case Else
        Exit Sub
    End Select
    If RowHeight = 0 Then
      RowHeight = ColWidth
    End If
    Select Case True
      Case ColWidth = 0
        Err.Raise 5
      Case RowHeight = 0
        Err.Raise 5
    End Select
    .Arrange = lvwNone
    GetClientRect ListView.hwnd, nRect
    Select Case Arrange
      Case lvwAutoLeft
        nRowsCols = ((nRect.Bottom * Screen.TwipsPerPixelY) \ RowHeight) - 1
        With .ListItems
          Do
            For rc = 0 To nRowsCols
              l = l + 1
              If l > .Count Then
                Exit Do
              End If
              With .Item(l)
                .Left = nLeftTop
                .Top = rc * RowHeight
              End With
            Next 'r
            nLeftTop = nLeftTop + ColWidth
          Loop
        End With
      Case lvwAutoTop
        nRowsCols = ((nRect.Right * Screen.TwipsPerPixelY) \ ColWidth) - 1
        With .ListItems
          Do
            For rc = 0 To nRowsCols
              l = l + 1
              If l > .Count Then
                Exit Do
              End If
              With .Item(l)
                .Top = nLeftTop
                .Left = rc * ColWidth
              End With
            Next 'r
            nLeftTop = nLeftTop + RowHeight
          Loop
        End With
    End Select
  End With
End Sub

Beispiel-Projekt und Modul modLvwArrangeIcons (lvwarrangeicons.zip - ca. 4,1 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer