Zajímá vás, jak vytvořit pěkné a dynamické uživatelské rozhraní? Obvykle se při změně velikosti formuláře automaticky změní velikost objektů formuláře, jejichž vlastnosti horizontální nebo vertikální velikosti jsou nastaveny na pohyb nebo růst. V některých případech (např. při jemnější správě uživatelského rozhraní) se vývojáři rozhodnou řídit velikost a polohu objektů formuláře programováním. Za tímto účelem kontrolují událost „on resized“, která se spouští v rámci metody formuláře. Co se však stane, když formulář obsahuje jeden nebo více dílčích formulářů? Na mnoha úrovních? V tomto příspěvku na blogu najdete odpovědi!
Podformuláře a podformuláře a…
Správa objektů dílčích formulářů při změně velikosti „rodičovského“ objektu dílčího formuláře se může zdát složitá, ale není! Lze to provést buď pomocí příkazu Execute method in subform, nebo změnou přidružené hodnoty objektu podformuláře, po níž následuje – uvnitř podformuláře- správa generované události on bound variable change.
Od verze 4D v18 je to ještě jednodušší! Událost on resize můžete spravovat přímo v metodě podformuláře! Mnohem pohodlnější, logičtější a jednodušší! Tato událost se spustí pokaždé, když se v hlavním formuláři změní velikost objektu podformuláře. K tomu může dojít, když:
- je změněna velikost hlavního formuláře (stejně jako objektu dílčího formuláře). To je nejzřejmější případ.
- rozdělovač změní výšku nebo šířku objektu dílčího formuláře. Není to tak zřejmé, ale stojí to za zmínku.
- velikost objektu dílčího formuláře je změněna programováním pomocí příkazu OBJECT SET COORDINATES. Tento případ je ještě méně zřejmý, nezapomeňte na něj 🙂
Závěr
Pokud již takovéto scénáře ve své aplikaci zvládáte, můžete zvážit zjednodušení kódu (Nebo také ne! „Když to není rozbité, neopravuj to“). Ale pro budoucí vývoj toto zjednodušení správy událostí jistě oceníte!