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.