| Autor | Správa |
HMilos
 Užívateľ
 Založený: 15.08.2008 Príspevky: 46 Bydlisko: Nové Mesto nad Váhom
 | Zaslal: St 30.09.09 21:30 |   |
Cez activex mám v delphi 7 vložený windows media player a tomu dávam visible false
keď chcem niečo prehrať robím to takto:
WindowsMediaPlayer1.url:=cestaksuboru;
no a to je jediné čo som zistil
má to ešte nejaké možnosti ? zišlo by sa napríklad stav či sa ešte prehráva elbo už skončilo a podobne |
| |
   |
 |
shiro
 Skúsený užívateľ
 Založený: 12.10.2006 Príspevky: 9658
 |
sak ked napises windowsmediaplayer1. (s bodkou na konci) tak ti vybehne autocomplete, a tam mas vsetko co vie ta komponenta pouzit a co podporuje. |
_________________ AMD Phenom II 955 BE 3.2GHz, 4GB RAM DDR3-1333 A-Data, MB Gigabyte MA-770T-UD3P, Kingston SSDNow V 64GB 2.Gen., WD 640GB + WD 1TB, Gigabyte GeForce GTX275 896MB, 2xDVD+-RW NEC 7173, LCD BenQ G2400Wa 24", MS Wireless optical mouse 2.0A, Keyboard Prestigio, Creative SBS 380 2.1 | |
  |
 |
Draco
 Užívateľ
 Založený: 03.01.2008 Príspevky: 146
 | Zaslal: Št 29.10.09 23:27 |   |
To ci pesnicka skoncila mozes zistit aj tak, ze komponentu Gauge (popripade ProgressBar) priradis prehravac.Position. To daj co timeru, nech sa ti to obnovuje. Jeho max hodnotu das ako prehravac.Length.
Prosim Vas, ja by som mal tiez otazky co sa tyka prehravacu:
1, Pridal som tlacidlo na "pretacanie" piesne. Avsak potrebujem, aby ked bude tlacidlo stlacene sa vykonalo toto (prehravac.Pause;
posuvanie_t.Enabled:=true;) a ked uvolnim tlacidlo tak toto( posuvanie_t.Enabled:=false;
prehravac.play;). Popripade while cyklus, ze pokym je tlacidlo stlacene aby to nieco vykonavalo. Ale nenasiel som nieco ako buttonpress
2, Mam vytvoreny subor IniFile, kde sa mi uklada playlist. Ten sa nasledne vypisuje do ListBoxu. Avsak potreboval by som, aby sa do ListBoxu vypisal iba nazov penicky. Niekde som cital nieco o ExtractFilePath ale nieviem si predstavit ako to pouzit.
Vopred dakujem  |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Pi 30.10.09 12:56 |   |
1.) dá sa to napríklad takto: V OnMouseDown tlačidla sa bude vykonávať kód a OnMouseUp sa dá povel na ukončenie vykonávania. Mohlo by to vyzerať nasledovne:
| kód: | var
start: boolean = false;
(* ... *)
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
start:= true;
while start do begin
// potrebný kód ...
Application.ProcessMessages;
end;
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
start:= false;
end; |
2.) Názov súboru sa získa pomocou funkcie ExtractFileName, ktorého parameter je celá cesta k súboru (ExtractFilePath extrahuje cestu, teda všetko okrem názvu). |
| |
   |
 |
Draco
 Užívateľ
 Založený: 03.01.2008 Príspevky: 146
 | Zaslal: Pi 30.10.09 18:15 |   |
1, Toto som vyriesil uz trochu inak ale skusim to aj takto, ci to bude lepsie
2, Tu je problem, ze do toho listboxu davam TStringList. Pre lepsiu predstavu, tu mas kod kde s tym pracujem
| kód: |
var
pauza: boolean;
prehravac: TMediaPlayer;
skladby: TStringList;
ini:TIniFile;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'\nastaveni.ini');
skladby:= TStringList.Create;
ini.ReadSection('skladby',skladby);
for i := 0 to skladby.Count -1 do
playlist.Items.Add(ini.ReadString('skladby',skladby.Strings[i],''));
playlist.ItemIndex:=ini.ReadInteger('ostatni','aktualni',0);
skladby.free;
ini.free;
prehravac:=TMediaPlayer.Create(Form1);
prehravac.Parent:=Form1;
prehravac.Visible:=false;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var ini:TIniFile;
i: integer;
begin
prehravac.Free;
ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'\nastaveni.ini');
ini.EraseSection('skladby');
for i := 0 to playlist.Items.Count-1 do begin
ini.WriteString('skladby', IntToStr(i), playlist.Items.Strings[i]);
end;
ini.WriteInteger('ostatni','aktualni', playlist.ItemIndex);
ini.Free;
end;
procedure TForm1.pridat_soubor_btnClick(Sender: TObject);
begin
opendialog1.execute();
playlist.Items.AddStrings(opendialog1.files); |
|
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 | Zaslal: Pi 30.10.09 20:15 |   |
Z riadku:
| kód: | | ini:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'\nastaveni.ini'); |
odstráň v +'\nastaveni.ini' lomítko, pretože ExtractFilePath ho už obsahuje (asi to funguje aj takto, keďže si nič nehlásil, ale správny zápis by mal byť tento).
Pridávanie do ListBoxu som našiel iba v tele procedúry OnClick tlačidla pridat_soubor_btn. Takže úprava:
| kód: | if OpenDialog1.Execute then
playlist.Items.Add( ExtractFileName(OpenDialog1.FileName) ); |
|
| |
   |
 |
Draco
 Užívateľ
 Založený: 03.01.2008 Príspevky: 146
 |
JJ, funguje to
Problém nastáva, že keď aj označím viac pesničiek, tak sa mi pridá iba jedna. Multiselect v opendialogu mám povolený - teda každý názov sa mi dáva do úvodzoviek ;-)
Ešte by som sa chcel spýtať - kde sa možem pokračovať učiť v delphi? Pretože väčšinu seriálov som už prešiel a knižku som nenašiel žiadnu. |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 |
Aha, máš MultiSelect, tak v tom prípade to uprav takto:
| kód: | if OpenDialog1.Execute then
for i:= 0 to (OpenDialog1.Files.Count - 1) do
Memo1.Lines.Add( ExtractFileName(OpenDialog1.Files[i]) ); |
Snáď to už je dobre
Odkiaľ sa učiť? Myslím, že ak človek ovláda jazyk na pokročilej úrovni, tak úplne stačí niečo vygoogliť a učiť sa. Buď nejaký seriál, alebo nejaké "triky", ktoré sa môžu hodiť. Ak nemáš šajnu, kde začať, na www.builder.cz chodievali dosť dobré seriály o čomkoľvek - či už jednoduché vizuálne aplikácie, konvertovanie grafických formátov, hry s využitím DelphiX, práca s portami, databázy, pluginy do winampu, atď. Je z čoho vyberať. |
| |
   |
 |
Draco
 Užívateľ
 Založený: 03.01.2008 Príspevky: 146
 | Zaslal: So 31.10.09 13:19 |   |
Funguje to Akurát, playlist sa uloží ale pri druhom spustení vyhodí chybu. (pri inicializaci MCI nastala chyba). Asi bude niekde len drobná chybička, tak to pozriem Mohol by si mi, prosím ťa, napísať príkaz, aby miesto Caption buttonu bol nejaký obrázok?
Neviem či na pokročilej úrovni. Ovládam cykly, podmienky, vlastné funckie, procedúry, polia, triedy, záznamy (čiže trochu aj OOP) a tu už väščina seriálov končí Ale ten builder.cz sa mi pozdáva  |
| |
  |
 |
Draco
 Užívateľ
 Založený: 03.01.2008 Príspevky: 146
 |
Našiel som problém ten problém. Ide o to, že si nezapamätá cestu k tomu adresáru, čiže pri opätovnom spustení vyhodí chybu (pokiaľ sa pesnička nenachádza v priečinku s Delphi). Napadlo mi, že z opendialogu by sa mohli tie piesne ukladat do toho ini súboru (extractfilepath) a playlist by sa mohol odtiaľ načítavať(extractfilename). Zajtra večer to skúsim tak nejak spraviť, dám vedieť  |
| |
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 1052
 |
| Draco napísal: | | Mohol by si mi, prosím ťa, napísať príkaz, aby miesto Caption buttonu bol nejaký obrázok? |
Sorry, až teraz som si všimol tú otázku. Ak chceš mať v buttone obrázok, tak namiesto klasického použi SpeedButton (v záložke Additional). V Object Inspectore vyber položku Glyph a vyhľadaj si obrázok (*.bmp) |
| |
   |
 |
|