ďťż

rozdzial09

Lemur zaprasza

Rozdział 9



 [ ]



Teraz dokończę omawiany ostatnio temat komponentu MediaPlayer.
W tabeli poniżej przedstawiłem właściwości tegoż komponentu.






AutoRewid
Określa, czy po zakończeniu
odtwarzania wzkaznik pozycji ma być przesunięty na sam początek.
Dzieje się tak gdy wartością będzie True.  


DeviceType
Wartość bsAutoSelect powoduje
automatyczny wybór urządzenia na podst. rozszerzenia pliku.


Display
Służy do określenia
komponentu, które będzie służyć jako okno podczas wyświetlania
(tak jak np. program który pisaliśmy ostatni, razem - w tym wypadku
oknem jest Panel).


DisplayRect
Służy do dopasowania rozmiaru
okna na którym wyświetlany będzie np. film (tak jak w poprzednim
programie).


EnabledButtons
Określa, które  przyciski
powinny być dostępne podczas odtwarzania.


EndPos
Końcowy punkt plików
multimedialnych. Dane takiego pliku odtwarzanie są od punktu StartPos
do punktu oznaczonego EndPos. 


Frames
Liczba klatego jaka będzie
przesunięta po naciśnięciu przycisku Next lub Back. 


Mode
Stan aktualny urządzenia. mbNotReady,
mpStopped, mpPlaying, mpRecording, mpSeeking, mpPaused, mpOpen.
Możesz
wykorzystywać to w procedurach do badania w jakim stanie znajduje się
urządzenie i ew. do zapobiegania błędom. 


Notify
Jeżeli wartością jest True to
z zakończeniem odtwarzania generowana będzie procedura właśnie
OnNotify.


NotifyValue
Możliwe są wartości: nvSuccessful,
nvSupersed, nvAborted, nvFailure.
Możesz wykorzystywać te metody
do badania z jakim skutkiem zakończone zostało odtwarzanie.


Position
Aktualna pozycja odtwarzanych
danych multimedialnych.


StartPos
Patrz: EndPos. 


Wait
Właściwość tę omawaiłem w
poprzednim rozdziale. Gdy wartościąj est True - kolejny utwór
odtwarzany będzie po kolejnym w pewnym odstępie czasu. Gdy wartością
jest False kolejny utwór odtwarzany będzie natychmiast.




Przy odtwarzaniu filmu lub/i muzyki ważną rzeczą może być
odgrywanie utworu w pętli. 




l
Otwórz program, który pisaliśmy ostatnio. Kliknij
na komponencie MediaPlayer i z Inspektora Obiektów wybierz zakładkę Events l

l
Kliknij na procedurze OnNotify i najedź kursorem
obok. Powinien pojawić się kursor tekstowy - kliknij wówczas dwukrotnie.
Procedurę tą uzupełnij następująco:l


procedure TForm1.playerNotify(Sender: TObject);

begin

        if player.NotifyValue= nvSuccessful
then  //gdy odtwarzanie dobiegnie końca.....

           
Player.Position:=0;   //...przewiń do początku....

            Player.Play; 
//... i zacznij odtwarzać.

end;


To nie koniec unowocześniania programu. Wyobraź sobie, że
chciałbyś, aby użytkownik mógł powiększać lub pomniejszać twój panel w
zależności od jego zachcianek. Zrób to tak:




l
Na formularzu umieść dwa przyciski SpeedButton (na
palecie Additional).l

l
Możesz umieścić na nich jakieś bitmapy. W Inspektorze
Obiektów odszukaj właściwość Glyph i kliknij na symbol
trzykropka zamieszczony obok. Naciśnij przycisk 'Load' i wybierz jakąś bitmapę.l

l
Wartość GroupIndex obu przycisków zmień na 1.
Oznacza to, że tylko jeden przycisk w dane chwili może być wciśnięty.l

l
Kliknij dwukrotnie na pierwszym przycisku i treść
procedury uzupełnij tak:l


procedure TForm1.ButtonClick(Sender: TObject);

begin



if Button.Down=True then begin //Jezeli 1 przycisk jest wcisniety...

    Panel1.Cursor:=crDrag; //to panelowi przypisz kursor - drag



end else //jezeli nie...

    Panel1.Cursor:=crArrow; //pozotaw taki jak byl



end;


W tej procedurze następuje przypisanie Panelowi kursora - w tym
wypadku o nazwie Drag. Istnieje możliwość załadowania własnego
kursora, ale o tym kiedy indziej. Jeżeli przycisk jest "normalny" to
kursor jest standardowy - Arrow.


    5.  Idziemy dalej - kliknij dwukrotnie
na przycisku drugim i treść jego procedury uzupełnij następująco:


procedure TForm1.Button1Click(Sender: TObject);

begin

    if Button1.Down=True then begin //j/w

        Button1.Down:=False;

  Panel1.Cursor:=crCross;



end else

    Panel1.Cursor:=crArrow;

end;


W tym wypadku procedura ma bardzo podobną postać z tym, że
tym razem panelowi przypisywany jest kursor o nazwie Cross. 


    6. Z polecenia File wybierz New Form. Umieść
na nim Panel i jego właściwość Align zmień na alClient. Spowoduje
to rozciągnięcie Panelu na cały obszar formularza. Po co tworzymy kolejny
formularz? Gdy urzytkownik będzie powiększał Panel i przybierze on taki duży
rozmiar w tedy ukazywany będzie formularz drugi i to właśnie na nim wyświetlany
będzie film.


    7. Kliknij teraz dwukrotnie na Panelu 1
naszego głównego formularza. Treść procedury uzupełnij następująco:


procedure TForm1.Panel1Click(Sender: TObject);

begin

    //W przypadku klikniecia na panel...

    //Jezeli nastapi klikniecie, a kursor to drag...



    if Panel1.Cursor=crDrag then begin

            Panel1.Width:=Pred(Panel1.Width - 5); //...zmniejsz szerokosc Panelu...

            Panel1.Height:=Pred(Panel1.Height - 5); //... i wysokosc panelu.




    Player.DisplayRect:=Panel1.ClientRect; //dostosuj roamiar filmu do rozmiaru Panelu



    if ((Panel1.Width<=90) or (Panel1.Height<=80))
then //Jezeli wymiary sa mniejsze niz tu podane...

//...nastepuje wyswietlenie komunikatu: 

                   
ShowMessage('Cholera, jak jeszcze bardziej zmniejszysz to okno to nic nie zobaczysz :)'); 

       end;




//Jezeli kursor to Cross...

    if Panel1.Cursor=crCross then begin

            //Nastepuje powiekszenie szerokosci... 

    


           
Panel1.Width:=Succ(Panel1.Width + 5);

            Panel1.Height:=Succ(Panel1.Height + 5); //...i wysokosci


               
Player.DisplayRect:=Panel1.ClientRect; //dostosowanie szerokosci Panlu do rozmiaru filmu

//Jezeli wymiary sa wieksze od tych tutaj podanych...

            if ((Panel1.Height>=241)
or (Panel1.Width>=345)) then

begin

               
//Wtedy nastepuje przypisanie okna wyswietlania

               
//Panelowi w oknie Form2


    Player.Display:=Form2.Panel1;

        Player.DisplayRect:=Form2.Panel1.ClientRect;

    //no i w koncu wyswietlenie okna Form2

            form2.Showmodal; 

end;

end;



end;


OBJAŚNIENIE: 


Trochę długa ta procedura, nie? N samym początku
"badany" zostaje kursor. Jeżeli jest to Drag - wysokość i
szerokość Panelu zostaje pomniejszona. Funkcję Pred omawiałem w
poprzednich rozdziałach, ale mała powtórka nie zaszkodzi. Otóż ta funkcja
pomniejsza w tym wypadku rozmiar Panelu o jeden. Czyli: Pred(100) daje
liczbę 99 itd. Jako że rozmiar Panelu zmniejszał by się tylko o jeden (żeby
zmniejszyć Panel należałoby się nieźle naklikac :)) odejmujemy od rozmiarów
jeszcze 5 punktów. 


Kolejny warunek (if ((Panel1.Width<=90) or (Panel1.Height<=80))
then) "sprawdza", czy rozmiary nie są zbyt małe. Jeżeli osiągną
wymiary mniejsze od tych tutaj podanych - wtedy wyświetla się komunikat. (O
komunikatach w następnym rozdziale.).


Jeżeli kursor to Cross - wtedy rozmiar Panelu powiększa
się. Funkcja Succ powiększa o jeden, czyli: Succ(100) daje 101
itd. Do rozmiaru dodawane są jeszcze 5 punktów. I tak samo, gdy Panel będzie
większy od podanych rozmiarów wtedy otwiera się okno Form2 i to właśnie
na nim odtwarzany jest film.


Jeżeli macie jakieś pytania to piszcie:


 [ ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza