Opis
Wykorzystanie raportów w Accessie to chleb powszedni dla każdego kto się nim zajmuje. Możliwości oferowane przez produkt są naprawdę spore, ale jest jedna rzecz która nie jest zaimplementowana w standardzie, a bardzo przydatna. Chodzi mi o sytuacje kiedy chcemy przedstawić na raporcie tabele z obramowaniem. Wszystko będzie w porządku, jeżeli nie skorzystamy z właściwości można powiększać, wtedy efekt może nie być zadowalający, ponieważ powiększone będzie tylko to pole które tego wymaga. W rezultacie otrzymamy coś takiego:
Rozwiązanie
Wyjściem z sytuacji jest napisanie kodu, który sam sprawdzi ile ma wysokości największe pole i obrysuje całość. Jedyne co musimy zrobić to ustawić następujace właściwości dla pola tekstowego:
- Styl tła: Przezroczysty
- Styl obramowania: Przezroczysty
I w zdarzeniu Przy wydruku dla sekcji Szczegóły dodać kod rysujący:
Private Sub Szczegóły_Print(Cancel As Integer, PrintCount As Integer) Dim ctr As Control Dim I As Integer Dim l As Integer Dim W As Integer Me.ScaleMode = 1 W = 0 l = Me.Width I = 0 For Each ctr In Me.Section(acDetail).Controls If ctr.Visible Then If ctr.Height > I Then I = ctr.Height If ctr.Left < l Then l = ctr.Left W = W + ctr.Width End If Next If W > 0 Then Me.Line (l - 1, 0)-(l + W, I + 1), RGB(0, 0, 0), B For Each ctr In Me.Section(acDetail).Controls If ctr.Left <> l And ctr.Visible Then Me.Line (ctr.Left, -I + 271)-(ctr.Left, I), RGB(0, 0, 0) Next End If End Sub
Podsumowanie
Warto jeszcze nadmienić, ze grubość rysowanej kreski można regulować poprzez właściwość raportu DrawWidth. Zamieszczam również przykładowy plik mdb.
0 Comments.