Artykuły >>
Projekty >>
Downloads >>
Serwis >>
Mając dwadzieścia lat myślałem tylko o kochaniu. Potem kochałem już tylko myśleć. Albert Einstein
/ LHP / artykuly
Delphi - Własny odtwarzacz

Wprowadzenie

Witam wszystkich czytelników, a szczególnie redakcję! W tym artykule opiszę od podstaw jak zrobić łatwo swój pierwszy program w Delphi. Postaram się wytłumaczyć każdy element, każdą linię kodu, tak, aby nawet ten, który jeszcze nigdy nie miał do czynienia z Pascalem kod zrozumiał.

Gdzie szukać?

Do napisania Odtwarzacza posłuży nam nawet najprostsza wersja Delphi'ego (od 2.0 wzwyż, można nawet spróbować na jedynce, ale jej nie miałem więc nie wiem :). Delphi 6.0 Personal Edition znajdziecie na krążku Chip 10/2001 ( na ostatnich stronach magazynu Chip odnośnik do strony zawierającej kod rejestracyjny ). Przyznam się, że posiadam właśnie Delphi 6.0 PE i część rzeczy może się nie zgadzać, dlatego w razie niejasności, proszę o kontakt na mejl'a (podany w stopce).

Uruchomienie i zapoznanie z Delph'im

Pierwszym krokiem do oświecenia jest uruchomienie wcześniej zainstalowanego programu. Po jego uruchomieniu pokazują się cztery okienka: - okno główne (z menu u góry) - Form1 - formularz (na nim umieszczamy komponenty tj. przyciski, pola tekstowe, etykiety) - Object Inspector - (Inspektor obiektów) w nim edytujesz właściwości danego komponentu np. zmiana jego koloru, nazwy itp. - Object TreeView - jest to drzewo, które zawiera wszystkie okna naszego programu. Jeśli chodzi o funkcjonalność, moim zdaniem Delphi przebija wszystkich.

Rozmiary plików po kompilacji

Jednak tych którzy piszą programy freeware i zamieszczają je w sieci, niepokoić mogą dość duże rozmiary plików wykonywalnych, czyli plików .exe, które można uruchomić. Jest to dość dużą wadą Delph'iego, ponieważ aby internauta mógł pobrać taki plik przypuśćmy za pomocą modemu potrzeba parę minut, a przy większych programach nawet jest tych minut kilkanaście, kilkadziesiąt, a może całe godziny ;) Tak więc, nawet pusty, skompilowany do pliku wykonywlnego .exe formularz będzie zajmował powyżej 350 KB.

Jeszcze trochę o umieszczaniu komponentów

Aby umieścić na formularzu na przykład przycisk, trzeba sięgnąć kursorem do głównego okna programu (tam gdzie menu) i z palety (zakładki) Standard wybrać Button (Przycisk). W Delphi 6 paleta Standard wygląda następująco: Paleta komponentów w Delphi
Jak już napisałem, pewne rzeczy na pewno nie będą się zgadzać. Na pewno w Delphi 2 nie ujrzycie przycisków "ActionList" (strona prawa) i Frames (strona lewa), które zaznaczyłem na czerwono na powyższej ilustracji. Nasz przycisk to prostokąt z napisem "OK", aby zamieścić go na formularzu, klikamy go, a następnie klikamy na formularz (Form1).

Piszemy Odtwarzacz

Obróbka kosmetyczna

Zanim zaczniemy dosłownie pisać program należy umieścić wszystkie komponenty na formularzu oraz nadać im nazwy bądź zmienić niektóre z ustawień w Inspektorze Obiektów. Umieszczamy pierwszy przycisk na formularzu, w tym celu klikamy na niego na palecie Standard, a następnie klikamy na formularzu (Form1). Przycisk będzie potrzebny nam do otwierania pliku muzycznego. Tworzymy kolejny przycisk klikając na odpowiednią ikonkę na palecie Standard, a następnie na fomrularz, ten przycisk będzie nam służył do odtwarzania (Play). Wszystko by było OK gdyby jeszcze można byłoby pauzouwać odtwarzanie. W tym celu posłuży nam trzeci przycisk, który teraz tworzymy. Wszystko dobrze, ale co będzie odtwarzało te pliki ? Oczywiście potrzebne nam będą jeszcze dwa komponenty, które teraz umieszczamy na Formularzu, są nimi: MediaPlayer z palety System oraz OpenDialog z palety Dialogs. MediaPlayer będzie służył do odtwarzania, a OpenDialog to poprostu okno "Otwórz".
Przyszedł czas na Inspektor Obiektów. Jest on bardzo pomocny gdyż można w łatwy sposób zmienić właściwości komponentów umieszczonych na formularzu w tym celu należy je zaznaczyć (klikając raz) i zmienić wartość w Inspektorze Obiektów. Tak więc, zmieniamy nazwy naszych przycisków. Klikamy pojedynczym kliknięciem na pierwszy (Button1) zaznaczając go, następnie z Inspektora Obiektów wybieramy wartość Caption i wpisujemy tam tekst Otwórz. Z drugim i trzecim przyciskiem robimy to samo nadając im nazwy Graj i Pauza. Teraz przyszła kolej na MediaPlayer, czytelnicy chcący mieć więcej możliwości w odtwarzaczu pomijają ten krok, jednak radziłbym go wykonać wszystkim. Dlatego klikamy pojedynczo na komponent MediaPlayer i w oknie Inspektora Obiektów wybieramy wartość Visible (prawie na samym dole) i przestawiamy ją na wartość False (od ang. Kłamstwo, nieprawda co można przetłumaczyć w naszym wypadku jako niewidoczny). Gdy już ukryliśmy nasz "multimedialny komponent" możemy przystąpić do modyfikowania kodu programu.

Kod programu

Zanim zaczniemy chciałbym wszystkich poinformować, że aby wpisać kod do danego zdarzenia (najczęściej) należy podwójnie klinąć na element. Bardziej doświadczonych użytkowników informuję, że kod w Delphi składa się z procedur, jedna procedura odpowiada jednemu zdarzeniu na przykład kliknięciu na przycisk. Zdarzenia możemy wybierać poprzez zakładkę Events w Inspektorze Obiektów, jeśli interesującego nas zdarzenia nie ma na liście wówczas możemy odebrać tak zwane komunikaty wysyłane przez system (ale to już tak na marginesie :). Kod procedury wpisujemy pomiędzy begin a end; zresztą zaraz pokażę przykład. procedure TForm1.Button1Click(Sender: TObject); begin // Tu wpisujemy nasz kod end; Powyżej pokazałem przykład procedury (dla bardziej zaawansowanych dodam, iż procedura to blok kodu, który, w przeciwieństwie do funkcji nie zwraca wyniku swoich, jak by to powiedzieć, "działań"). Za chwilę wpiszemy pierwszy fragment kodu naszego programu, który będzie odpowiedzialny za otwieranie pliku muzycznego. W tym celu dwukrotnie klikamy na pierwszym przycisku, pokazało się nam okno z tekstem, tak to edytor kodu z którym teraz będziemy pracować. Pojawiła się procedura, którą uzupełniamy następująco (kolor granatowy) procedure TForm1.Button1Click(Sender: TObject); begin If OpenDialog1.Execute Then Begin MediaPlayer1.FileName:=OpenDialog1.FileName; MediaPlayer1.Open; end; end; Teraz naciskamy klawisz F12, który przenosi nas do naszego formularza. Klikamy na nim dwukrotnie przycisk Graj i uzupełniamy kod następująco: procedure TForm1.Button2Click(Sender: TObject); begin MediaPlayer1.Play; end; Ponownie naciskamy F12 i klikamy dwukrotnie na ostatni już przycisk - Pauza. Kod procedury uzupełniamy następująco: procedure TForm1.Button3Click(Sender: TObject); begin MediaPlayer1.Pause; end; No i to już wszystko, możecie zapisać program! To była cała filozofia pisania prostego programu. A teraz ciekawostka: nasz program - odtwarzacz nie odtwarza jedynie muzyki ale również filmy !!! Stworzyliście właśnie uniwersalny odtwarzacz multimediów, odtwarzający zarówno muzykę (mp3, mid, wav itp.) jak również filmy (avi, mpeg itp.). Teraz postaram się objaśnić wszystkie instrukcję, ale najpierw powiem jak zapisać program. Otóż są to najczęściej dwie czynności. Jedna to kompilacja - proces polegający na przekształcaniu naszego kodu do pliku wykonywalnego exe, zaś druga to zapisanie nie skompilowanego projektu programu. Najlepiej zastosować obie naraz. W tym celu klikamy na menu File i Save as... i zapisujemy plik (ważne jest by wszystkie pliki danego programu były w jednym katalogu [aby potem nie szukać]). Teraz zapisujemy nasz projekt programu. Aby to zrobić posługujemy się poleceniem Save Project As... z menu File i zapisujemy projekt w tym samym katalogu. Aby skompilować program należy z menu Project wybrać opcję Build (opcja kompile w zasadzie kompiluje program lecz bez istotnego pliku, bez którego nie będziemy mogli otworzyć naszego programu na innym komputerze, który nie posiada zainstalowanego Delphi, na przykład u kolegi). Zapisaliśmy już program, teraz czas na tłumaczenie. If OpenDialog1.Execute Then Powyższa linia odpowiada za wyświetlenie okna Otwórz. MediaPlayer1.FileName:=OpenDialog1.FileName; Ta linia "pokazuje" komponentowi MediaPlayer gdzie ma szukać naszego pliku muzycznego. MediaPlayer1.Open; Ta linia odpowiedzialna jest za załadowanie pliku muzycznego do komponentu MediaPlayer. MediaPlayer1.Play; Powyższa linia odgrywa muzykę, film czy co tam jeszcze sobie zażyczyliśmy ;) MediaPlayer1.Pause; Niniejsza linia pozwala zapauzować w dowolnym momencie nasz utwór, a potem za pomocą przycisku Graj (Play) wrócić do tego miejsca gdzie zapauzowaliśmy utwór

Zakończenie

To już niestety wszystko! Udoskonalajcie swój program i jeśli chcecie podsyłajcie go mnie ( namiary w stopce ). Aha jeszcze jedno, mianowicie gdy chcecie wybrać ikonkę dla waszego programu można skorzystać z opcji w Delph'im. W tym celu należy otworzyć menu Project i posłużyć się poleceniem Options, następnie przejść na kartę Application, kliknąć na przycisk Load Icon i wybrać swoją ikonę.
Do artykułu dołączam kod źródłowy pisanej aplikacji. Jeśli macie jakieś pytanie/problem wystarczy napisać do mnie, a ja postaram się odpowiedzieć (adres na stopce).

Dodawanie nowego komentarza
Komentarz
nick:
e-mail (nie będzie widoczny):
Anty-spam (zaznacz):
Komentarze czytelników
bez problemu ;)
(wystawiony dnia 2008-05-06 o 17:03)
już wszystko dobrze ;) czy jest jakiś sposób aby moja aplikacja mogłabyć otwierana na innym komputerze, na którym delphi nie jest zajnstalowany ?

>> Odp: No proste ;-) Inaczej pisanie aplikacji w Delphi byłoby fatalne i nikt by się tym nie zajmował. Ale już odpowiadam. Jeśli pytasz czy jest jakiś sposób by te aplikacje się uruchamiały na innych komputerach to domyślam się, że najprawdopodobniej aktualnie się one nie uruchamiają ;-) Domyślnie (przynajmniej wersja którą ja posiadam) Delphi jest skonfigurowane tak by pisane aplikaje mogły się uruchamiać również w systemach, które nie posiadają zainstalowanego Delphi (chodzi o istnienie w systemie specjalnej paczki bibliotek VCL). Rozwiązaniem jest po prostu wkompilowanie jej w Twój program. Aby to zrobić, kliknij menu Project > Options > Karta Packages > i odznacz opcję "Build with runtime packages" Od tej pory Twoje programy powinny się uruchamiać na każdym systemie Windows.
mam problem
(wystawiony dnia 2008-05-01 o 14:31)
gdy klkam na button \"graj\" wyświetla mi się błąd, co robie źle ?

>> Cóż... Na odległość nie mogę nic powiedzieć. Patrzyłeś może na dołączony kod źródłowy? Najprawdopodobniej wczytujesz nieobsługiwany format pliku dźwiękowego. Spróbuj coś nagrać przez Windows'owy "Rejestrator dźwięku" i odtworzyć nagranie przez swój program. Jeśli nadal nie działa - napisz do mnie - postaram się pomóc.
Lukas (autor)
(wystawiony dnia 2008-03-15 o 18:28)
Cześć, chciałem zbadać informacje o niedziałającej funkcji Pause(), napisałem program dokładnie według instrukcji w artykule i funkcja Pause() działa znakomicie. Dołączyłem do artykułu kod źródłowy.
Adam
(wystawiony dnia 2008-03-15 o 16:43)
U mnie nie działa Pause!
AcantheR
(wystawiony dnia 2008-02-29 o 19:04)
Niezłe :)

Łukasz "Lukas" Wyporek
lukas.home.page@gmail.com

Dexter
Czytelniku! Pomóż
rozruszać dyskusję!