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