Postavitev ne razporedi kontrolnika
V pogledu obrazca kontrolnik ostane tam, kamor je bil postavljen v načrtu, medtem ko se druga območja kontrolnika
WklDockLayout ali druga stran kontrolnika WklSplitter premikajo; ali pa se sprva premika, nato pa se ob
spremembi velikosti okna odmakne od razporeditve; ali pa območje manjka v PaneNames, FirstAreas ali
SecondAreas.
Okolje
WKL Forms Object Library 1.16 (WklSplitter) oziroma 1.17 (WklDockLayout) in novejša, Accessovi obrazci ter obrazci UserForm v Excelu in Wordu.
Vzrok
Območja se vzamejo iz Panes (pri razdelilniku iz FirstControls in SecondControls) ali pa se, kadar so ti
prazni, poiščejo po položaju, ko se obrazec prvič prikaže v pogledu obrazca:
- Postavitev: štejejo samo vidni kontrolniki lastnega odseka postavitve, ki ležijo znotraj njenega pravokotnika; jemljejo se po vrsti z njenih robov – vsakič kontrolnik vzdolž celotnega roba, najtanjši najprej; največji preostali kontrolnik zapolni preostanek. Kontrolnik, ki se ne dotika nobenega roba preostalega prostora ali leži delno zunaj postavitve, ni območje.
- Razdelilnik: štejejo samo kontrolniki njegovega odseka, ki ležijo ob vrstici razdelilnika v razdalji do 20 slikovnih pik (300 twipov); kontrolnik nad obema območjema ali pod njima ni sosed.
- Ročno nastavljeno sidranje: razdelilnik računa iz položajev v načrtu in potrebuje območja, zasidrana levo zgoraj; Access kontrolnik, zasidran desno ali spodaj, raztegne, ne da bi o tem obvestil objektni model. Postavitev sidranje svojih območij nastavi sama glede na njihov položaj (levo, obojestransko, desno); sidranje, ki ga pozneje spremenite ročno, se ne ujema več s conami.
- Položaji se preberejo enkrat: načrt se prebere enkrat ob vsakem odprtju. Kontrolnikov, ki jih pozneje premakne koda, postavitev ne upošteva, dokler ne pokličete
Refresh. - Skrito s kodo: kontrolnik, skrit z
Visible, obdrži svoj prostor v postavitvi; samo zloženo območje (PaneCollapsed) ga prepusti drugim.
Rešitev
- Preverite, katera območja uporablja kontrolnik:
Debug.Print Me!Layout1.Object.PaneNames(pogled obrazca ali pogled načrta) aliFirstAreasinSecondAreasrazdelilnika v pogledu obrazca. - Odprite oblikovalnik (
[...]v vrstici Po meri): stran Območja (postavitev) ali Razdelilnik (razdelilnik) prikaže najdena območja in predogled, izrisan iz kontrolnikov obrazca. Pri postavitvi ukaz Prevzemi po položaju zapiše najdena območja vPanes; tam popravite cone in imena. - Kjer je položaj dvoumen, območja navedite izrecno:
Panes(na primerlstKrmarjenje=Left; sfGlavni=Fill) aliFirstControlsinSecondControls. - Razdelilnik: sidranje območij na obeh straneh nastavite na levo zgoraj. Postavitev: sidranja ne nastavljajte ročno; v oblikovalniku vklopite Nastavi ob uporabi in potrdite z OK, kar sidranje vsakega območja nastavi glede na njegov položaj.
- Ko je koda območja trajno premaknila, pokličite
Refresh; če želite območje umakniti, namestoVisiblenastavitePaneCollapsed.
sl/wiki/msaccess/comctl/troubleshooting/control-not-arranged-by-the-layout.txt · Last modified: by Wolfgang van der Stille