vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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

Fortgeschrittene Programmierung
Re: ComboBox nach links verbreitert aufklappen 
Autor: mst547
Datum: 26.10.12 15:23

Naja, mit Sicherheit kann ich natürlich nicht sagen, ob es auch einfacher geht.

Ich habe vorher versucht, eine Funktion zu schreiben, die das Handle der internen Listbox abfragt und dieses dann mittels API MoveWindow verschiebt. Das hat auch funktioniert, allerdings wusste ich nicht, wo ich die Funktion aufrufen sollte, denn der Aufruf aus dem DropDown-Ereignis der Combobox funktionierte nicht. Die einzige Möglichkeit ist, diese Funktion aus einem Timer heraus aufzurufen.

Ist halt nicht so schön, weil ständig ein Timer laufen muss, aber hier die Funktion:
'combobox
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Type COMBOBOXINFO
    cbSize As Long
    rcItem As RECT
    rcButton As RECT
    stateButton As Long
    hwndCombo As Long
    hwndItem As Long
    hwndList As Long
End Type
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
  hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) _
  As Long
Private Const CB_GETCOMBOBOXINFO As Long = &H164& 'wParam: not used; lParam: 
' pointer to COMBOBOXINFO
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect _
  As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x _
As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal _
bRepaint As Long) As Long
 
Public Function SetComboboxListLeft(hCombo As Long, lngDifference As Long) As _
  Boolean
Dim cbi As COMBOBOXINFO
Dim rcList As RECT
Dim rcCombo As RECT
 
SetComboboxListLeft = False
 
cbi.cbSize = Len(cbi)
If SendMessage(hCombo, CB_GETCOMBOBOXINFO, 0&, cbi) <> 0 Then
    If GetWindowRect(cbi.hwndCombo, rcCombo) <> 0 Then
        If GetWindowRect(cbi.hwndList, rcList) <> 0 Then
            rcList.Left = rcCombo.Left + lngDifference
            If MoveWindow(cbi.hwndList, rcList.Left, rcList.Top, rcList.Right - _
              rcList.Left, rcList.Bottom - rcList.Top, -1) <> 0 Then _
              SetComboboxListLeft = True
        End If
    End If
End If
End Function
mfg mst547
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ComboBox nach links verbreitert aufklappen2.006icolor26.10.12 09:35
Re: ComboBox nach links verbreitert aufklappen1.326mst54726.10.12 13:26
Re: ComboBox nach links verbreitert aufklappen1.195icolor26.10.12 13:50
Re: ComboBox nach links verbreitert aufklappen1.289mst54726.10.12 15:23
Re: ComboBox nach links verbreitert aufklappen1.187icolor29.10.12 07:43
Re: ComboBox nach links verbreitert aufklappen1.177icolor29.10.12 07:50
Re: ComboBox nach links verbreitert aufklappen1.226Rippler29.10.12 11:36
Re: ComboBox nach links verbreitert aufklappen1.211icolor29.10.12 15:40

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