sql >> Database teknologi >  >> RDS >> Access

Tildeling af billeder til trævisningsknuder

Introduktion.

I sidste uge har vi oprettet Access Project Menu på TreeView Control, og jeg håber, du var i stand til at oprette den på egen hånd og køre den i din version af Microsoft Access. Der er en demodatabase, oprettet under Access 2007 og vedhæftet følgende indlæg til download. Linket til denne artikel er givet nedenfor:

  • Oprettelse af adgangsmenu med trævisningskontrol

Du kan downloade databasen, så du kan tilføje den nye VBA-kode, der vedrører ovenstående emne, og prøve den i den samme database.

Dette er en fortsættelse af den tidligere artikel, og vi har brug for det samme Demo Access Menu Project for at tildele billeder til noder og lære.

MS-Office-versionsproblemer til TreeView Control.

Hvis du havde problemer med at køre demodatabasen i din version af Microsoft Access, kan du henvise til følgende link for nogle korrigerende handlinger, som kan være nyttige til at løse dit problem:

  • LØST MSCOMCTL.OCX DOWNLOAD REGISTER 64 BIT WINDOWS

Eksempel på demobillede.

Når vi fuldfører vores Access Project Menu, med Billeder på noder vil se ud som billedet nedenfor:

Eventuelt kan vi tildele to billeder på hver node. Et billede vises i normal tilstand, og et andet vises, når noden modtager et klik.

Her har vi tildelt noden på rodniveau med Lukket mappe Billede til normal visning og Open-Folder-lignende Billedet vises, når noden modtager klik.

På samme måde har børneknuderne et pilehovedbillede, der vender mod venstre side i normal visning, og pilehovedbilledet, der peger til højre, vises, når noden er valgt.

Du kan bruge det samme billede til begge (normalt og til klikhændelse), så det samme billede forbliver uden ændringer i begge tilfælde. Hvis du bruger en af ​​disse to parametre, f.eks. brug kun normalvisningsparameteren og udelad den anden, så vil nodeklikket ikke vise noget billede.

Ideelle billedstørrelser til noder.

Billedformatet kan være af enhver almindelig billedtype, såsom .bmp , .jpg , .jpeg , .ico , .tiff osv. Du kan finde masser af ikonbilleder ved at søge på Google. Den ideelle billedstørrelse, som ser godt ud på noden, er 16 x 16 pixels . ImageList Kontrol har forudindstillede billedstørrelsesværdier som 16 x 16 , 32 x 32 , 48 x 48 pixels og Brugerdefineret størrelse Muligheder at vælge imellem.

Højere billedstørrelsesindstillinger 32 x 32 eller 48 x 48 pixel viser større billeder og optager mere plads på trævisningsskærmen.

Knudegrafik med forskellige billedstørrelser.

Følgende eksempelbillede nedenfor viser 32 x 32 pixel størrelsesikon:

TreeView-kontrol med nodebilledstørrelse 48 x 48 pixel :

Hvis du foretrækker at bruge Tilpasset Billedindstilling, så vil den faktiske billedstørrelse blive vist uden ændringer.

Overvejelser om billedkvalitet og størrelse.

Vi har brugt billedstørrelse 16 x 16 i det første eksempelbillede ovenfor. Hvis vi uploader en tilpasset billedstørrelse, større end 48 x 48, f.eks. 512 x 512 Pixels eller mere, og brug indstillingen 16 x 16 det reducerer størrelsen til den angivne opløsning, men billedets klarhed vil blive reduceret eller forvrænget.

Den bedste tilgang er at finde små billeder med god kvalitet, som kan passe ind i opløsningen på 16 x 16 pixels (lærredstørrelse). Det fungerer med både 16 x 16 pixels eller brugerdefinerede indstillinger, uden billedkvalitet.

Du kan eksperimentere med forskellige billedtyper, størrelser og kvalitet, prøvekørsler før færdiggørelse. Du kan bruge MS-Paint eller hvilke billedredigeringsprogrammer du har og oprette/importere og redigere billeder efter din smag.

Før du fortsætter, skal du oprette fire eller flere små billeder, og gem dem i databasemappen. Upload dem til ImageList-kontrolelementet og prøv dem på trævisningskontrollen ved at ændre Nodes Add()-metodens sidste to parametre.

Du kan downloade demodatabasen:ProjectMenu.accdb , fra den tidligere artikelside.

Forbered dig på prøvekørslen.

  1. Åbn ProjectMenu.accdb database.

  2. Lav en kopi af formularen frmMenu og navngiv den som frmMenu2 og gem den til senere brug.

  3. Åbn frmMenu i designvisning.

  4. Vælg ActiveX Controls Valgmulighed fra Kontrol Knapgruppe, og find filen Microsoft ImageList Control og klik på OK for at indsætte en ImageList styre, træk og placer det hvor som helst i det tomme område på formularen.

    Formular med ImageList Kontrol fremhævet i Design View er givet nedenfor til reference:

  5. Vis dens egenskabsark, og skift navnet Ejendomsværdi til ImageList0 .

  6. Højreklik på ImageList Control og fremhæv ImageListCtrl-objektet Indstilling i den viste menu og vælg Egenskaber for at vise kontrolens billedindstillinger Egenskabsark.

  7. Vælg 16 x 16 billedstørrelse alternativknap på Generelt Tab, der indikerer, at vi har brug for den mindste af de tre billedstørrelser til noden. Indstillingen her træder i kraft på alle billeder, vi føjer til ImageList Control.

  8. Klik på Anvend Kommandoknappen og derefter OK knappen for at lukke ejendomsarket.

Først skal vi tilføje nødvendige billeder til ImageList Kontroller, før vi kan bruge dem i Tree View Control.

Billedindlæsningsmetoder.

Der er en nem måde og en svær måde at Tilføj på Billeder til ImageList Control. Den nemme måde fungerer uden VBA-kode, og den anden metode kræver VBA. Vi vil gå den hårde vej først med VBA og derefter prøve den nemme måde, så du ved forskellen, hvornår du skal bruge kode, og hvornår uden kode. En VBA-baseret metode er god til at eksperimentere, med forskellige billeder, størrelser, før man afslutter, hvad der ser godt ud på noden.

Vi vil bruge ImageList-objektets Add() metode til at tilføje billeder til kontrollen, som vi gjorde for Tree View-data til Node. På denne måde tilføjer vi flere billeder til ImageList-kontrollen og bruger dem under kørslen.

Syntaksen for Add()-metoden for ImageList-kontrol er som angivet nedenfor:

ObjImgList.ListImages.Add([Index],[Key],[Picture]) As ListImage

De to første parametre er valgfrie. Det tredje argument bruger LoadPicture() Funktion til at åbne billeder fra den angivne placering og tilføje dem til listen. Funktionsparameteren er billedfilens stinavn. Alle billedfiler tilføjes, den ene efter den anden til ImageList Object, i den rækkefølge, de er placeret. Indeksværdierne genereres automatisk i fortløbende tal fra 1 (én) og frem.

Efter tilføjelse af alle billederne til ImageList-objektet, Objekt reference skal videregives til trævisningskontrollens ImageList Property .

VBA-koden.

Eksempel VBA-koden til at indlæse billeder til vores menu ovenfor er givet nedenfor:

Dim tvw As MSComctlLib.TreeView
Const KeyPrfx As String = "X"
Dim objimgList As MSComctlLib.ImageList

Private Sub CreateImageList()
Dim strPath As String

'TreeView Object reference set in tvw
Set tvw = Me.TreeView0.Object
'Clear the Tree View Nodes, if any.
tvw.Nodes.Clear

'ImageList Object reference set in objimglist
Set objimgList = Me.ImageList0.Object

strPath = CurrentProject.Path & "\"

With objimgList.ListImages
'Key Names are Case sensitive.
    .Add , "FolderClose", LoadPicture(strPath & "folderclose2.jpg")
    .Add , "FolderOpen", LoadPicture(strPath & "folderopen2.jpg")
    .Add , "ArrowHead", LoadPicture(strPath & "arrowhead.bmp")
    .Add , "LeftArrow", LoadPicture(strPath & "LeftArrow.bmp")
    .Add , "RightArrow", LoadPicture(strPath & "RightArrow2.bmp")
End With

With tvw
    .ImageList = objimgList
End With

End Sub

Når vi er færdige med denne procedure, er det nemt at tilføje billederne til trævisningsknuderne.

TreeView Nodes Add() metode og billedparametre.

Trævisningsobjektet Add() Metodens sidste to parametre er for nodebillederne. Lad os se på TreeView Object Nodes Add()-metodens syntaks en gang til:

tvw.Nodes.Add([Relative],[Relationship],[Key],[Text],[Image],[SelectedImage]) As Node

De sidste to parametre er for nodebilleder. Den første billedparameter er for nodens normale visning, og det andet billede vises, når noden er valgt. [Billede] og [SelectedImage] værdier kan enten være ImageList Index Number eller Nøglen- Værdi.

CreateImageList() sub-rutine tilføjer fem billeder til ImageList Control . Ud af de første to billeder, det første (FolderClose ) er til rodniveau nodes normale visning og den anden (FolderOpen ) billede vises, når noden på rodniveau er valgt.

De sidste to billeder bruges til normalvisningen under knudepunkter og til handlingen Klikhændelse.

Pilehovedet billede ignoreres.

FormLoad()-hændelsesprocedure med ændringer.

Den ændrede FormLoad() Begivenhedsproceduren er angivet nedenfor:

Private Sub Form_Load()
Dim db As Database
Dim rst As Recordset
Dim nodKey As String
Dim PKey As String
Dim strText As String
Dim strSQL As String

Dim tmpNod As MSComctlLib.Node
Dim Typ As Variant

'1. Initializes TreeView Control Object
'2. Creates ImageList in ImageListObject
CreateImageList 

With tvw
    .Style = tvwTreelinesPlusMinusPictureText
    .LineStyle = tvwRootLines
    .LabelEdit = tvwManual
    .Font.Name = "Verdana"
    .Indentation = 400
End With

strSQL = "SELECT ID, Desc, PID, Type,Macro,Form,Report FROM Menu;"

Set db = CurrentDb
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)

Do While Not rst.EOF And Not rst.BOF
    If Nz(rst!PID, "") = "" Then
        nodKey = KeyPrfx & CStr(rst!ID)
        strText = rst!desc
      Set tmpNod = tvw.Nodes.Add(, , nodKey, strText, "FolderClose", "FolderOpen")
      
      'Root-Level Node Description in Bold letters
      With tmpNod
        .Bold = True
      End With
    Else
        PKey = KeyPrfx & CStr(rst!PID)
        nodKey = KeyPrfx & CStr(rst!ID)
        strText = rst!desc
        Set tmpNod = tvw.Nodes.Add(PKey, tvwChild, nodKey, strText, "LeftArrow", "RightArrow")
     
     'Check for the presense of Type Code
        If Nz(rst!Type, 0) > 0 Then
            Typ = rst!Type
            Select Case Typ
                Case 1 'save type Code & Form Name in Node Tag Property
                    tmpNod.Tag = Typ & rst!Form
                Case 2 'save type Code & Report Name in Node Tag Property
                    tmpNod.Tag = Typ & rst!Report
                Case 3 'save type Code & Macro Name in Node Tag Property
                    tmpNod.Tag = Typ & rst!Macro
            End Select
        End If
        
    End If
    rst.MoveNext
Loop
rst.Close

Set rst = Nothing
Set db = Nothing

End Sub

Add() metodelinje af TreeView-noder er fremhævet på VBA-koden ovenfor, hvor billedet Nøglen Strengparameterværdier indsættes for både normale visninger og klikvisninger af billederne.

Alternativt kan du bruge billedindeksværdier 1, 2 for noderne på rodniveau og indeksnumrene 4, 5 for børneknuder.

Du kan ændre værdierne og prøve selv.

En ny demodatabase med alle ændringerne og yderligere billedindlæsningsprocedure er vedhæftet, som du kan downloade.

Bemærk: Opret fire nye billeder, som forklaret ovenfor, til dine egne prøvekørsler, og skift billednavne og lokationsadresser i ovenstående kode, hvis du gemmer billederne et andet sted.

Dernæst vil vi prøve den nemme metode med billederne, og jeg vil dele mine billeder med dig.

Eksempeldatabase til download.


  1. MS-adgang og e-mail
  2. Bring Word-Mail Merge fra Access2007
  3. Automatiske e-mail-advarsler


  1. Antal antal fortløbende forekomst af værdier i tabel

  2. Få den sidste dag i måneden i SQL

  3. Eksport af en PostgreSQL-forespørgsel til en csv-fil ved hjælp af Python

  4. Er der nogen måde at kontrollere ydeevnen af ​​mysql indeksering