Hallo,
ich habe 2-3 Fälle, wo ich ganz gerne ein Bild/Grafik in einer Dropdown-Liste hätte.
Zum Beispiel bei der Auswahl des Ländercodes der Telefonnummer (tolles Projekt intl-tel-input (https://github.com/jackocnr/intl-tel-input)):
(https://camo.githubusercontent.com/31c1faf201e43006d02285df9e4adee805022e60/68747470733a2f2f7261772e6769746875622e636f6d2f6a61636b6f636e722f696e746c2d74656c2d696e7075742f6d61737465722f73637265656e73686f74732f76616e696c6c612e706e67)
Gibt es da einen echten Weg dies zu bewerkstelligen (idealerweise eingebundener Link zur Datei) oder wenigstens einen holprigen Workaround (Flaggen-Schrift)?
Sicherlich ein nicht lebensnotwendiges Feature aber nützlich und schön allemal... :)
Lieben Dank!
Moin,
mit dem normalen Listfeld geht das nicht, aber es gibt das ActiveX Listfeld, damit geht das.
Allerdings ist das umständlicher zu befüllen, glaube nur mit Recordsets per VBA.
Hab damit leider noch nicht gearbeitet
Zitat von: Xoar am September 29, 2020, 10:05:01aber es gibt das ActiveX Listfeld, damit geht das.
Das wäre genial! Gibt es ein ActiveX Listenfeld in Access? Ich habe kurz gesucht, aber nur Treffer für Excel bekommen. Wenn ich ActiveX Controls in Access öffne kommt eine endlose Reihe von Elementen. Ist da ein ActiveX Listenfeld dabei?
Befüllen sollte das kleinere Problem sein. Darin habe ich inzwischen Übung nachdem ich ein Multi-Kombifeld-Suchformular gebastelt habe... :)
Das ist wohl "Microsoft ListView Control, version 6.0". Hier (https://stackoverflow.com/questions/33912756/how-to-create-a-listbox-with-checkboxes-in-a-microsoft-access-form) gibt es einen guten Beitrag dazu.
Sieht sehr interessant aus, allerdings wird es wohl eine ganze Weile dauern bis ich da durchblicke...
Also, ich habe das jetzt hinbekommen. War aber sehr viel Arbeit, weil das wohl was ist, was Leute i.d.R. nicht mit Access machen. Code Beispiele gibt es dazu kaum in VBA und wohl auch viele Probleme mit der Referenz (hatte ich aber nicht, man muss "Microsoft Windows Common Controls 6.0" aktivieren).
CallingCodes.JPG
Auf dem Formular muss man ein ListView Objekt (ActiveX-Steuerelemente - Microsoft ListView Control v6) sowie ImageList Objekt (Microsoft ImageList Control v6) hinzufügen. Wichtig, man muss beim ListView Objekt mit rechter Maustaste - ListViewCtrl-Object - Properties - Image Lists das ImageList Objekt einbinden. Ich habe es leider nicht geschafft trotz stundenlangem Rumfummeln das programmatisch hinzubekommen.
Hier etwas Code für Syntax, etc.
Option Compare Database
Option Explicit
Private Sub Form_Load()
Dim rs As DAO.Recordset
Dim db As Database
Dim lstItem As ListItem
Dim strSQL As String
Set db = CurrentDb()
Dim ImageList1 As ImageList
With Me.ListView1
'Set ListView style
.View = lvwReport
'.View = lvwSmallIcon
'This is not supported by ListView 5
.GridLines = True
.FullRowSelect = True
'Clear Header and ListItems
'.ListItems.Clear
'.ColumnHeaders.Clear
'set imagelists
'.SmallIcons = me.ImageList1
'.ColumnHeaderIcons = me.ImageList1
End With
strSQL = "SELECT * FROM tbl_countrylist"
Set rs = db.OpenRecordset(strSQL)
rs.MoveFirst
Do Until rs.EOF
Me.ImageList1.ListImages.Add , rs!Country_ISO2, LoadPicture("D:\temp\flags\" & rs!Country_ISO2 & ".jpg")
Debug.Print "Done " & rs!Country_ISO2
'Next row
rs.MoveNext
Loop
' With Me.ImageList1.ListImages
' .Add , "AC", LoadPicture("D:\temp\flags\AC.jpg")
' .Add , "AD", LoadPicture("D:\temp\flags\AD.jpg")
' End With
'Set up column headers
With Me.ListView1.ColumnHeaders
.Add , , "Call Code", 1000, lvwColumnLeft
.Add , , "Country Name", 2000, lvwColumnLeft
End With
' 'Set up list items
' Dim List As ListItem
' Set List = Me.ListView1.ListItems.Add(, , "+49", , 1)
' List.SubItems(1) = "Germany"
' Set List = Me.ListView1.ListItems.Add(, , "+44", , 1)
' List.SubItems(1) = "UK"
' Set List = Me.ListView1.ListItems.Add(, , "+1", , 1)
' List.SubItems(1) = "US/Canada"
' Add items and subitems to list control.
Dim List As ListItem
Dim ISO2 As String
' strSQL = "SELECT * FROM tbl_countrylist"
' Set rs = db.OpenRecordset(strSQL)
rs.MoveFirst
Do Until rs.EOF
Set List = Me.ListView1.ListItems.Add()
'Debug.Print "Display " & rs!Country_ISO2
ISO2 = rs!Country_ISO2
'Debug.Print "ISO2: " & ctrycd
List.SmallIcon = ISO2
' List.SmallIcon = rs!Country_ISO2 'not working for some reason
List.Text = "+" & rs!country_callcode
List.SubItems(1) = rs!Country_Name
'Next row
rs.MoveNext
Loop
'close recordset
rs.Close
End Sub
Ich hoffe das hilft jemand, irgendwie. Ich werde jetzt versuchen das einzubinden, freue mich aber über Tipps/Ressourcen, zu dem Thema. Z.B. wie man die ImageList fertig geladen vorhalten kann, um Ladezeit zu sparen, etc. Werde mich damit weiter beschäftigen...
PS: Eigentlich wollte ich das alles ja als Drop-Down... Mal sehen, ob ich das dann auch noch bin bekomme...
Falls Du Zugriff auf die Beiträge von Access im Unternehmen hast, gibt es da einen Beitrag zu.
Überschrift zum Suchen: Das ListView-Steuerelement
Mehr kann ich leider auch nicht helfen.
Grüße