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

Výukový program ovládání Activex ListView-01

Úvod.

V MS-Access máme ListBox ovládací prvek a většinou bude mít pouze několik sloupců dat, aby bylo možné položky rychle najít. Zdrojová data pro tento ovládací prvek se buď zadají přímo do vlastnosti Zdroj řádků jako seznam hodnot, nebo se načtou ze zdrojové tabulky nebo dotazu. Ovládací prvek Combo Box uchovává svá data skrytá a k zobrazení seznamu k výběru potřebuje kliknutí. Tyto objekty jsou již integrovány jako řízení přístupu.

Existuje však další ovládací prvek seznamu, který vždy používáme v naší databázi, můžete hádat, co to je? Ano, ovládací prvek zobrazení datového listu. Záznamy jsou zobrazeny z tabulky, dotazu. Ve všech těchto případech vidíme data v zobrazení datového listu jako velký seznam.

V aplikaci Microsoft Access však existují i ​​další skupiny ovládacích prvků, ovládací prvky ActiveX. Jeden z těchto ovládacích prvků již známe – Common Dialog Control nebo File Browser.

Zde je tématem Windows ListView Control. Můžete si jej představit jako objekt podobný Průzkumníkovi Windows, kde můžete zobrazovat položky s ikonami obrázků, malými ikonami obrázků, jako seznam nebo jako podokno zobrazení podrobností v Průzkumníkovi. Do tohoto ovládacího prvku můžete načíst data tabulky / dotazu a zobrazit je v zobrazení datového listu, změnit uspořádání sloupců nebo řádků, seřadit řádky, zobrazit obrázky vedle položek atd. Jiné programovací jazyky, jako je VB6, VB.NET, C# atd., používají Windows ListView Control. Uvidíme, jak jej můžeme použít v databázi Microsoft Access.

Jednoduchá ukázková obrazovka ListView s několika rychlými ukázkovými daty je uvedena níže:

Učiníme z výše uvedeného zobrazení podobného obrázku výchozí bod kurzu ListView Control Tutorial. Do ovládacího prvku ListView jsme nahráli deset řádků dat s několika řádky kódu VBA. Ovládací prvek ListView ActiveX, který možná nenajdete v existujícím seznamu ovládacích prvků ActiveX v aplikaci Access. Musíme přidat soubor knihovny tohoto ovládacího prvku MSCOMCTL.OCX ze složky C:\Windows\System32 do Reference Accessu Knihovna. Po přidání najdete tento ovládací prvek pod názvem Microsoft ListView Control, verze 6.0 mimo jiné ovládací prvky ActiveX.

Přidejme tedy MSCOMCTL.OCX Soubor knihovny do naší databáze. Toto je zdrojová knihovna ovládacích prvků ActiveX jako ListView, TreeView, ImageList. Pokud jste již prošli naším dřívějším StreeView ovládací výukový program Stránky, pak jste již seznámeni s tímto ovládacím prvkem.

Soubor knihovny běžných ovládacích prvků systému Windows.

Chcete-li připojit soubor MSCOMCTL.OCX, postupujte takto:

  1. Otevřete svou databázi a otevřete okno pro úpravy VBA (Alt+F11).

  2. Vyberte Reference… z nabídky Tools .

  3. Kliknutím na tlačítko Procházet vyhledejte soubor MSCOMCTL.OCX (společné ovládací prvky Microsoft Windows.)

  4. Vyhledejte výše uvedený soubor v C:\Windows\System32\ Složka, pokud máte 32bitový systém nebo máte operační systém Windows 11.

  5. Pokud jste jej tam nenašli, vyhledejte složku C:\Windows\sysWOW64\ (64bitový systém), a tam najdete tento soubor.

  6. Vyberte soubor MSCOMCTL.OCX a klikněte na Otevřít Příkazové tlačítko pro připojení souboru k vaší databázi.

  7. Dalším stisknutím Alt+F11 se vrátíte do okna Databáze.

Dovolte nám navrhnout vzorový formulář, který bude odpovídat výše uvedenému obrázku v horní části této stránky.

  1. Vytvořte nový prázdný formulář.

  2. Vyberte ovládací tlačítko ActiveX ze skupiny ovládacích prvků možností.

  3. Najděte a vyberte Microsoft ListView Control ze zobrazeného seznamu a kliknutím na tlačítko OK vložte ovládací prvek ListView do části podrobností formuláře.

  4. Klikněte a podržte úchyt pro změnu velikosti ovládacího prvku, v pravém dolním rohu, přetáhněte doprava a dolů, aby byl dostatečně velký jako ukázkový obrázek uvedený výše.

  5. Přetáhněte samotný ovládací prvek ListView doprava a dolů, abyste získali určitý okraj doleva a ponechte nad ním dostatek místa pro vytvoření nadpisu.

  6. Klepnutím na ovládací prvek ListView jej vyberte, pokud není ve vybraném stavu.

  7. Zobrazte list vlastností a změňte název ovládacího prvku ListView na ListView1 .

  8. Výše vytvořte ovládací prvek Štítek a změňte Titulek hodnotu vlastnosti do ListView Control Tutorial . Štítek Caption můžete naformátovat velikostí písma, barvou atd., jak se vám to líbí.

  9. Vytvořte příkazové tlačítko pod ovládacím prvkem LlistView a změňte jeho hodnotu vlastnosti Name na cmdClose a jeho Titulek Hodnota vlastnosti k zavření. Dokončený návrh bude po dokončení návrhu vypadat takto:

  10. Nyní uložte formulář s názvem:ListViewTutorial a ponechat formulář v návrhovém zobrazení.

  11. Stisknutím Alt+F11 se vrátíte zpět do okna modulu třídy formuláře.

    Kód VBA.

  12. Zkopírujte a vložte následující kód do modulu VBA formuláře a nahraďte existující řádky kódu, pokud existují:

    Option Compare Database
    Option Explicit
    
    Dim lvwList As MSComctlLib.ListView
    Dim lvwItem As MSComctlLib.ListItem
    Dim ObjImgList As MSComctlLib.ImageList
    Const prfx As String = "X"
    
    Private Sub cmdClose_Click()
       DoCmd.Close acForm, Me.Name
    End Sub
    
    Private Sub Form_Load()
        Call LoadListView
    End Sub
    
    Private Function LoadListView()
        Dim intCounter As Integer
        Dim strKey As String
    
    'Assign ListView Control on Form to lvwList Object
     Set lvwList = Me.ListView1.Object
     
     'Create Column Headers for ListView
     With lvwList
        .ColumnHeaders.Clear 'initialize header area
       'Parameter List:
    'Syntax: .ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
        .ColumnHeaders.Add , , "Name", 2500
        .ColumnHeaders.Add , , "Age", 1200
        .ColumnHeaders.Add , , "Height", 1200
        .ColumnHeaders.Add , , "weight", 1200
        .ColumnHeaders.Add , , "Class", 1200
     End With
     
     'Initialize ListView Control
      While lvwList.ListItems.Count > 0
            lvwList.ListItems.Remove (1)
      Wend
        
     With lvwList
        For intCounter = 1 To 10
            strKey = prfx & CStr(intCounter) '
       'Syntax: .ListItems.Add(Index, Key, Text, Icon, SmallIcon)
            Set lvwItem = .ListItems.Add(, strKey, "Student " & intCounter)
            'Add next columns of data as sub-items of ListItem
            With lvwItem
          'Parameters =      .Add Index,Key,Text,Report Icon,TooltipText
                .ListSubItems.Add , strKey & CStr(intCounter), CStr(5 + intCounter)
                .ListSubItems.Add , strKey & CStr(intCounter + 1), CStr(135 + intCounter)
                .ListSubItems.Add , strKey & CStr(intCounter + 2), CStr(40 + intCounter)
                .ListSubItems.Add , strKey & CStr(intCounter + 3), ("Class:" & intCounter)
    
           End With
        Next
        'reset lvwItem object
        Set lvwItem = Nothing
    End With
    lvwList.Refresh
    
    End Function
  13. Uložte formulář s názvem ListView Control Tutorial-01.

    Ukázkové zobrazení formuláře.

  14. Otevřete formulář v normálním zobrazení a podívejte se na naši tvorbu.

    Pokud najdete svůj formulář s následujícím obrázkovým displejem, jste na správné cestě.

    Musíme provést nějaké změny v nastavení vlastností ovládacího prvku Listview. Změnili jsme název ovládacího prvku ListView na ListView1 v listu vlastností Accessu. Ovládací prvek ListView má však svůj vlastní list vlastností. K provedení změn v ovládacím prvku použijeme vlastní list vlastností ovládacího prvku ListView. Některé hodnoty vlastností se objevují také na listu vlastností Access.

  15. Klepněte pravým tlačítkem myši na ovládací prvek ListView a zvýrazněte Objekt ListViewCtrl ze zobrazeného seznamu možností a vyberte Vlastnosti ze zobrazené místní nabídky.

  16. Obrázek listu vlastností je uveden níže:

    Na listu vlastností v horní části jsou záložky se skupinami dalších možností. Ve výchozím nastavení jsme na kartě Obecné. Na kartě Obecné jsou možnosti na levé straně ovládacího prvku a zaškrtávací políčka napravo. Provedeme změny pouze ve dvou vlastnostech, ovládací prvek ListView ve formuláři je ve výchozím stavu vypnutý, musíme jej povolit.

    Ovládací displej ListView lze změnit na různé režimy, jako jsou položky seznamu s velkými obrázkovými ikonami, s malými obrázkovými ikonami, v ListView nebo v zobrazení sestavy – jako je tomu na prvním obrázku výše.

  17. Aktivujte ListView Control zaškrtnutím políčka Povoleno Vlastnost, na pravé straně.

  18. Vyberte lvwReport možnost z Zobrazit rozevírací seznam na levé straně.

  19. Klikněte na Použít Tlačítko na ovládacím prvku pro uložení změny.

  20. Klepnutím na tlačítko OK zavřete list vlastností.

  21. Uložte formulář se změnami a poté jej otevřete v normálním zobrazení.

  22. Zjistíte, že stejný výsledek vypadá jako obrázek uvedený v horní části této stránky, s výjimkou barvy pozadí formuláře a dalších vlastností formuláře.

Funkční diagram programu.

Než přejdete na kód VBA, bude zajímavé vědět, jak se datové položky načítají do ovládacího prvku ListView. Uspořádání dat pro ovládací prvek ListBox je jednoduché. Postup načítání dat ovládacího prvku ListView je však zcela odlišný. Není to v logickém pořadí, které běžně vnímáme. Jakmile budete znát tok dat ze zdroje do jednoho řádku ve formě diagramu, nebo říkejme tomu vývojový diagram, nebude těžké porozumět kódu VBA a tomu, co dělá.

Diagram toku dat.

  1. Pole v levém horním rohu představuje ovládací prvek ListView.

  2. Prvním krokem přípravy seznamu je vytvoření štítků nadpisů seznamu nebo nadpisů sloupců. Můžete to vidět na diagramu, záhlaví sloupců v červené barvě. To můžete porovnat s nadpisy polí v zobrazení datového listu tabulky. Každé záhlaví sloupce je načteno do ovládacího prvku ListView v členu objektu ColumnHeaders. ColumnHeaders.Add() ovládacího prvku ListView metoda se volá pětkrát pro přiřazení každého štítku sloupce, jeden po druhém, ovládacímu prvku ListView.

  3. Je důležité si povšimnout akce potřebné k provedení následujících pěti kroků. Představují jeden záznam s pěti datovými poli. Ale jsou načteny do ovládacího prvku ListView ve dvou různých sadách kroků, nebo řekněme, že jsou načítány do dvou různých členů Object (ListItems a ListSubItems ) ovládacího prvku ListView.

    1. První pole (hodnota sloupce) se načte do ListItems ovládacího prvku ListView Přidat objektu metoda. Pokud se podíváte na obrázek nahoře, hodnota prvního sloupce prvního záznamu Student1 je načten v ListItems Objekt (ListView .ListItems.Add metoda) ovládacího prvku ListView.

    2. Od 2. sloupce dále se všechny ostatní hodnoty sloupců načtou do ListSubItems Objekt ListItems Objekt, jeden po druhém. ListSubItems.Add Metoda ( ListView.ListItems .Item(x).ListSubItems.Add ) se zavolá čtyřikrát, aby se vložily Hodnoty do Věk, Výška, Váha a Třída sloupce jednotlivě.

  4. Tyto dvouúrovňové kroky akcí jsou nutné k načtení úplného řádku hodnot do ovládacího prvku ListView. diagram je nakreslen se dvěma řádky dat v ovládacím prvku ListView.

S ohledem na výše uvedený obrázek jsem si jistý, že nebudete mít žádné potíže s pochopením toho, co výše uvedený kód VBA dělá v programu.

Přejděme k segmentu kódu VBA.

V oblasti globální deklarace modulu jsme deklarovali objekt ListView, objekt ListItem, objekt ImageList a konstantní proměnnou s hodnotou řetězce LV.

Dim lvwList As MSComctlLib.ListView
Dim lvwItem As MSComctlLib.ListItem
Dim ObjImgList As MSComctlLib.ImageList
Const prfx As String = "X"

lvwList Proměnná je deklarována jako objekt ListView, lvwItem je deklarován jako Položka seznamu Objekt ovládacího prvku ListView, ObjImgList je deklarován jako Seznam obrázků Objekt. ImageList Object je další ovládací prvek ActiveX, který lze načíst s ikonami obrázků pro použití v TreeView, ListView ovládacích prvcích. Ovládací prvek ImageList si prozatím ponecháme stranou a použijeme jej později. Konstanta Prfx se používá v ListItems.Add klíč–hodnota metody prefix, jeden z volitelné parametry. Pár klíč–hodnota musí být typu String.

LoadListView() Funkce je hlavním programem.

Název ovládacího prvku ListView ve formuláři je ListView1 . První příkaz v programu:

Set lvwList = Me.ListView1.Object 

Přiřadí ListView1 ovládací prvek na formuláři do proměnné objektu lvwList deklarováno v oblasti globálních deklarací.

Dále se připravíme na načtení informací o záhlaví sloupce. Nejprve inicializujeme objekt ColumnHeader, abychom zajistili, že je prázdný. Při opakovaném spouštění programu má řízení tendenci uchovávat dříve načtené hodnoty v ovladači. Když tento formulář otevřete a zavřete více než jednou, po deaktivaci ColumnHeaders.Clear prohlášení, poznáte rozdíl. Do ovládacího prvku se pokaždé přidá stejná sada nadpisů a zobrazí se v ovládacím prvku s prázdnými řádky níže.

Toto můžete zkontrolovat a potvrdit ručně. Proveďte následující:

  1. Otevřete ukázkový formulář a poté jej zavřete

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

  3. Klikněte pravým tlačítkem na ovládací prvek ListView, zvýrazněte Objekt ListViewCtrl Možnost a vyberte Vlastnosti ze zobrazeného seznamu.

  4. Vyberte kartu se štítkem Záhlaví sloupců.

  5. Zde můžete najít první záhlaví sloupce Název v ovládacím prvku Text a nad ovládacím prvkem Text hodnotu indexu 1.

  6. Namiřte ukazatel myši na pravou stranu pole Indexové číslo. Zobrazí se ovládací prvek se šipkami směřujícími doleva a doprava.

  7. Kliknutím na šipku vpravo zobrazíte další popisky sloupců jeden po druhém v ovládacím prvku Text se změnou indexových čísel.

  8. Pokud formulář otevřete a zavřete ještě jednou, výše uvedená karta bude mít dvě sady stejných štítků záhlaví sloupců.

Syntaxe metody ColumnHeaders.Add je následující:
lvwList.ColumnHeaders.Add(Index, Key, Text, Width, Alignment, Icon)

Všechny parametry jsou volitelné.

With lvwList
    .ColumnHeaders.Clear 'initialize header area
'Parameter List:
'Syntax: .ColumnHeaders.Add Index, Key, Text, Width, Alignment, Icon
    .ColumnHeaders.Add , , "Name", 2500
    .ColumnHeaders.Add , , "Age", 1200
    .ColumnHeaders.Add , , "Height", 1200
    .ColumnHeaders.Add , , "weight", 1200
    .ColumnHeaders.Add , , "Class", 1200
 End With 

Hodnota indexu je automaticky přiřazena jako 1, 2, 3 jako běžící sériová čísla.

Klíč value je datového typu String, ale nepoužívá se pro záhlaví sloupců, v případě potřeby ji lze použít.

Text Hodnota se na ovládacím prvku zobrazí jako popisky sloupců.

Na základě velikosti šířky dat požadované k zobrazení pod záhlavím sloupců můžeme přiřadit přibližnou hodnotu šířky v pixelech.

Pokud je vynechána hodnota zarovnání textu, pak zarovnání doleva (0 - lvwAlignmentLeft ) hodnota je brána jako výchozí. Může být zarovnán vpravo (1 - lvwAlignmentRight ) nebo Zarovnání na střed (2 – lvwAlignmentCenter ).

Po načtení popisků záhlaví sloupců je dalším krokem načtení hodnoty prvního řádku prvního sloupce prvního záznamu. Předtím musíme inicializovat ListItems Objekt s následujícím segmentem kódu:

'Initialize ListView Control
  While lvwList.ListItems.Count > 0
        lvwList.ListItems.Remove (1)
  Wend

Další blok kódu načte položky seznamu záznamů jeden řádek po druhém a celkem deset řádků některých konstantních hodnot s několika změnami pro účely ukázky. Tento proces jsme umístili do Pro...Další smyčka spustí desetkrát a vytvoří deset řádků dat.

With lvwList
    For intCounter = 1 To 10
        strKey = prfx & CStr(intCounter) '
  'Syntax: .ListItems.Add(Index, Key, Text, Icon, SmallIcon)
        Set lvwItem = .ListItems.Add(, strKey, "Student " & intCounter)
        
  'Add next columns of data as sub-items of ListItem
        With lvwItem
  ' Syntax: .ListSubItems.Add Index,Key,Text,Report Icon,TooltipText
            .ListSubItems.Add , strKey & CStr(intCounter), CStr(5 + intCounter)
            .ListSubItems.Add , strKey & CStr(intCounter + 1), CStr(135 + intCounter)
            .ListSubItems.Add , strKey & CStr(intCounter + 2), CStr(40 + intCounter)
            .ListSubItems.Add , strKey & CStr(intCounter + 3), ("Class:" & intCounter)

       End With
    Next
    'reset lvwItem object
    Set lvwItem = Nothing
End With

První příkaz v cyklu For...Next strKey =prfx &Cstr(intcounter) připraví jedinečnou hodnotu klíče pro první položku ListItem (první sloupec).

Všechny parametry ListItems.Add metoda je volitelná a první tři parametry Index, Key, Text jsou přiřazeny ve stejném pořadí jako záhlaví sloupců a další dva parametry jsou ikona a odkaz na malý obrázek ikony.

Když je hodnota řádku prvního sloupce přiřazena k ListItem (lvwList.ListItems), tento odkaz na objekt se uloží do lvwItem objekt pro snadné volání dílčího objektu další úrovně (objekt ListSubItems), abyste se vyhnuli psaní dlouhého odkazu na objekt:

lvwList.ListItems.Item(index).ListSubItems.Add()

Vyjádřeno v krátké podobě pomocí lvwItem.ListSubItems.Add()

První tři parametry a pořadí předávání metody ListSubItems.Add() jsou stejné jako u metody ListItem, poté se objeví ikona odkaz na obrázek následovaný popiskem Parametr textu.

K hodnotě klíče každého sloupce jsem přidal aktuální průběžnou hodnotu řídicí proměnné For...Next Loop + nějakou hodnotu, aby byla jedinečná ve všech sloupcích. Hodnotu parametru Key lze vynechat, ale je dobré si na ni zvyknout.

Metoda ListSubItems.Add() je volána čtyřikrát, aby se do ovládacího prvku ListView přidal druhý sloupec.

Tyto kroky se opakují ještě devětkrát, aby se načetlo všech deset vzorových záznamů do ovládacího prvku ListView.

Výše uvedená databáze ListView Control Demo je připojena pro okamžité spuštění a učení.

V další části našeho tutoriálu se naučíme, jak hledat a najít hodnotu v ovládacím prvku zobrazení seznamu a jak přeskupit sloupce, jako to děláme v zobrazení datového listu.

  1. Výukový program pro ovládání Microsoft TreeView
  2. Vytvoření přístupové nabídky pomocí TreeView Control
  3. Přiřazení obrázků k uzlům TreeView
  4. Přiřazení obrázků k uzlům TreeView-2
  5. Ovládací prvek TreeView Zaškrtávací políčko Přidat Odstranit
  6. Rozbalovací přístup TreeView ImageCombo
  7. Změňte uspořádání uzlů TreeView přetažením
  8. Ovládání ListView s MS-Access TreeView
  9. Události přetažení ovládacího prvku ListView
  10. Ovládání stromu pomocí podformulářů

  1. Jak získat efektivní řešení zablokování SQL Serveru v C# pomocí ADO?

  2. Obnovte databázi SQLite

  3. Jak vrátit seznam dostupných znakových sad v MySQL

  4. Jaký je nejlepší způsob zobrazení obrázku z databáze serveru SQL v asp.net?