ScrollBar za Frame

Vse kar vas zanima glede komponent.
Odgovori
drago
Prispevkov: 48
Pridružen: 03.10.2007 19:23:48

ScrollBar za Frame

Odgovor Napisal/-a drago » 26.02.2011 13:06:01

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.

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Re: ScrollBar za Frame

Odgovor Napisal/-a Silver_War » 26.02.2011 16:58:14

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.

drago
Prispevkov: 48
Pridružen: 03.10.2007 19:23:48

Re: ScrollBar za Frame

Odgovor Napisal/-a drago » 26.02.2011 17:44:38

AutoScroll je nastavljen na True, pa vseeno ne dela.

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Re: ScrollBar za Frame

Odgovor Napisal/-a Silver_War » 27.02.2011 07:57:20

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.

drago
Prispevkov: 48
Pridružen: 03.10.2007 19:23:48

Re: ScrollBar za Frame

Odgovor Napisal/-a drago » 28.02.2011 08:47:59

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

Odgovori