Warsztat: Projektor animacji AVI w Accessie (bez użycia OCX, wystarczy sam Access).

PlayAVI.zip
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 97 
104kB (archiwum zawiera bazę MDB i kilka plików AVI), 07-05-2000
Royally Free
PlayAVI_2k.zip (wersja dla Accessa 2000)

Opis problemu:

Access nie obsługuje żadnych animacji typu GIF, czy AVI, które urozmaiciłyby jego trochę ponury interfejs.

Rozwiązanie:

Jak zwykle tam, gdzie Access nie może, trzeba sięgnąć po funkcje API. Przykład PlayAVI zawiera opracowane, gotowe procedury do obsługi animacji (filmów) zapisanych w plikach AVI. Jako 'ekran' do wyświetlania filmów służy w przykładzie dodatkowe okienko nakładane na accessowy formularz.

Uwagi:

1. Aby wyświetlić animowanego Gifa, należy zapisać go jako AVI i dalej już korzystać z podanej metody. Oczywiście nie chodzi tu o zmianę nazwy pliku z GIF na AVI ale o konwersję formatów. Jest sporo programów, które dokonują takiej konwersji, chociażby 3D Gif Designer, który wprawdzie służy do budowania animowanych gifów trójwymiarowych, ale jedną z opcji jest zapis GIFa jako AVI. Inne programy, które potrafią dokonać takiej konwersji to np. Graphic Workshop lub GIF Movie Gear. Możesz także wpisać do wyszukiwarki hasło w rodzaju: GIF to AVI converter, aby znaleźć kilka innych programów tego typu. Niestety format AVI nie obsługuje koloru przeźroczystego, dlatego do konwersji nadają sie szczególnie te GIFy, które nie zawierają przeźroczystych obszarów lub takie, które będą umieszczone na jednolitym tle.

2. Inny sposób uzyskania animacji w Accessie opiera się na przygotowaniu sekwencji obrazków BMP i wykorzystaniu zdarzenia Timer. Można tą metodą wyświetlić także (raczej krótki) film AVI. Są programy, które zapisują poszczególne klatki filmu do oddzielnych plików BMP (np. Graphic Workshop), a dalej już wiemy co robić. Metoda jest prosta, ale ma zasadniczą wadę. Trzeba przygotować i rozprowadzić razem z naszą aplikacją sporą liczbę plików graficznych (po jednym pliku dla dla każdej klatki filmu/animacji). Dodatkowo też sam efekt takiej animacji jest daleki od ideału. W Accessie naciśnięty przycisk myszy wstrzymuje wyzwalanie zdarzenia Timer, dlatego cała animacja jest na ten czas zatrzymywana. Na podstawie moich własnych doświadczeń, odradzam tę metodę w przypadku, gdy zależy nam na płynnej pracy projektora.

Krzysztof Pozorek