vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: HitTest ListView 
Autor: Tolwyn
Datum: 05.12.01 13:39

Hi,

ein Buch... hmmm eigentlich ne gute Idee

Zu dem Scroll:
(allerdings nicht ganz API frei)
' API Deklarationen
Private Const WM_HSCROLL = &H114
Private Const WM_VSCROLL = &H115
 
Private Const SB_LINELEFT = 0
Private Const SB_LINERIGHT = 1
Private Const SB_LINEUP = 0
Private Const SB_LINEDOWN = 1
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, _
     ByVal wMsg As Long, _
     ByVal wParam As Long, _
     lParam As Any) As Long
 
Private Sub lsvListView_OLEDragOver(Data As MSComctlLib.DataObject, _
    Effect As Long, Button As Integer, Shift As Integer, _
    x As Single, y As Single, state As Integer)
  Dim oItem     As ListItem
 
  Debug.Print "OLEDragOver x: " & x & " y: " & y
 
  If lsvListView.View = lvwReport Then
    ' In der Reportansicht mit EnsureVisible den ScrollEffekt erzeugen
    Set oItem = lsvListView.HitTest(x, y)
    If Not oItem Is Nothing Then
      Debug.Print "OLEDragOver " & oItem.Index
      oItem.EnsureVisible
   End If
  Else
    ' Ansonsten das ganze einfach manuell machen!
    If y > lsvListView.Height - 200 Then
      ' Scroll nach unten
      Debug.Print "ScrollDown"
      Call SendMessage(lsvListView.hwnd, WM_VSCROLL, SB_LINEDOWN, ByVal 0&)
    ElseIf y < 200 Then
      ' Scroll nach oben
      Debug.Print "ScrollUp"
      Call SendMessage(lsvListView.hwnd, WM_VSCROLL, SB_LINEUP, ByVal 0&)
    ElseIf x > lsvListView.Width - 200 Then
      Debug.Print "ScrollRight"
      Call SendMessage(lsvListView.hwnd, WM_HSCROLL, SB_LINERIGHT, ByVal 0&)
    ElseIf x < 200 Then
      Debug.Print "ScrollRight"
      Call SendMessage(lsvListView.hwnd, WM_HSCROLL, SB_LINELEFT, ByVal 0&)
    End If
  End If
End Sub
Mit der DragOver Methode scrollst Du überall hin....-)

Die Sache mit dem Visible Idem Count ist beim ListView sone Sache... Hier Ist zumindest eine Funktion die in diese Richtung geht.
' SendMessage API (sieheOben)
'Private Const LVM_FIRST As Long = &H1000
'Private Const LVM_GETCOUNTPERPAGE As Long = (LVM_FIRST + 40)
 
Public Function LSV_GetVisibleCount(oLSV As MSComctlLib.ListView) As Long
  '--------------------------------------------------
  ' Gibt die maximal mögliche Anzahl der sichtbaren Items in dem
  ' ListView zurück. Allerdings wird im View Icon & SmallIcon
  ' Immer die anzahl aller ListItems zurückgegeben. Im View
  ' List & Report wird dagegen die maximale mögliche Anzahl an Items
  ' auf einer 'Seite' zurückgegeben.
  LSV_GetVisibleCount = SendMessage(oLSV.hwnd, _
                                        LVM_GETCOUNTPERPAGE, _
                                        0&, _
                                        ByVal 0&)
  '--------------------------------------------------
End Function
Grüße aus der Wüste
Tolwyn
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
HitTest ListView75Stift03.12.01 00:17
Re: HitTest ListView61Tolwyn03.12.01 14:47
Re: HitTest ListView87Stift03.12.01 22:55
Re: HitTest ListView58Tolwyn04.12.01 15:54
Re: HitTest ListView48Stift04.12.01 19:25
Re: HitTest ListView47Tolwyn05.12.01 13:39
Re: HitTest ListView43Stift05.12.01 21:33
Re: HitTest ListView44Tolwyn07.12.01 12:14

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel