Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Prikaz zapisov kot dvovrstičnega seznama

Prikaz zapisov kot dvovrstičnega seznama

Kratek seznam zapisov prikažite tako kot Outlook in Teams – krepek naslov, siva vrstica s podrobnostmi, barvno stanje in gumb za vsak vnos, brez glav stolpcev –, na primer odprte seje na nadzorni plošči, z gumbom Končaj le tam, kjer je sejo mogoče končati.

Zahteva WKL Forms Object Library 1.36 ali novejšo različico.

Pregled rešitve

  • Pogled kontrolnika WklGrid. ViewMode nastavite na wgvList in vnos opišite v ItemTemplate; vir zapisov, strežniški način, izbor, LinkMasterFields sosednjega podobrazca, BeforeDelete in DeleteSelected delujejo enako kot v mreži. Neprekinjeni obrazec tega ne zmore, saj lahko vsebuje le en primerek kontrolnika ActiveX.
  • Predloga navaja polja: title (po želji kot povezava), do dve vrstici lines z Accessovimi oblikami, kapsulo status s poljem vrste, badge, glyph in do dva gumba commands, katerih vidnost in omogočenost izhajata iz polj zapisa.
  • Dogodki: ItemClick za vnos, LinkClick za povezavo, ItemCommand za gumb. Mreža se sama ne odzove na nobenega od njih. RowSelect tako kot v tabeli sporoči, da je uporabnik izbral drug vnos (s tipkami ali klikom), ne pa, da je koda nastavila SelectedKey. Tabela vseh dogodkov pogleda seznama je v opombah k ViewMode v referenčnem priročniku API.

Izvedba

Tabela iz primera, ustvarjena enkrat (proceduro zaženite iz okna Immediate):

Public Sub CreateListSample()
    With CurrentDb
        .Execute "CREATE TABLE tblSeja (ID LONG CONSTRAINT PK_Seja PRIMARY KEY, Oseba TEXT(50), " & _
                 "Nacin TEXT(20), Izvor TEXT(30), PoteceOb DATETIME, Stanje TEXT(20), VrstaStanja TEXT(10), LahkoKonca YESNO)"
        .Execute "INSERT INTO tblSeja VALUES (1, 'Maja Novak', 'Windows', '10.0.4.21', #2026-10-07 18:02:00#, 'aktivna', 'ok', True)"
        .Execute "INSERT INTO tblSeja VALUES (2, 'Luka Horvat', 'Geslo', Null, #2026-10-07 19:30:00#, 'potekla', 'warn', False)"
    End With
End Sub

Obrazec frmStart vsebuje kontrolnik WklGrid z imenom grdSeje. Nastavitve navadno določite enkrat na strani oblikovalnika Seznam (list z lastnostmi, vrstica Po meri [...]); tukaj so nastavljene s kodo:

Option Compare Database
Option Explicit
 
Private Sub Form_Load()
    With Me!grdSeje.Object
        .RecordSource = "tblSeja"
        .KeyField = "ID"
        .ItemTemplate = "{""title"":{""field"":""Oseba"",""link"":true}," & _
            """lines"":[[{""field"":""Nacin""},{""field"":""Izvor""},{""field"":""PoteceOb"",""format"":""hh:nn""}]]," & _
            """status"":{""field"":""Stanje"",""kindField"":""VrstaStanja""}," & _
            """commands"":[{""key"":""koncaj"",""caption"":""Končaj"",""visibleField"":""LahkoKonca""}]}"
        .EmptyText = "Ni odprtih sej."
        .AllowDeletions = True
        .ViewMode = wgvList
    End With
End Sub
 
Private Sub grdSeje_LinkClick(ByVal Key As Variant, ByVal Field As String)
    DoCmd.OpenForm "frmOseba", WhereCondition:="SejaID = " & Key
End Sub
 
Private Sub grdSeje_ItemCommand(ByVal Key As Variant, ByVal Command As String)
    If Command = "koncaj" Then Me!grdSeje.Object.DeleteSelected
End Sub
 
Private Sub grdSeje_BeforeDelete(ByVal Key As Variant, ByVal Count As Long, Cancel As Integer, Confirm As Boolean)
    Confirm = False
    Cancel = (MsgBox("Želite končati sejo?", vbYesNo + vbQuestion) = vbNo)
End Sub

Seznam prikaže „Maja Novak“ v polkrepki pisavi, pod tem „Windows · 10.0.4.21 · 18:02“, zeleno stanje „aktivna“ in gumb Končaj; „Luka Horvat“ nima naslova IP (prazna vrednost in njeno ločilo sta izpuščena) in nima gumba, ker je LahkoKonca False.

Opombe

  • Null v vrstici s podrobnostmi se izpusti skupaj z ločilom; oblike so enake kot pri Accessovih stolpcih in sledijo področnim nastavitvam sistema Windows. Relativni časi („pred 5 min“) niso vgrajeni: izračunajte jih v poizvedbi.
  • Requery ohrani izbrani zapis (SelectedKey); pokličite ga iz časovnika, če želite osveževati seznam, kot so odprte seje.
  • Vnos je tako visok kot njegovo besedilo, razen če je nastavljen ItemHeight; besedilo, ki ne gre v vnos, se konča z „…“ in je v celoti prikazano v opisu orodja.
  • Tipkovnica: tipka Tab preide iz vnosa na njegove gumbe in naprej na naslednji kontrolnik; bralniki zaslona vsak vnos preberejo kot en stavek, povezavo in gumbe pa kot samostojne elemente.
  • DeleteSelected v ItemCommand se izvede takoj po koncu procedure, zato zgornji BeforeDelete doseže obrazec (VBA ne posreduje dogodka mreže, medtem ko teče katera od njenih dogodkovnih procedur). Koda za DeleteSelected v ItemCommand zapis še vidi; obvestilo, kot je „Seja je končana“, prikažite z WklToast v AfterDelete.
  • Seznam ne riše stolpcev. Če želite razvrščati po polju, ki ga vnosi ne prikazujejo, s kodo dodajte skrit stolpec: Set c = .Columns.Add("St"), c.Visible = False, c.SortDirection = wsdAscending.
  • Ploščice drugo ob drugi (kartice) niso del pogleda seznama.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/show-records-as-a-list.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille