Izbira območij postavitve
Določite, katere kontrolnike WklDockLayout razporedi, v kateri coni in s katero najmanjšo velikostjo, namesto da
jih poišče po položaju – na primer kadar bi bilo mogoče dve območji razumeti na oba načina ali kadar koda območja
prikazuje in skriva.
Zahteva WKL Forms Object Library 1.23 ali novejšo različico.
Pregled rešitve
Panes navaja območja v vrstnem redu pripenjanja kot Name=Zone ali Name=Zone,MinSize (v twipih), ločena s
podpičji; cone so Left, Top, Right, Bottom in Fill. Name=Zone:Group območja spremeni v kartice ene
skupine zavihkov (Izdelava stranske vrstice s karticami); z najmanjšo velikostjo je
skupina navedena prva, Name=Zone:Group,MinSize (sfUrejanje=Right:Stran,3402; Right,3402:Stran je zavrnjeno).
Skupina je eno območje, njena najmanjša velikost pa je največja med najmanjšimi velikostmi njenih kartic. Če je
Panes prazen, postavitev območja poišče po položaju. PaneNames v obeh primerih vrne območja, ki jih postavitev
uporablja. MinPaneSize je najmanjša velikost za vnose brez lastne. Refresh znova prebere položaje, ko je koda
kontrolnike trajno premaknila.
Izvedba
V oblikovalniku ([...] v vrstici Po meri), stran Območja: Prevzemi po položaju napolni seznam z
območji, najdenimi po položaju; tam spremenite cone in najmanjše velikosti. Enako s kodo:
' Navigation outermost on the left, a log strip at the bottom under the main area only. Me!Layout1.Object.Panes = "sfKrmarjenje=Left,1500; sfGlavni=Fill; sfDnevnik=Bottom,800" Debug.Print Me!Layout1.Object.PaneNames ' sfKrmarjenje;sfGlavni;sfDnevnik
Vrstni red pripenjanja je pomemben: prejšnji vnos je pripet bolj zunaj in se razteza čez celotno višino ali širino, ki
ostane, ko pride na vrsto. Če bi bil sfDnevnik=Bottom naveden pred sfKrmarjenje=Left, bi se trak dnevnika raztezal čez
celotno širino, tudi pod krmarjenjem.
Spreminjanje območja med izvajanjem:
With Me!Layout1.Object
.PaneZone("sfDnevnik") = wdzRight ' move the log to the right edge
.PaneSize("sfKrmarjenje") = 3000 ' width of a left or right area, height of a top or bottom one
.PaneCollapsed("sfDnevnik") = True ' take it away: the others get its room, its strip stays at the edge
End With
Območje zložite z PaneCollapsed, ne z nastavitvijo njegove lastnosti Visible: postavitev razporeja glede na svoje
cone, velikosti in zložena območja, zato kontrolnik, skrit z Visible, obdrži svoj prostor.
Opombe
- Pri iskanju po položaju postavitev kontrolnike znotraj svojega pravokotnika jemlje z robov po vrsti: kontrolnik vzdolž celotnega roba se pripne tam, najtanjši prvi; največji preostali kontrolnik zapolni preostanek. Štejejo samo vidni kontrolniki v razdelku, v katerem je postavitev.
- Vsako pripeto območje ohrani širino ali višino iz načrta. Ko okno postane premajhno, se najprej skrči območje zapolnitve, nato pripeta območja od znotraj navzven, vsako do svoje najmanjše velikosti.
- Neveljavno besedilo
Panestakoj sproži napakowkeInvalidValue; ime, ki ga obrazec nima, jo sproži, ko postavitev prvič razporeja. - Nastavitev
Panesv pogledu obrazca območja prebere znova, tako kotRefresh, in zavrže uporabnikovo razporeditev. - Sidra območij prepustite oblikovalniku: z Nastavi ob uporabi vsakemu območju dodeli vodoravno sidro njegovega mesta, navpično sidro pa pusti zgoraj. Ne nastavljajte jih ročno.