< návrat zpět

MS Excel


Téma: Samovolné scollovani na MultiPage rss

Zaslal/a 14.2.2016 20:00

Dobrý den, mám UserForm na kterém mám MultiPage s několika Page. Jelikož na jedné Page mám hodně prvku, tak jsem byl nucen použit na této Page ScrollBarsVertical. Problém je v tom, že pokud přecházím z jednoho prvku na druhý na této Page, tak se tato Page samovolně scrolluje. Nikde jsem nenašel žádnou vlastnost, která by bránila samovolnému scrollovani. Ptám se je nějaká možnost jak tomu zabranit?

Děkuji.

Zaslat odpověď >

#030087
avatar
Aktivní prvek MultiPage nepatří k běžným aktivním prvkům formuláře. Scrolling rovněž ne. Kombinace obou možností je dost unikátní nastavení a asi budete těžko hledat někoho, kdo s tím má přímou zkušenost. I když formuláře používám rutinně, MultiPage jsem použil za 15 let dvakrát a se scrollingem pro Page nikdy. Pokud bych na Page potřeboval pracovat se seznamy, roloval bych uvnitř prvků na pevné Page.
Nejlepší by bylo poslat ukázku s popisem, co se v ní chová nemravně a jak by se to podle vás chovat mělo. Obávám se, že bez toho vám nikdo neporadí.citovat
icon #030088
eLCHa
Pokud rozumím, tak nechápu smysl. Jaký je význam toho, že aktivní prvek není vidět? Asi by šlo si pohrát se ScrollTopMultiPage1.Pages("Page1").ScrollTop = 0a spojit to s nějakou událostí. Přemýšlet nad tím nebudu, protože je to zatím pro mne na nic.citovat
#030095
avatar
Upřesním, použit výše zmíněnou kombinaci jsem byl donucen faktem, že používám hodně aktivních prvků, které potřebují zobrazit na jedné Page. Problém je v tom, že když se přepínám mezi jednotlivými aktivními prvky, tak dochází k samovolnému posunování posuvníku na této Page.
Příloha: zip30095_nalezy.zip (45kB, staženo 36x)
citovat
#030096
avatar
Můj první dojem říká, že nejde o samovolný scrolling, ale o logickou snahu formuláře, aby zavolaný aktivní prvek byl viditelný. Pokud mám pravdu, cesta k nápravě by měla být jednoduchá: nastavte pořadí volaných prvků do takové posloupnosti, která bude scrolling minimalizovat. Zejména nedovolte, aby se v automatické aktivitě střídala pole z horní a dolní části Page (nabídka View / Tab Order).
Edit: už jenom zvětšení formuláře na celou výšku mého monitoru a využití získaného prostoru pro roztažení Page snížilo scrolling na minimum. Můj předpoklad o příčině jevu se tím jen posílil.citovat
#030097
avatar
Pro vovka.h, děkuji za nápovědu. Na tuto možnost jsem zapomněl. Hned to jdu vyzkoušet.citovat
#030147
avatar
Tak jsem vyzkoušel uspořádat prvky pomoci Tab/Wiew Order, ale bez úspěchu. Výšku formuláře nemůžu zvětšit, protože jsem limitován rozlišením projektoru, pomoci kterého je formulář zobrazován.citovat
#030152
avatar
Zkusil jsem do vašeho formuláře sáhnout sám. Pravdu máte i nemáte. Máte ji v tom, že to není moc průhledné, není ale pravda, že by to nešlo. Zvolil jste jen hodně složitou organizaci formuláře a za tu složitost platíte příslušnou daň.
Každý aktivní prvek ve formuláři má vlastnosti TabStop a TabIndex. TabStop určuje, jestli se má na prvku zastavit kurzor, když je na řadě. TabIndex definuje logické pořadí prvků pro jejich postupnou aktivaci při procházení prvků pomocí Tab (případně se aktivovat po opuštění předchozího prvku).
Celou vaši hru komplikuje použití rámečků (Frames), v rámci nichž platí TabIndex jako interní očíslování prvků uvnitř rámečku. Služba View / TabOrder kulturním způsobem obsluhuje vlastnost TabIndex ve vybrané oblasti. Pokud chcete nastavovat pořadí aktivních prvků, nastavte nejdřív pomocí ní pořadí rámečků na formuláři. Následně volte jednotlivé rámečky a nastavte pořadí prvků v nich. Nabídka View / TabOrder pro pořadí uvnitř rámečku k dispozici je také. Jinak je možné pořadí prvků nastavit ručně přečíslováním vlastnosti TabIndex (jde vždy o pořadí uvnitř jeho lokální oblasti (rámečku, pokud v něm prvek leží).
Ruční nastavení vlastností TabIndex a TabStop mne nikdy nezklamalo a jsem přesvědčený, že by nezklamalo ani vás. Když nechcete, aby vám Page skákala jako koza, nenuťte ji k tomu přechodem na prvek, který právě není vidět. Pokud vás logika formuláře nutí dodržet pořadí položek, změňte uspořádání formuláře tak, aby automatický scrolling probíhal jen v jednom směru a nevracel se.
Edit: můžete se prakticky zcela zbavit automatické navigace ve formuláři. Zrušte nastavení TabStop pro všechny prvky formuláře; formulář pak bude reagovat výhradně na výběr prvku pomocí myši.citovat
#030159
avatar
Provedl jsem nastavení vlastnosti TabIndex a TabStop, tak jak jste navrhoval. Skutečně se chovaní formuláře, potažmo Page umravnilo. Za tyto cenné poznatky ještě jednou moc děkuji.
Tímto považuji problém za vyřešeny a toto vlákno se muže uzamknout.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje