Oktober 20, 2020, 10:55:37

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Bild + Text als Elemente in Listen-/Kombifeld/Dropdown?

Begonnen von maddhin, September 29, 2020, 08:29:25

⏪ vorheriges - nächstes ⏩

maddhin

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):



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!

Xoar

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

maddhin

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... :)

maddhin

Das ist wohl "Microsoft ListView Control, version 6.0". Hier gibt es einen guten Beitrag dazu.

Sieht sehr interessant aus, allerdings wird es wohl eine ganze Weile dauern bis ich da durchblicke...

maddhin

Oktober 01, 2020, 10:24:19 #4 Letzte Bearbeitung: Oktober 01, 2020, 10:32:18 von maddhin
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).

Sie dürfen in diesem Board keine Dateianhänge sehen.

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...

Xoar

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