sql >> Databáze >  >> RDS >> Access

Přiřazení obrázků k uzlům stromového zobrazení

Úvod.

Minulý týden jsme vytvořili Access Project Menu na TreeView Control a doufám, že jste si jej dokázali vytvořit sami a spustit ve své verzi Microsoft Access. Existuje Demo databáze, vytvořená pod Access 2007 a připojená k následujícímu příspěvku ke stažení. Odkaz na tento článek je uveden níže:

  • Vytvoření nabídky Přístup s ovládáním stromového zobrazení

Můžete si stáhnout databázi, abyste mohli přidat nový kód VBA, který se týká výše uvedeného tématu, a vyzkoušet jej ve stejné databázi.

Toto je pokračování předchozího článku a potřebujeme stejný projekt Demo Access Menu, abychom přiřadili obrázky k uzlům a učili se.

Problémy s verzí MS Office pro ovládání TreeView.

Pokud jste měli nějaké problémy se spuštěním ukázkové databáze ve vaší verzi Microsoft Access, můžete se podívat na následující odkaz, kde najdete některá nápravná opatření, která mohou být užitečná k vyřešení vašeho problému:

  • VYŘEŠENO MSCOMCTL.OCX STAŽENÍ REGISTRACE 64BITOVÝCH WINDOWS

Ukázkový ukázkový obrázek.

Až dokončíme nabídku Access Project Menu s Obrázky on Nodes bude vypadat jako obrázek uvedený níže:

Volitelně můžeme každému uzlu přiřadit dva obrázky. Jeden obrázek se zobrazí v normálním stavu a jiný se zobrazí, když uzel obdrží kliknutí.

Zde jsme uzel na kořenové úrovni přiřadili Closed-Folder Obrázek pro normální zobrazení a jako u otevřené složky Obrázek se objeví, když uzel obdrží kliknutí.

Podobně mají podřízené uzly obrázek hlavy šipky směřující doleva v normálním pohledu a obrázek hlavy šipky směřující doprava, který se zobrazí, když je vybrán uzel.

Můžete použít stejný obrázek pro oba (normální i pro událost kliknutí), takže stejný obrázek zůstane beze změny v obou případech. Pokud použijete jeden z těchto dvou parametrů, řekněme použít pouze parametr Normální zobrazení a vynecháte druhý, pak kliknutí na uzel nezobrazí žádný obrázek.

Ideální velikosti obrázků pro uzly.

Formát obrázku může být jakéhokoli běžného typu obrázku, například .bmp , .jpg , .jpeg , .ico , .tiff atd. Spoustu obrázků ikon můžete najít vyhledáváním na Googlu. Ideální velikost obrázku, která na uzlu vypadá dobře, je 16 x 16 pixelů . Seznam obrázků Ovládací prvek má přednastavené hodnoty velikosti obrázku jako 16 x 16 , 32 x 32 , 48 x 48 pixelů a Vlastní velikost Možnosti na výběr.

Možnosti větší velikosti obrázku 32 x 32 nebo 48 x 48 pixelů zobrazí větší obrázky a zabere více místa na zobrazení stromu.

Grafika uzlů s různými velikostmi obrázků.

Následující ukázkový obrázek níže ukazuje 32 x 32 pixelů ikona velikosti:

Ovládací prvek TreeView s velikostí obrázku uzlu 48 x 48 pixelů :

Pokud dáváte přednost použití Vlastní Image Option pak bude zobrazena skutečná velikost obrázku beze změny.

Úvahy o kvalitě a velikosti obrázku.

Použili jsme velikost obrázku 16 x 16 v prvním ukázkovém obrázku výše. Pokud nahrajeme vlastní obrázek o velikosti větší než 48 x 48, například 512 x 512 Pixely nebo více a použijte možnost 16 x 16 zmenší velikost na zadané rozlišení, ale jasnost obrazu bude snížena nebo zkreslena.

Nejlepší přístup je najít malé obrázky v dobré kvalitě, které se vejdou do rozlišení 16 x 16 pixelů (velikost plátna). Funguje jak s 16 x 16 pixelů, tak s vlastním nastavením, bez kvality obrazu.

Můžete experimentovat s různými typy obrázků, velikostí a kvalitou, před dokončením provést zkušební provoz. Můžete použít MS-Paint nebo jakýkoli jiný program pro úpravu obrázků, který máte, a vytvářet/importovat a upravovat obrázky podle svých představ.

Než budete pokračovat dále, vytvořte čtyři nebo více malých obrázků a uložte je do složky databáze. Nahrajte je do ovládacího prvku ImageList a vyzkoušejte je v ovládacím prvku stromového zobrazení změnou posledních dvou parametrů metody Nodes Add().

Demo databázi si můžete stáhnout:ProjectMenu.accdb , z předchozí stránky článku.

Připravte se na zkušební provoz.

  1. Otevřete ProjectMenu.accdb databáze.

  2. Vytvořte kopii formuláře frmMenu a pojmenujte jej jako frmMenu2 a uschovejte jej pro pozdější použití.

  3. Otevřete frmMenu v zobrazení Návrh.

  4. Vyberte Ovládací prvky ActiveX Možnost z Ovládací prvky Skupina tlačítek a najděte soubor Microsoft ImageList Control a klikněte na OK pro vložení Seznam obrázků ovládejte, přetáhněte a umístěte kamkoli do prázdné oblasti formuláře.

    Formulář s ImageList Ovládací prvek zvýrazněný v zobrazení návrhu je uveden níže pro referenci:

  5. Zobrazte jeho seznam vlastností a změňte Název Hodnota vlastnosti na ImageList0 .

  6. Klepněte pravým tlačítkem myši na ovládací prvek ImageList a zvýrazněte Objekt ImageListCtrl Možnost v zobrazené nabídce a vyberte Vlastnosti zobrazíte list vlastností nastavení obrázku ovládacího prvku.

  7. Vyberte 16 x 16 velikost obrázku Přepínač na Obecné Tab, což znamená, že potřebujeme nejmenší ze tří velikostí obrázku pro uzel. Toto nastavení se projeví u všech obrázků, které přidáme do ovládacího prvku ImageList.

  8. Klikněte na Použít Příkazové tlačítko a poté OK zavřete list vlastností.

Nejprve musíme přidat požadované obrázky do Seznamu obrázků Než je budeme moci použít v ovládání stromového zobrazení.

Přístupy k načítání obrázků.

Existuje snadný a obtížný způsob Přidat Obrázky do ovládacího prvku ImageList. Jednoduchý způsob funguje bez kódu VBA a druhá metoda potřebuje VBA. Nejprve půjdeme obtížnou cestou s VBA a poté vyzkoušíme snadnou cestu, takže poznáte rozdíl, kdy použít kód a kdy bez kódu. Metoda založená na VBA je dobrá pro experimentování s různými obrázky a velikostmi před dokončením toho, co na uzlu vypadá dobře.

Použijeme Add() objektu ImageList způsob přidávání obrázků do ovládacího prvku, jako jsme to udělali pro data Tree View do Node. Tímto způsobem přidáme několik obrázků do ovládacího prvku ImageList a použijeme je za běhu.

Syntaxe metody Add() ovládacího prvku ImageList je uvedena níže:

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

První dva parametry jsou volitelné. Třetí argument používá LoadPicture() Funkce pro otevření obrázků ze zadaného umístění a jejich přidání do seznamu. Parametrem funkce je cesta k souboru obrázku. Všechny obrazové soubory jsou přidány jeden po druhém do objektu ImageList v pořadí, v jakém jsou umístěny. Hodnoty indexu se generují automaticky v po sobě jdoucích číslech počínaje 1 (jeden) dále.

Po přidání všech obrázků do objektu ImageList, Objekt odkaz musí být předán do Vlastnosti ImageList ovládacího prvku Tree View .

Kód VBA.

Vzorový kód VBA pro načítání obrázků pro naši nabídku výše je uveden níže:

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

Jakmile skončíme s tímto postupem, je snadné přidat obrázky do uzlů stromového zobrazení.

Metoda Add() a parametry obrázku uzlů TreeView.

Objekt stromového zobrazení Add() Poslední dva parametry metody jsou pro obrazy uzlů. Podívejme se ještě jednou na syntaxi metody TreeView Object Nodes Add():

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

Poslední dva parametry jsou pro Node Images. První parametr obrázku je pro normální zobrazení uzlu a druhý obrázek se zobrazí, když je vybrán uzel. [Obrázek] a [SelectedImage] hodnoty mohou být buď číslo indexu ImageList nebo Key- Hodnota.

Funkce CreateImageList() podprogram přidá pět obrázků do ImageList Control . Z prvních dvou obrázků je první (FolderClose ) je pro normální zobrazení uzlu na kořenové úrovni a druhý (FolderOpen ) obrázek se zobrazí, když je vybrán uzel na kořenové úrovni.

Poslední dva obrázky se používají pro normální zobrazení podřízených uzlů a pro akci Click Event.

ArrowHead obrázek je ignorován.

Procedura události FormLoad() se změnami.

Upravené FormLoad() Postup události je uveden níže:

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

Funkce Add() řádek metody uzlů TreeView je zvýrazněno na kódu VBA výše, kde je Klíč obrázku Hodnoty parametru řetězce jsou vloženy pro normální i pro kliknutí na obrázky.

Případně můžete použít Hodnoty indexu obrázků 1, 2 pro uzly na kořenové úrovni a indexová čísla 4, 5 pro podřízené uzly.

Můžete změnit hodnoty a vyzkoušet si to sami.

Ke stažení je přiložena nová ukázková databáze se všemi změnami a dalším postupem načítání obrázků.

Poznámka: Vytvořte čtyři nové obrázky, jak je vysvětleno výše, pro vlastní zkušební běhy a změňte názvy obrázků a adresy umístění ve výše uvedeném kódu, pokud obrázky uložíte na jiné místo.

Dále vyzkoušíme snadnou metodu s obrázky a já se s vámi podělím o své obrázky.

Ukázka databáze ke stažení.


  1. MS-Access a e-mail
  2. Vyvolejte Word-Mail Merge z Access2007
  3. Automatická e-mailová upozornění


  1. Úvod do zabezpečení na úrovni řádků v SQL Server

  2. Jak funguje sys.dm_exec_describe_first_result_set na serveru SQL Server

  3. Jak se při připojování k instanci Amazon RDS Oracle dostat k hodnotě Got mínus jedna z chyby čtení

  4. Jak získat *všechno* zpět z uložené procedury pomocí JDBC