Stran 1 od 1

ScrollBar za Frame

Objavljeno: 26.02.2011 13:06:01
Napisal/-a drago
Ne znam aktivirati ScrollBar-a za Frame. Imam naslednjo situacijo:
- Na Form-u imam tudi en panel, na katerega želim zaganjati različne vsebine (preglede), glede na dogajanje na formu.
- Te različne vsebine sem pripravil v obliki Frame-ov.
- Ti Frame-i imajo različne dimenzije
- Frame ima tudi lastnost HorzScrollBar in VertScrollBar.

Pričakoval sem, da se bo ScrollBar pojavil v primeru, če bo velikost Frama večja od panela, na katerega "položim" Frame.
Mogoče je pomembno tudi naslednje:
- Frame "položim" na panel tako da mi dam lastnost Parent := Panel;
- Frame ima lastnost: Align = alClient ( Da porabi cel panel, če je Frame majhen )

ScrollBar se pa ne pojavi. Tako ostane del Frame-a skrit.
Saj lahko povečam nosilni panel, vendar to ni zaželjeno.

Prosim za nasvet.

Re: ScrollBar za Frame

Objavljeno: 26.02.2011 16:58:14
Napisal/-a Silver_War
A si nastavil AutoScroll lastnost of Frame-a na True? Namreč če ta ni na True potem se ti nebojo pokazali ScrollBarji od Frame-a.

Re: ScrollBar za Frame

Objavljeno: 26.02.2011 17:44:38
Napisal/-a drago
AutoScroll je nastavljen na True, pa vseeno ne dela.

Re: ScrollBar za Frame

Objavljeno: 27.02.2011 07:57:20
Napisal/-a Silver_War
Align lastnost of Frame-a pusti na alNone. Če pa še vedno nebo delalo, pa na panel postavi ne ScrollBox in tvojemu framu nastavi ta ScrollBox za Parrent-a. V tem primeru bi pa moralo zagotovo delat, saj je ScrollBox sposoben zaznati velikost in pozicijo komponent na njem in prilagoditi svoj ClientRect tako, da so vse komponente v njem. Poleg tega pa ti tudi po potrebi prikaže Scrollbarje in omogoča Scroll-anje.

Re: ScrollBar za Frame

Objavljeno: 28.02.2011 08:47:59
Napisal/-a drago
Hvala za nasvete.
No končno sem problem rešil. No vsaj razumem ga (upam). Kot ponavadi, je zadeva povsem razumljiva, potem, ko jo rešiš.
Takole gre:
Če je na Frame-u naložen panel z lastnostjo "Align=alClient" se ScrollBar-i ne pojavijo. Razumljivo, ker manjkajočo vsebino lahko vidim s povečevanjem Frame-a.
V mojem primeru pa sem imel ta Frame naložen na en panel. Frame je sicer imel lastnost "Align=clClient", a je bil omejen z možnosti povečevanja parent panela, ki pa je bila omejena.
Tudi, ko sem panelu na Frame-u dal lastnost "Align=alNone" in v "Frame.OnResize" sam izračunaval velikost, se ScrollBar ni pojavil. Seveda, ker vsenina ni presegla obsega Frame-a.
Če so bili vsi paneli na na Frame-u poravnani navzgor/navzdol ni bilo horizontalnega ScrollBara, pri poravnavi levo/desno pa ne vertikalnega.

Zakaj kompliciram, se bo kdo vprašal. Zato, ker bi rad uporabil obstoječe rešitve. Tam imam pa večkrat tudi precej obsežne browse, kjer je zelo priročno, če se spreminjajo "alClient". Kako je pa pri popravljanju živih vsebim pa vsi vemo. Rado te "udari" nekje drugje. Kaj hočem, grem na delo.
Lep pozdrav