Hasen.
Du bør tænke når man skriver at andre er idioter. Hvad er en sekundbar? En bar der viser hvor mange sekunder ens sang er blevet på. Der kender jeg en til en gauge:
Aflæse Position...
Sæt en følgende 5 komponenter på din form: TMediaPlayer, TTimer, TProgressBar, TOpenDialog og en TButton.
Skriv følgende i din TButtons OnClick property.
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.Filename := OpenDialog1.FileName;
MediaPlayer1.Open;
ProgressBar1.Max := MediaPlayer1.Length;
ProgressBar1.Position := 0;
end;
end;
og dette i din TTimers OnTimer property:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.Mode = mpPlaying then
ProgressBar1.Position := MediaPlayer1.Position;
end;
Sæt din TTimers "Interval" på omkrng 30.
Og sæt eventuelt din TProgressBars "Smooth" til True.
Kompile og test!
Tryk på din Button, find en lydfil fra din harddisk!
Tryk derefter på MediaPlayerens "Play" knap og du vil nu afspille lydfilen. Hvad du også vil se at du kan følge positionen (altså hvor langt du er henne i sangen) på din ProgressBar!
Jeg har to andre ting som iøvrigt også kan hjælpe dig når du laver en mediaplayer:
Indstil Position.
Du kan også gøre det modsat. I stedet for at aflæse en fils position, kan du indsætte en position og derved spole frem og til bage i lydfilen. I følgende eksempel bruger jeg en TScrollBar til at spole med. Jeg har derfor udskiftet TPrograssBar'en med en TScrollBar. Koden til det ser således ud:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.Filename := OpenDialog1.FileName;
MediaPlayer1.Open;
ScrollBar1.Max := MediaPlayer1.Length;
ScrollBar1.Position := 0;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.Mode = mpPlaying then
ScrollBar1.Position := MediaPlayer1.Position;
end;
Det samme som før, men TProgessBaren er blevet skiftet ud med TScrollBaren.
For at spole så skriv følgende i din ScrollBar's OnScroll property:
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
if Length(MediaPlayer1.Filename) > 0 then
begin
MediaPlayer1.Position := ScrollBar1.Position;
MediaPlayer1.Play;
end;
end;
Prøv nu at kompile igen og test. Mens lydfilen afspilles kan du spole frem og tilbage i lydfilen med din ScrollBar!
Smart ik!
Ikke ret meget kode, kan gøre en masse!
Så let er det... bare gi dig selv tid til at studere komponenten for dig selv! Det lære man nu engang allerbedst af!
og denne kan du vælge volumen:
[pre]
Kan lave volumen om i en mediaplayer
MediaPlayer har ikke en indbygget volume kontrol men du kan bruge følgende kode til en trackbar. HUSK at sætte trackbarens maxsize (tror jeg nok det hedder) til (i dette tilfælde) 19.
sæt MMSystem til userlisten
Sæt track...'s max til 19...
case TrackBar1.Position of
1: waveOutSetVolume(0, $FFFFFFFF);
2: waveOutSetVolume(0, $FFF0FFF0);
3: waveOutSetVolume(0, $FFF0FFF0);
4: waveOutSetVolume(0, $FF00FF00);
5: waveOutSetVolume(0, $F000F000);
6: waveOutSetVolume(0, $E000E000);
7: waveOutSetVolume(0, $D000D000);
8: waveOutSetVolume(0, $C000C000);
9: waveOutSetVolume(0, $B000B000);
10: waveOutSetVolume(0, $A000A000);
11: waveOutSetVolume(0, $90009000);
12: waveOutSetVolume(0, $70007000);
13: waveOutSetVolume(0, $60006000);
14: waveOutSetVolume(0, $50005000);
15: waveOutSetVolume(0, $30003000);
16: waveOutSetVolume(0, $40004000);
17: waveOutSetVolume(0, $20002000);
18: waveOutSetVolume(0, $10001000);
19: waveOutSetVolume(0, $00000000);
[pre]
Alt det du spør om ved jeg ikke hvad betyder.
Hvis dette ikke vil hjælpe, så må du beskrive dit problem bedre
Shafh
Shafh@stofanet.dk
Theis F. Hinz
Ti-fire