Rozdział 17
[ Powrót do kursów ]
Pamiętacie kiedy pisaliśmy program AVI Films Player? Teraz go trochę ulepszymy:
Najlepiej będzie jeżeli zaczniesz wszystko od początku. Stwórz więc nowy projekt i ustaw jego właściwość Height na 411. Właściwość Width zmień na 360.
W Inspektorze Obiektów rozwiń pole Border Icons i zmień właściwość biMaximize na False.
Umieść na formularzu komponent Panel i jego wymiary i położenie zmień według tu podanych: Height: 225, Left: 8, Top: 0, Width: 329. Zmień kolor tła Panelu na czarny, a kolor używanej czcionki na biały.
Umieść na formularzu komponenty: PopupMenu, MainMenu, Timer, OpenDialog, MediaPlayer, BitBtn, ScrollBar, Panel, TrackBar, Label, StatusBar.
MediaPlayer: Width: 197, Height: 30, Left: 8, Top: 227; VisibleButtons: btRecord, btEject = False.
BitBtn: Width: 115, Height: 30, Left: 222, Top: 227, Caption = Otwórz
ScrollBar: Height: 17, Width: 331, Top: 261, Left: 6, Name = Scroll
Panel: Name: Panel2, Left: 6, Top: 280, width: 331, Height: 27; kolor tła: czarny, kolor tekstu: biały
TrackBar: Left: 224, Width: 113, Height: 29, Top: 312, Max: 5, TrickMarks: tmBoth, TrickStyle: tsAuto
Label: Caption = Ustaw głośność; umieść go obok komponentu TrackBar (po jego lewej stronie).
Dobra, teraz program powinien już jakoś wyglądać. Kliknij na komponencie MainMenu. W rozdziale w którym pisaliśmy przeglądarkę omawiałem jak tworzyć menu więc nie będę się tutaj na ten temat rozpisywał. Stwórz menu 'Plik', a w nim pola: Otwórz, Zamknij, Zakończ. Następnie stwórz menu 'Widok', a w nim: Standardowy, Minimalny, wstaw poziomą linie (w pole Caption wpisz znak '-'), Pełny ekran, Zawsze na wierzchu.
Teraz zajmiemy się uzupełnianiem kodu. Zacznijmy od
przycisku 'Otwórz':
//wywolanie okna dialogowego "Otworz"
if openDialog.Execute then begin
//przypisanie nazwy jakiej uzywa OpenDialog
Player.FileName:=OpenDialog.FileName;
//otwarcie pliku
PLayer.Open;
Player.Enabled := True;
//przypisanie obrazu panelowi
Player.Display:=Panel1;
Player.DisplayRect:=Panel1.ClientRect;
Panel1.Caption := ExtractFileName(OpenDialog.FileName);
Panel2.Caption := 'Stan: Film zatrzymany';
end;
Wydaje mi się, że ta procedura nie wymaga większych objaśnień.
Kliknij teraz dwukrotnie na komponencie MediaPlayer. Tereść
procedury jest następująca:
{Komponentowi ScrollBar przypisywana jest długość filmu}
Scroll.Max := Player.Length;
{Dopasowanie pomocy i napisu na panelu}
Panel2.Caption := 'Trwa odtwarzanie ' + ExtractFileName(OpenDialog.FileName) + '...';
Panel1.Hint := 'Odtwarzanie filmu | Trwa odtwarzanie filmu: '+ ExtractFileName(OpenDialog.FileName);
if Button = btStop then begin
{Jezeli nacisniety zostanie przycisk Stop film zostanie zatrzymany
dopasowane zostana napisy oraz Timer stanie sie nieaktywny}
Player.Stop;
Panel2.Caption := 'Stan: Film zatrzymany';
Timer1.Enabled := False;
end
else
Timer1.Enabled := True;
Panel2.Caption := 'Stan: Film uruchomiony';
if Button = btPlay then begin
{Jezeli film zostanie odtworzony - zmieni sie tresc napisu na
panelu}
Panel2.Caption := 'Stan: Film uruchomiony';
end;
if Button = btStop then begin
{Zatrzymanie filmu zpowosuje zmiane napisu}
Panel2.Caption := 'Stan: Film zatrzymany';
end;
Uzupełnij tak procedurę OnScroll komponentu
ScrollBar:
if Player.Enabled = False then
{Jezeli Player jest nieaktywny - nic sie nie dzieje..}
Exit;
{...jezeli film jest otwarty - jego pozycja jest przypisana
pozycji komponentu ScrollBar}
Player.Position := Scroll.Position;
Teraz kliknij dwukrotnie na komponencie TrackBar. Będzie
to regulacja głośności:
{Ustawienie glosnosci obu glosnikow na...}
case TrackBar1.Position of
1:
WaveOutSetVolume(0, $40004000);{4000}
2:
WaveOutSetVolume(0, $60006000); {6000}
3:
WaveOutSetVolume(0, $80008000); {8000}
4:
WaveOutSetVolume(0, $90009000); {9000}
5:
WaveOutSetVolume(0, $FFFFFFFF);{dzwkek na maxa}
end;
OBJAŚNIENIE: Tutaj zatrzymam się na chwilę, aby objaśnić tę funkcję.
Użyta została tutaj instrukcja case. W przypadku gdy suwak
ustawiony jest na pierwszym "ząbku" ustawiony zostaje dźwięk na
obu głośników na wartość 4000. Dźwięk jest typu Integer, ale
jego wartość musi mieć 4 cyfry. W tym przypadku głośność obu głośników
jest jednakowa.
Kliknij dwukrotnie na komponencie Timer. Treść
procedury wyglądać będzie następująco:
SCroll.Position := Player.Position;
Kliknij podwójnie na komponencie MainMenu; kliknij na zakładkę 'Widok'; kliknij na przycisku 'Standardowy' i zmień jego właściwość RadioItem na True oraz GroupIndex na 1. Zrób to samo z przyciskiem 'Minimalny'.
Kliknij podwójnie na przycisku 'Standardowy' i procedurę
uzupełnij tak:
Standardowy1.Checked := not Standardowy1.Checked;
if Standardowy1.Checked = True then
Label1.Visible := True;
TrackBar1.Visible := True;
Panel2.Visible := True;
{Pokazanie komponentow}
Form1.Height := 420;
{Zwiekszenie formy}
Kliknij dwukrotnie na przycisku minimalny i jego procedurę
uzupełnij następująco:
Minimalny1.Checked := not Minimalny1.Checked;
if Minimalny1.Checked = True then begin
Label1.Visible := False;
TrackBar1.Visible := False;
Panel2.Visible := False;
Form1.Height := 350;
end;
Myślę, że do tej pory wszystko było jasne. Teraz nadszedł
czas, aby uzupełnić procedurę 'Zawsze na wierzchu'.
Na_wierzchu.Checked := not Na_wierzchu.Checked;
if Na_wierzchu.Checked = True then
Form1.FormStyle := fsStayOnTop {Jezeli wlasciwosc jest prawdziwa
wlaczona zostaje opcja "Na wierzchu"}
else
Form1.FormStyle := fsNormal;
Teraz nadszedł czas, aby stworzyć drugą formę. Zrób to,
a na drugim formularzu umieść komponent Panel - zmień właściwość Align
na alClient. Uzupełnij kod procedury 'Pełny ekran':
Form2.BorderStyle := bsNone;{ukrycie gornego paska}
Form2.WindowState := wsMaximized;{maximilizacja okna}
Player.Display := Form2.Panel1;{przypianie obrazu do Panelu na Formie drugiej}
Player.DisplayRect := Form2.Panel1.ClientRect;{dopasowanie rozmiaru
filmu do rozmiarow Panelu}
Form2.PopupMenu := Form1.PopupMenu1;{Przypisananie Panelowi Menu rozwijalnego}
Form2.ShowModal;{ukazanie okna Form2}
OBJAŚNIENIE: Najpierw ukrywana zostaje "belka" formy, a
formularz zostaje zmaksymilizowany - odnosimy wówczas wrażenie, że film
wyświetlany jest na pełnym ekranie.
Kliknij teraz na komponencie PopupMenu. Stwórz w nim
tylko jedno pole o nazwie: 'Pełny ekran'; zmień właściwość Checked na
True.
{Ta procedura przywrca "normalny" rozmiar okna tj. zamyka zmaksymilizowany film}
Form1.Player.Display := Form1.Panel1;
Form1.Player.DisplayRect := Form1.Panel1.ClientRect;
Timer1.Enabled := True;
Form2.Close;
Program jest prawie skończony. Pozostało jeszcze tylko
napisanie właściwości zamykającej film:
Player.Stop; {Zatrzymanie odtwarzania}
Player.Enabled := False;{dezaktywacja...}
Timer1.Enabled := False;
Scroll.Position :=0;
Panel1.Caption := 'Zamknięto film';{Przypisanie panelowi teksu}
Panel2.Caption := 'Stan: Zamknięto film';
Procedurę zamykająca program (Plik -> Zakmknij): Application.Termiante;
Mamy już napisaną procedurę otwierającą plik video, lecz ta procedura nie jest przypisana do menu: Plik -> Otwórz. Myślę, że sami potraficie to zrobić.
[ Powrót do kursów ]