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

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

Úvod.

Doufám, že jste shledali několik posledních týdnů výukových relací Microsoft TreeView a ImageList Control zajímavými a připravenými na další epizodu. Pokud jste si ještě neprošli předchozí články, odkazy jsou uvedeny níže.

  • Výukový program pro ovládání stromového zobrazení Microsoftu
  • Vytvoření nabídky Přístup s ovládáním stromového zobrazení
  • Přiřazení obrázků k uzlům stromového zobrazení

Tento příspěvek je pokračováním epizody z minulého týdne.

Minulý týden jsme vytvořili několik obrázků a nahráli je do ImageList Ovládání pomocí kódu VBA pro Microsoft Tree View Control. Reference ovládacího prvku ImageList byla předána vlastnosti ImageList ovládacího prvku stromového zobrazení. Po těchto krocích můžeme přímo použít Názvy klíčů obrázku nebo Indexová čísla jako uzel [Obrázek] a [SelectedImage] Parametry v Nodes.Add() Metoda objektu Microsoft Tree View. S pomocí obou těchto ovládacích prvků jsme mohli vytvořit krásnou nabídku projektu Microsoft Access s položkami nabídky v hierarchické struktuře se stromovými řádky a vizuálně příjemnou položkou nabídky Obrázky.

Formulář zkušebního provozu z minulého týdne s obrázky uzlů.

Obrázek nabídky Access Project z minulého týdne je uveden níže, s obrázky uzlů a stromovými liniemi.

Kód VBA pro nahrávání obrázků do ovládacího prvku ImageList.

Následuje kód VBA, který jsme použili k nahrávání obrázků do uzlů objektů ImageList:

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


Private Sub CreateImageList()
Dim strPath As String

'Initialize Tree View Object
Set tvw = Me.TreeView0.Object
'Clear the Tree View Nodes, if any.
tvw.Nodes.Clear

'Initialize ImageList Object
Set objimgList = Me.ImageList0.Object
’the images must be saved in database path
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

Při prezentaci výše uvedeného kódu jsem zmínil, že existuje jednodušší způsob, jak nahrát obrázky do ovládacího prvku ImageList, bez kódu VBA. Kromě toho jsem slíbil sdílet obrázky, které jsem použil ve výše uvedené ukázce Access Menu Nodes. K tomu se dostaneme za chvíli.

Nevytvářeli jsme pouze nějaké obrázky a jejich použití. Vytvořili jsme však několik smysluplných obrázků pro naši nabídku projektu Access na základě zobrazení stromu.

Vezměme si případ obrázků kořenové složky. FolderClose styl obrázku se používá pro normální zobrazení uzlu na kořenové úrovni a zároveň skrývá všechny jeho podřízené uzly ze zobrazení. Když uživatel klikne na uzel na kořenové úrovni, FolderOpen objeví se obrázek a odkryje své podřízené uzly. Druhé kliknutí na uzel nezmění obrázek na normální zobrazení, zatímco je aktivní, ale podřízené uzly mohou zmizet ze zobrazení v závislosti na TreeView0_NodeClick() Kód procedury události.

Podobně mají podřízené uzly šipku doleva směřující doleva obrázek v normálním zobrazení a trochu větší obrázek šipka vpravo , směřující doprava po kliknutí. Zvýrazněná slova jsou názvy klíčů používané v ovládacím prvku ImageList. Akce Kliknutí otevře Formulář , Zpráva, nebo Makro, v závislosti na vybraném podřízeném uzlu.

Ovládací prvek ImageList ve formuláři.

Seznam obrázků Ovládací prvek je zvýrazněn v návrhovém zobrazení výše uvedené frmMenu Formulář je uveden níže pro referenci:

List vlastností ovládacího prvku ImageList.

Obrázek listu vlastností ImageList je uveden níže pro referenci:

Recenze cvičení a příprav z minulého týdne.

Minulý týden jsme vybrali velikost obrázku 16 x 16 pixelů a nahrál požadované obrázky do výše uvedeného ovládacího prvku ImageList pomocí kódu VBA. Po nahrání všech obrázků jsme předali referenci objektu ImageList do Vlastnosti ImageList ovládacího prvku stromového zobrazení. .

Po výše uvedených krocích bychom mohli použít Indexové číslo nebo Key-Value obrázků v Přidat() parametry metody, uzly stromového zobrazení.

Neuvedli jsme první parametr metody Add() ImageList. Ale samotná metoda Add() vloží indexové číslo pro každý obrázek do ovládacího prvku ImageList. Pamatujte, že když zadáte Klíč hodnotu do [Image], [SelectedImage] metody Nodes.Add() Parametr je Rozlišovat malá a velká písmena . Je lepší, když zadáte hodnoty klíče do klíče ovládacího prvku ImageList Textové pole, s malými písmeny.

Nyní, jak jsem slíbil, ukážu snadný způsob načítání obrázků do ovládacího prvku ImageList. Je to stejně jednoduché jako ručně vybrat všechny požadované obrázky, jeden po druhém, z disku a přidat je do Seznamu obrázků Ovládání bez jakéhokoli kódu VBA.

Kromě toho můžete ovládací prvek ImageList sdílet s jinými projekty pouhým zkopírováním a vložením ovládacího prvku ImageList do jiného formuláře projektu, se všemi obrázky nedotčenými. Pak už jen stačí použít Key-Value nebo Indexové číslo v metodě Add() ovládacích uzlů TreeView.

Pokud jste si již stáhli ukázkovou databázi z příspěvku minulého týdne, otevřete ProjectMenuV21.accdb . Uložili jsme kopii formuláře frmMenu s novým názvem frmMenu2 .

Přidání ovládacího prvku ImageList do formuláře frmMenu2.

  1. Otevřete formulář frmMenu2 v zobrazení Návrh.

  2. Vložte Microsoft ImageList Control ze seznamu ovládacích prvků Activex někde na prázdném místě ve formuláři frmMenu2.

  3. Změňte jeho Název Hodnota vlastnosti na ImageList0.

  4. Klepněte pravým tlačítkem myši na ovládací prvek seznamu obrázků a zvýrazněte Objekt ImageListCtrl Možnost, v zobrazené nabídce a vyberte Vlastnosti .

  5. Vyberte přednastavenou velikost obrázku 16 x 16 pixelů Možnost ve vlastnostech Obecné Tab. Je důležité, abyste v Obecné vybrali jednu z těchto možností Před přidáním jakéhokoli obrázku do Obrázků nejprve tabulátor Tab.

  6. Vyberte Obrázky Tab. Karta Obrázky Vlastnosti vypadá jako následující obrázek:

  7. Klikněte na Vložit obrázek Příkazové tlačítko, vyhledejte folder_closed ukázkový obrázek (pokud nějaký máte nebo vyberete obrázek, který jste si připravili dříve), který jste vytvořili pro zkušební provoz minulý týden, vyberte jej a klikněte na Otevřít Příkazové tlačítko.

    Ovládací prvek ImageList bude po vložení vybraného obrázku vypadat jako obrázek uvedený níže.

  8. Tři ovládací prvky textového pole:Index , Klíč, a Označit jsou nyní povoleny. Index ovládací prvek má hodnotu indexu 1 vloží se do něj automaticky.

  9. Zadejte text folder_close nebo jakýkoli pár klíč–hodnota, který chcete použít v parametrech metody Add() ovládacího prvku stromového zobrazení, v Klíč Ovládání textového pole. Jeho datový typ by měl být typu String a jedinečný mezi všemi hodnotami klíče obrázku.

  10. Značka vlastnost lze použít k zaznamenání některých užitečných informací, jako je název cesty obrázku.

  11. Přidejte všechny požadované obrázky z disku jeden po druhém a zadejte příslušné hodnoty klíče do ovládacího prvku Klíčový text pro všechny obrázky, které nahrajete. Používejte jednoduché, smysluplné a snadno zapamatovatelné klíčové hodnoty.

  12. Pokud chcete z ovládacího prvku odebrat nějaký obrázek, vyberte tento obrázek a klikněte na Odebrat obrázek.

  13. Po dokončení načítání obrázků klikněte na Použít Příkazové tlačítko a poté klikněte na OK zavřete Seznam obrázků ovládání.

    Poznámka: Nezapomeňte, že jste přidali všechny obrázky po výběru obrázku Velikost 16 x 16 pixelů na stránce Obecné Tab. Po nahrání obrázků nelze změnit velikost obrázku na kartě Obecné. Pokud byste preferovali jinou možnost Velikost obrázku, po nahrání obrázků musíte nejprve odstranit všechny obrázky. Pouze vy budete moci vybrat jinou možnost velikosti obrázku a poté proces nahrávání znovu zopakovat.

    Ovládací prvek ImageList s více obrázky:

  14. V případě, že si nejste jisti, jakou hodnotu klíče a hodnoty jste zadali pro konkrétní obrázek, klikněte na obrázek a zobrazte hodnotu klíče a hodnoty v klíči. Textové pole.

  15. Po nahrání všech požadovaných obrázků do ovládacího prvku zůstanou v ovládacím prvku ImageList. Pokud potřebujete stejné obrázky v nějakém jiném projektu, můžete si vytvořit kopii ovládacího prvku ImageList kdekoli chcete nebo sdílet formulář/databázi s ostatními s obrázky. Tímto způsobem můžete přidat další obrázky z nového umístění.

  16. Po nahrání všech obrázků musíme předat ovládací prvek ImageList Reference do Stromového zobrazení Vlastnost ImageList ovládacího prvku jako dříve, když jsme nahráli obrázky prostřednictvím kódu VBA.

  17. Následující ukázkový kód předá referenci ImageList do vlastnosti ImageList ovládacího prvku stromového zobrazení v nových projektech.

    Dim objimgList As MSComctlLib.ImageList
    
    'Initialize ImageList Object
    Set objimgList = Me.ImageList0.Object
    
    With tvw
        .ImageList = objimgList
    End With
    

Rozbalení/sbalení uzlů pomocí jednoho příkazového tlačítka

  1. Otevřete formulář frmMenu2 v návrhovém zobrazení.

  2. Vyberte možnost Sbalit vše Příkazové tlačítko, otevřete jeho proceduru události Click a odeberte kód.

  3. Odeberte samotné příkazové tlačítko z formuláře.

  4. Vyberte možnost Rozbalit vše Command Button, otevřete jeho proceduru události Click.

  5. Zkopírujte následující kód VBA a vložte jej tak, aby přepsal existující řádky, mezi cmdExpand_Click() . . . End Sub řádky, jak je uvedeno níže:

Private Sub cmdExpand_Click()
Dim Nodexp As MSComctlLib.Node

If cmdExpand.Caption = "Expand All" Then
    cmdExpand.Caption = "Collapse All"
    
    For Each Nodexp In tvw.Nodes
        Nodexp.Expanded = True
    Next Nodexp
Else
    cmdExpand.Caption = "Expand All"
    
    For Each Nodexp In tvw.Nodes
        Nodexp.Expanded = False
    Next Nodexp
End If

End Sub
  1. Uložit a otevřít frmMenu2 v normálním zobrazení.

  2. Titulek příkazového tlačítka je Rozbalit vše Nyní.

  3. Kliknutím na příkazové tlačítko rozbalíte všechny uzly. Všechny uzly jsou nyní v rozšířené podobě. Titulek příkazového tlačítka se změní na Sbalit vše .

  4. Klikněte na něj znovu a všechny uzly jsou ve sbaleném stavu, text titulku se změní zpět na Rozbalit vše znovu.

Příští týden uvidíme použití zaškrtávacích políček na uzlech, abychom zjistili, jak můžeme identifikovat zaškrtnuté uzly a pracovat s nimi.

MODUL TŘÍDY

  1. MS-Access Class Module a VBA
  2. Objekt a pole třídy VBA MS Access
  3. Základní třída MS-Access a odvozené objekty
  4. VBA-Base Class a Derived Object-2
  5. Základní třída a varianty odvozených objektů
  6. Sada záznamů a modul třídy MS-Access
  7. Přístup k modulu třídy a třídám Wrapper
  8. Funkčnost třídy Wrapper

  1. Funkce zálohovací metody PostgreSQL v AWS S3

  2. SQL IN operátor pro začátečníky

  3. Jaký je smysl počátečního katalogu v připojovacím řetězci SQL Server?

  4. Správný dotaz pro získání aktuálního počtu připojení v PostgreSQL DB