Access
 sql >> база данни >  >> RDS >> Access

Урок за управление на Activex ListView-01

Въведение.

В MS-Access имаме ListBox контрол и най-вече ще има само няколко колони с данни, за да намери елемента(ите) бързо. Изходните данни за тази контрола се въвеждат директно в свойството на ред-източник като списък със стойности или се зареждат от изходната таблица или заявка. Контролата Combo Box запазва данните си скрити и се нуждае от щракване, за да разкрие списъка за избор. Тези обекти вече са вградени като контроли за достъп.

Но има още един контрол на списъка, който винаги използваме в нашата база данни, можете ли да познаете какво е това? Да, контролата за изглед на лист с данни. Записите се показват от Таблица, Заявка. Във всички тези случаи виждаме данните в изгледа на лист с данни като голям списък.

Но има и други групи контроли в Microsoft Access, ActiveX контролите. Вече сме запознати с една от тези контроли - контролата за общ диалог или контролата на файловия браузър.

Тук темата е Windows ListView Control. Можете да го визуализирате като обект, подобен на Windows Explorer, където можете да показвате елементи с икони на изображения, малки икони на изображения, като списък или като панела за подробен изглед на Explorer. Можете да заредите вашите данни за таблица/заявка в тази контрола, за да ги покажете в изглед на лист с данни, да пренаредите колоните или редовете, да сортирате редовете, да покажете изображения до елементи и т.н. Други езици за програмиране, като VB6, VB.NET, C# и др., използват Windows ListView Control. Ще видим как можем да го използваме в базата данни на Microsoft Access.

По-долу е даден прост демо екран на ListView с някои бързи примерни данни:

Ще направим горния образен дисплей като отправна точка на урока за контрол на ListView. Качихме десет реда данни в контролата ListView, с няколко реда от VBA кода. ActiveX Control ListView може да не намерите в съществуващия списък с ActiveX контроли в Access. Трябва да добавим библиотечния файл на този контрол MSCOMCTL.OCX от C:\Windows\System32 папка в Access Reference Библиотека. След като бъде добавен, можете да намерите тази контрола с името Microsoft ListView Control, версия 6.0 наред с други ActiveX контроли.

И така, нека добавим MSCOMCTL.OCX Библиотечен файл към нашата база данни. Това е изходната библиотека на ActiveX контроли като ListView, TreeView, ImageList. Ако вече сте преминали през нашия по-ранен TreeView контролни учебни страници, тогава вече сте запознати с този контрол.

Файл с библиотека с общи контроли на Windows.

Направете следното, за да прикачите файла MSCOMCTL.OCX:

  1. Отворете вашата база данни и отворете прозореца за редактиране на VBA (Alt+F11).

  2. Изберете Референции... от Tools Menu .

  3. Щракнете върху бутона Преглед, за да намерите MSCOMCTL.OCX файл (Общи контроли на Microsoft Windows.)

  4. Потърсете горния файл в C:\Windows\System32\ Папка, ако имате 32-битова система или имате операционна система Windows 11.

  5. Ако не можете да го намерите там, потърсете папката C:\Windows\sysWOW64\ (64-битова система), и там ще намерите този файл.

  6. Изберете файла MSCOMCTL.OCX и щракнете върху Отваряне Команден бутон за прикачване на файла към вашата база данни.

  7. Натиснете отново Alt+F11, за да се върнете в прозореца на базата данни.

Нека проектираме примерен формуляр, който да съответства на изображението по-горе, дадено в горната част на тази страница.

  1. Създайте нов празен формуляр.

  2. Изберете бутона за управление ActiveX от групата опции за контроли.

  3. Намерете и изберете Microsoft ListView Control от показания списък и щракнете върху бутона OK, за да вмъкнете контрола ListView в секцията с подробности на формуляра.

  4. Щракнете и задръжте дръжката за преоразмеряване на контролата, в долния десен ъгъл, плъзнете надясно и надолу, за да я направите достатъчно голяма, като примерното изображение, дадено по-горе.

  5. Плъзнете самата контрола ListView надясно и надолу, за да дадете малко поле наляво и оставете достатъчно място отгоре, за да създадете етикет за заглавие.

  6. Щракнете върху контролата ListView, за да я изберете, ако не е в избрано състояние.

  7. Покажете листа със свойства и променете името на контролата ListView на ListView1 .

  8. Създайте контрола за етикет по-горе и променете Надписа стойност на свойството към Урок за управление на ListView . Можете да форматирате етикета Caption с размер на шрифта, цвят и т.н., както ви харесва.

  9. Създайте команден бутон под контролата LlistView и променете нейната стойност на свойството Name на cmdClose и неговия Надпис Стойност на свойството за Затваряне. Завършеният дизайн ще изглежда по следния начин, когато дизайнът ви е завършен:

  10. Сега запазете формуляра с името:ListViewTutorial и запазете формуляра в изглед за проектиране.

  11. Натиснете Alt+F11, за да се върнете към прозореца на модула за клас на формуляра.

    Кодът на VBA.

  12. Копирайте и поставете следния код във VBA модула на формуляра, като замените съществуващите редове код, ако има такива:

    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. Запазете формуляра с името ListView Control Tutorial-01.

    Демонационен изглед на формуляра.

  14. Отворете формуляра в нормален изглед, за да разгледате нашето творение.

    Ако намерите формуляра си със следния дисплей, подобен на изображение, значи сте на прав път.

    Трябва да направим някои промени в настройките за свойства на контролата Listview. Променихме името на контролата ListView като ListView1 в листа със свойства на достъпа. Но контролата ListView има свой собствен лист със свойства. Ще използваме собствения лист със свойства на контролата ListView, за да направим промени в контролата. Някои от стойностите на свойствата се появяват и в листа със свойства на достъпа.

  15. Щракнете с десния бутон върху контролата ListView и маркирайте ListViewCtrl Object опция от показания списък с опции и изберете Свойства от показаното контекстно меню.

  16. Изображението на листа със свойства е дадено по-долу:

    В листа със свойства в горната част има раздели с групи от други опции. По подразбиране сме в раздела Общи. В раздела Общи има опции от лявата страна на контролата и квадратчета за отметка вдясно. Ще направим промени само в две свойства, контролата ListView във формуляра е в деактивирано състояние по подразбиране, трябва да я активираме.

    Контролният дисплей на ListView може да бъде променен на различни режими, като елементи от списък с големи икони на изображение, с малки икони на изображения, в ListView или в изглед на отчет – както е показано на първото изображение по-горе.

  17. Активирайте контролата ListView, като поставите отметка в Активирано Имот, от дясната страна.

  18. Изберете lvwReport опция от Преглед падащ списък от лявата страна.

  19. Кликнете върху Прилагане Бутон на контрола, за да запазите промяната.

  20. Щракнете върху бутона OK, за да затворите листа със свойства.

  21. Запазете формуляра с промените и след това го отворете в нормален изглед.

  22. Ще откриете, че същият резултат изглежда като изображението, дадено в горната част на тази страница, с изключение на цвета на фона на формуляра и други свойства на формуляра.

Функционалната диаграма на програмата.

Преди да преминете към VBA кода, ще бъде интересно да знаете как елементите от данни се зареждат в контролата ListView. Подреждането на данните за контрола ListBox е просто. Но процедурата за зареждане на данни на контролата ListView е напълно различна. Не е в логическия ред, който обикновено възприемаме. След като знаете потока от данни от източника към един ред под формата на диаграма или нека го наречем диаграма, няма да е трудно да разберете VBA кода и какво прави.

Диаграмата на потока от данни.

  1. Лявото поле в горния ъгъл представлява контролата ListView.

  2. Като първата стъпка от подготовката на списъка е да създадете етикети за заглавия на списъка или заглавия на колони. Можете да видите това на диаграмата, заглавията на колоните са в червен цвят. Това можете да сравните със заглавията на полетата в изгледа на таблица с данни. Всяко заглавие на колона се зарежда в контролата ListView в члена на обекта ColumnHeaders. ColumnHeaders.Add() на контролата ListView методът се извиква пет пъти за присвояване на етикет на всяка колона, един след друг, в контролата ListView.

  3. Важно е да се отбележат действията, необходими за изпълнение на следващите пет стъпки. Те представляват един запис с пет полета с данни. Но те се зареждат в контролата ListView в два различни набора от стъпки или да кажем, че се зареждат в два различни члена на обекта (ListItems и ListSubItems ) на контролата ListView.

    1. Първото поле (Стойност на колоната) се зарежда в ListItems на контролата ListView Добавяне на обект метод. Ако погледнете изображението отгоре, стойността на първата колона на първия запис Студент1 се зарежда в ListItems Обект (ListView .ListItems.Добавяне метод) на контролата ListView.

    2. От 2-ра колона нататък всички други стойности на колоните се зареждат в ListSubItems Обект на ListItems Обект, един след друг. ListSubItems.Add Метод ( ListView.ListItems .Item(x).ListSubItems.Add ) се извиква четири пъти, за да вмъкне стойностите в Възраст, Височина, Тегло, и Клас колони поотделно.

  4. Тези действия на две нива са необходими за зареждане на пълен ред стойности в контролата ListView. диаграмата е начертана с два реда данни в контролата ListView.

Имайки предвид горната снимка, сигурен съм, че няма да имате затруднения да разберете какво прави горният VBA код в програмата.

Нека да преминем към VBA код по сегменти.

В областта на глобалната декларация на модула сме декларирали обекта ListView, обекта ListItem, обекта ImageList и константна променлива с низовата стойност LV.

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

lvwList Променливата е декларирана като обект ListView, lvwItem е деклариран като ListItem Обект на контрола ListView, ObjImgList е деклариран като ImageList Обект. ImageList Object е друга ActiveX контрола, която може да бъде заредена с икони на изображения за използване в TreeView, ListView контроли. За момента ще оставим контролата ImageList настрана и ще я вземем по-късно. Константата Prfx се използва в ListItems.Add Ключ-стойност на метода префикс, един от незадължителни параметри. Ключ-стойност трябва да е от тип низ.

LoadListView() Функцията е основната програма.

Името на нашата контрола ListView във формуляра е ListView1 . Първото изявление в програмата:

Set lvwList = Me.ListView1.Object 

Присвоява ListView1 контрол върху формуляра в обектната променлива lvwList декларирано в областта за глобални декларации.

След това ще се подготвим да заредим информацията за заглавката на колоната. Първо, ние инициализираме обекта ColumnHeader, за да гарантираме, че е празен. Когато многократно стартираме програмата, контролата има тенденция да запазва по-рано заредените стойности в контролата. Когато отворите и затворите този формуляр повече от веднъж, след деактивиране на ColumnHeaders.Clear изявление, ще разберете разликата. Един и същ набор от заглавия се добавя към контролата всеки път и ще се показва в контролата с празни редове по-долу.

Това можете да проверите и потвърдите ръчно. Направете следното:

  1. Отворете демо формуляра веднъж, след което затворете формуляра,

  2. Отворете формуляра в Design View.

  3. Щракнете с десния бутон върху контролата ListView, маркирайте ListViewCtrl обекта Опция и изберете Свойства от показания списък.

  4. Изберете раздела с етикета Заглавки на колони.

  5. Там можете да намерите първото заглавие на колона Име в текстова контрола и над текстовата контрола стойността на индекса 1.

  6. Насочете показалеца на мишката към дясната страна на полето с номер на индекса. Там ще се появи контрола със стрелки, сочещи наляво, надясно.

  7. Щракнете върху стрелката надясно, за да се покажат други етикети на колони един по един в контролата Текст, с промяната на номерата на индекса.

  8. Ако отворите и затворите формуляра още веднъж, горният раздел ще има два набора от едни и същи етикети за заглавия на колони.

Синтаксисът на метода ColumnHeaders.Add е както следва:
lvwList.ColumnHeaders.Add(Index, Key, Text, Width, Alignment, Icon)

Всички параметри са по избор.

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 

Стойността на индекса автоматично се присвоява като 1, 2, 3 като текущи серийни номера.

Ключът стойността е от тип данни String, но не се използва за заглавки на колони, ако е необходимо може да се използва.

Текст Стойността се показва на контролата като Етикети на колони.

Въз основа на размера на ширината на данните, необходим за показване под заглавията на колоните, можем да зададем приблизителна стойност на ширината в пиксели.

Ако стойността за подравняване на текста е пропусната, тогава подравняването вляво (0 - lvwAlignmentLeft ) стойността се приема по подразбиране. Може да бъде подравнено вдясно (1 - lvwAlignmentRight ) или центрирано (2 - lvwAlignmentCenter). ).

След зареждане на етикетите на заглавията на колоните следващата стъпка е да заредите стойността на първата колона от първия ред на първия запис. Преди това трябва да инициализираме ListItems Обект със следния кодов сегмент:

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

Следващият блок Code зарежда елементите от списъка със записи един ред наведнъж и общо десет реда с някои константни стойности с малко промени за демонстрационни цели. Този процес сме поставили в За...Следващото цикъл изпълнява десет пъти, създавайки десет реда данни.

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

Първото изявление в цикъла For...Next strKey =prfx &Cstr(intcounter) подготвя уникалната стойност на ключ за първия ListItem (първата колона).

Всички параметри на ListItems.Add методът е по избор и първите три параметъра Index, Key, Text се присвояват в същия ред като заглавките на колони, а другите два параметъра са икона и препратка към изображение на малка икона.

Когато стойността на реда на първата колона е присвоена на ListItem (lvwList.ListItems), тази препратка към обекта се записва в lvwItem обект за лесно извикване на подобект от следващо ниво (обект ListSubItems), за да се избегне писането на дълга препратка към обект:

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

Изразено в кратка форма с lvwItem.ListSubItems.Add()

Първите три параметъра и редът на предаване на метода ListSubItems.Add() са същите като ListItem, след което идва Иконата препратка към изображение, последвана от подсказка Текстов параметър.

Към стойността на Key на всяка колона добавих текущата текуща текуща стойност на контролната променлива на For...Next Loop + някаква стойност, за да я направя уникална за всички колони. Стойността на параметъра Key може да бъде пропусната, но е добра идея да свикнете с нея.

Методът ListSubItems.Add() се извиква четири пъти, за да добави втората колона нататък в контролата ListView.

Тези стъпки се повтарят още девет пъти, за да се заредят всичките десет примерни записа в контролата ListView.

Посочената по-горе ListView Control Demo база данни е прикачена за незабавно изпълнение и обучение.

В следващата сесия на нашия урок ще научим как да търсим и намираме стойност от контролата за изглед на списък и как да пренареждаме колоните, както правим в изгледа на лист с данни.

  1. Урок за контрол на Microsoft TreeView
  2. Създаване на меню за достъп с TreeView Control
  3. Присвояване на изображения към възлите на TreeView
  4. Присвояване на изображения на TreeView възли-2
  5. TreeView Control Отметка Добавяне Изтриване
  6. DreeView ImageCombo падащ достъп
  7. Пренаредете възлите на TreeView чрез плъзгане и пускане
  8. ListView Control с MS-Access TreeView
  9. ListView Control Drag Drop Events
  10. Управление на TreeView с подформуляри

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ден на разработчика за достъп в Холандия 2019 г. – 14 септември

  2. Присъединете се към нас за Microsoft Access с SQL Server Academy Част II

  3. Използване на данни за MS Access при сливане на поща

  4. *ПРЕДУПРЕЖДЕНИЕ* Актуализацията на Windows прекъсва чистите приложения на Access – налична е корекция

  5. Как да създадете формуляр за навигация в Microsoft Access