Warsztat 3: AutoSize - dopasowanie rozmiaru pola tekstowego do zawartości.

AutoSize.zip
Autor: Krzysztof Pozorek, Krzysztof Naworyta
Baza w formacie MsAccess 2000
42kB, 10-12-2006

Problem:

Na raporcie mamy bardzo użyteczną możliwość dopasowania wysokości pola tekstowego do zawartości. Wystarczy w arkuszu właściwości ustawić dla pola CanGrow=True i gotowe. Niestety, ta właściwość nie dotyczy widoku formularza :-(

Czy na formularzu nie da się uzależnić wysokości pola od zawartego w nim tekstu?

Rozwiązanie:

Sprawa na pierwszy rzut oka nie wydaje się prosta. Wprawdzie łatwo policzyć ilość wierszy oddzielonych enterem (znakiem końca linii), ale jak rozpoznać, w którym miejscu Access zawinie tekst, który po prostu nie mieści się w linii? Zwłaszcza kiedy użyliśmy czcionki proporcjonalnej (czyli takiej, gdzie 'w' jest szersze niż 'i'), wydaje się to wręcz niemożliwe bez zastosowania zaawansowanych API. Zresztą, ilość kodu w przykładowym rozwiązaniu Lebansa: http://www.lebans.com/textwidth-height.htm potwierdza to wrażenie i nie zostawia wątpliwości, że to karkołomne zadanie ;-)

Przykład Lebansa właściwie załatwia sprawę, tak się jednak składa, że nie cieszą mnie skomplikowane rozwiązania. Po prostu moim zdaniem, nadmiar kodu dobrze świadczy przede wszystkim o pracowitości autora, a nie koniecznie o programie. Osobiście bardziej cenie rozwiązania proste, oparte raczej na pomyśle, niż rozbudowanych procedurach. Sprawdziłem, jak można zrobić takie AutoSize dla tekstu w prosty sposób i okazało się, ze też daje dobry efekt. Wiec po co przepłacać...;-) Załączony przykład stanowi prosta alternatywę dla rozwiązania Lebansa.

Zobacz tez dyskusje tutaj.

K.P.