Delphi – Deljenje forme komponentom Splitter

Postoji nekoliko načina da u Delphi-ju implementirate tehniku „podele forme“, ali je sigurno najjednostavnija ona koja koristi komponentu Splitter (delilac), koja je smeštena na Additional kartici komponenti. Da bi implementacija bila efektivnija, Splitter može biti upotrebljen u kombinaciji sa osobinom Constraints kontrole sa kojom je u relaciji. U narednim redovima prikazaćemo kako izvesti vertikalni Splitter, tj. vertikalnu podelu ekrana.

Da biste izgradili primer, na praznu formu postavite komponentu ListBox; dodajte komponentu Splitter, a zatim i drugi ListBox i još jedan Splitter. I konačno, na kraju, dodajte još jedan ListBox. Forma može imati i jednostavnu paletu alatki zasnovanu na panelu. Dodavanjem ova dva Splitter-a, vašoj formi ste podarili kompletnu funkcionalnost premeštanja i promene veličine kontrolama na formi. Osobine Width, Beveled i Color određuju izgled komponente, a još jedna relevantna osobina je MinSize, koja determiniše minimalnu veličinu komponente na formi. Tokom operacije deljenja (tj. promene veličine drugih kontrola), linija obeležava krajnju poziciju Splitter-a. Alternativnu tehniku predstavlja podešavanje osobine Splitter-a – AutoSnap, na True. Ovom osobinom određujemo skrivanje kontrole ukoliko promena veličine ide preko limita određenog osobinom MinSize. U primeru ćemo Splitter komponentom odrediti minimalnu veličinu svake od kontrola.

Čak iako podesimo vrednost osobine MinSize, korisnici mogu redukovati veličinu cele forme na minimum, skrivajući na taj način i neke od kontrola ListBox. Da biste dobili bolji efekat, podesite parametre osobine Constraints na sledeći način (unutar Object Inspector-a) :

  • Constraints.MaxHeight = 400
  • Constraints.MinHeight = 200
  • Constraints.MinWidth = 150
Ove osobine biće primenjene samo u slučaju kada promenite veličinu kontrola, pa da bi program funkcionisao na željeni način, trebalo bi da podesite osobinu ResizeStyle dve kontrole Splitter na rsUpdate. Ovim određujemo da se pozicije kontrola menjaju u zavisnosti od pomeranja Splitter-a (simultano), a ne na kraju same operacije promene veličine. Ukoliko izaberete vrednosti rsLine ili rsPattern, pri prevlačenju Splitter-a videćete samo pozicionu liniju koja će proveravati vrednost MinSize, ali se neće vršiti sama promena veličine kontrola. Da kažemo i to da od Delphi-ja 5, osobinom AutoSnap možemo podesiti da susedne kontrole prilikom prevlačenja potpuno nestanu ukoliko je veličina kontrole ispod podešenog minimuma u Splitter komponenti.

Pratite Krstaricu na www.krstarica.com