in einem VB6-Form (WinNT 4.0, VB 6.0 SP5) habe ich eine einfache
ComboBox. Diese zeigt standardmäßig maximal 8 Einträge gleichzeitig an.
In Access (Access 2000) gibt es die Möglichkeit, diese Anzahl per
ListRows-Eigenschaft (fast) beliebig zu ändern. In VC++ kann diese
Eigenschaft z.T. sogar grafisch per Maus zurechtgezogen werden
(wenigstens in MFC-Dialogressourcen ;-). Gibt es in VB6 auch diese
Möglichkeit? Ein Beispiel per API habe ich zwar gefunden - ca. 30
Codezeilen :-( - geht es wirklich nicht einfacher?
Hoffend auf gute Tips,
Gruß - Uwe.
> Ein Beispiel per API habe ich zwar gefunden - ca. 30
> Codezeilen :-( - geht es wirklich nicht einfacher?
Wenn es nur um eine ComboBox geht leider nein.
Wenn du dies öfter brauchst wurde ich ein Usercontrol
erstellen.
CU Andre
Was aber sicher erheblich mehr 30 Zeilen an Aufwand erfordern wird - vor
allem, wenn der Ausklappteil sich wie das Original verhalten soll und
ebenso das "Mutter"-Form nicht deaktiviert, aber trotzdem über diesem steht
und dessen Ränder überragen kann...
Viele Grüße
Harald M. Genauck
ABOUT Visual Basic - das Webmagazin
http://www.aboutvb.de
> Was aber sicher erheblich mehr 30 Zeilen an Aufwand erfordern wird - vor
> allem, wenn der Ausklappteil sich wie das Original verhalten soll und
> ebenso das "Mutter"-Form nicht deaktiviert, aber trotzdem über diesem
steht
> und dessen Ränder überragen kann...
Jenachdem wie oft er diese Sache braucht wäre es meiner meinung nach
trotzdem eine gute Alternative.
CU Andre
>>Was aber sicher erheblich mehr 30 Zeilen an Aufwand erfordern wird - vor
>>allem, wenn der Ausklappteil sich wie das Original verhalten soll und
>>ebenso das "Mutter"-Form nicht deaktiviert, aber trotzdem über diesem
>>
>
> Jenachdem wie oft er diese Sache braucht wäre es meiner meinung nach
> trotzdem eine gute Alternative.
vielen Dank für Eure Antworten. Eigentlich brauche ich dieses Teil nur
in einer einzigen Anwendung, (ein kleines VB-Form, mit dem ich
Funktionen in einer in VC++ programmierten DLL teste/anwende), daher
erscheint mir der Aufwand mit dem Usercontrol dann doch zu gewaltig. (da
mir schon 30 Zeilen zu viel sind ;-)
Weitere Alternativen wären das Erstellen des Forms in VC++ oder Access,
aber je länger ich darüber nachdenke, um so sympathischer erscheinen mir
die "nur" 30 Zeilen. Diese könnte ich sogar mit dem Anweisungsseparator
(:) in eine Zeile schreiben. ;-)
Einen schönen Tag noch,
Gruß - Uwe.
da inzwischen schon Bedarf angemeldet wurde:
Die ca. 30 Codezeilen habe ich unter folgender Adresse gefunden:
http://www15.brinkster.com/vbnotebook/VBFunction.asp?function=14 (Link
in eine Zeile).
Woher ich diesen Link habe, weiß ich leider nicht mehr.
HTH,
Gruß - Uwe.
Hier der Original-Code (Copyright 2000, J. Frank Carr):
[Zitat]
Enlarge Dropdown area
This routine allows you to make the dropdown area of a combo box larger.
First, in General|Declarations, include the following....
'
' Types for API Calls
'
Private Type POINTAPI x As Long
y As Long
End Type
Private Type RECT Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'
' API Calls
'
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function ScreenToClient Lib "user32" _
(ByVal hwnd As Long, lpPoint As
POINTAPI) 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
..and now the routine....
Public Sub SetComboListAreaSize(frmHost As Form, cboCombo As ComboBox)
Dim pt As POINTAPI
Dim rec As RECT
Dim iItemWidth As Integer
Dim iItemHeight As Integer
Dim iOldScaleMode As Integer
Dim nRet As Long
iOldScaleMode = frmHost.ScaleMode
frmHost.ScaleMode = vbPixels
iItemWidth = cboCombo.Width
iItemHeight = frmHost.ScaleHeight - cboCombo.Top - 5
frmHost.ScaleMode = iOldScaleMode
nRet = GetWindowRect(cboCombo.hwnd, rec)
pt.x = rec.Left
pt.y = rec.Top
nRet = ScreenToClient(frmHost.hwnd, pt)
nRet = MoveWindow(cboCombo.hwnd, pt.x, pt.y, iItemWidth,
iItemHeight, 1)
End Sub
Last Updated On: 10/12/2000
[\Zitat]
recht herzlichen Dank.
--
Gruß,
Norbert Schiller
[mailto:nsch...@freenet.de]