Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 25

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Stop ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ воспроизвСдСниС Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠ° ΠΈ устанавливаСт свойству Active Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Reset, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сбрасываСт свойства StartFrame ΠΈ StopFrame, устанавливая значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, наглядно ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Animate, рассмотрим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для просмотра стандартной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ нСзависимых ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ. Клип воспроизводится Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ количСство Ρ€Π°Π· с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΄ΠΎ послСднСго ΠΊΠ°Π΄Ρ€Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ воспроизвСдСниС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π‘Ρ‚ΠΎΠΏ. Окно прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° рис. 5.2.

Рис. 5.2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для просмотра стандартной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

Рассмотрим исходный тСкст прилоТСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π°Π±ΠΎΡ€ констант, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ свойство CommonAVI. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ объявляСм константный массив Typeof AVI Ρ‚ΠΈΠΏΠ° Π’CommonAVI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния:

...

const TypeofAVI: array[0..8] of TCommonAVI =

(aviNone, aviCopyFile, aviCopyFiles,

aviDeleteFile, aviEmptyRecycle,

aviFindComputer, aviFindFile,

aviFindFolder, aviRecycleFile);

ΠŸΡ€ΠΈ создании Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния устанавливаСм ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ:

...

procedure TFormViewAnim.FormCreate(Sender: TObject);

begin

//Бтандартная анимация Β«ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°Β»

RadioGroupSelectAnimEffects.ItemIndex := 1;

end;

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π±ΠΎΡ€Π° Π³Ρ€ΡƒΠΏΠΏΡ‹ нСзависимых ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ устанавливаСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ управлСния. Π”Π°Π»Π΅Π΅ задаСтся Π²ΠΈΠ΄ воспроизводимого Ρ€ΠΎΠ»ΠΈΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²). Π’ Π±Π»ΠΎΠΊΠ΅ if происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° индСкса Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ Ссли ΠΎΠ½Π° Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π° (индСкс Ρ€Π°Π²Π΅Π½ 0), Ρ‚ΠΎ блокируСтся ΠΊΠ½ΠΎΠΏΠΊΠ° ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² этом случаС просмотр стандартной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ (листинг 5.5).

...

Листинг 5.5. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π±ΠΎΡ€Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€ΠΎΠ»ΠΈΠΊΠΎΠ²

//Π’Ρ‹Π±ΠΎΡ€ стандартной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

procedure TFormViewAnim.RadioGroupSelectAnimEffectsClick(Sender:

TObject);

begin

//УстанавливаСм Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ управлСния

bnStopView.Enabled := False;

bnStartView.Enabled := True;

//УстанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства CommonAVI

StandartAnimate.CommonAVI :=

TypeofAVI[RadioGroupSelectAnimEffects.ItemIndex];

//Если анимация Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π°, Π΄Π΅Π»Π°Π΅ΠΌ нСдоступной

//ΠΊΠ½ΠΎΠΏΠΊΡƒ старта ΠΏΠΎΠΊΠ°Π·Π°

if RadioGroupSelectAnimEffects.ItemIndex = 0

then bnStartView.Enabled := False

else bnStopView.Enabled := True;

end;

ЗначСния индСксов (RadioGroupSelectAnimEf f ects. Itemlndex) ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ порядковым Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π² массивС Typeof AVI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния свойства CommonAVI.

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΊΠ°Π·Π° происходит Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Play ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Animate ΠΈ устанавливаСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΠΊ управлСния ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ:

...

//Π‘Ρ‚Π°Ρ€Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°

procedure TFormViewAnim.bnStartViewClick(Sender: TObject);

begin

//НачинаСм ΠΏΠΎΠΊΠ°Π· Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

StandartAnimate.Play(1, StandartAnimate.FrameCount, 0);

bnStartView.Enabled := False;

bnStopView.Enabled := True;

end;

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π‘Ρ‚ΠΎΠΏ основан Π½Π° Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Stop ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Animate ΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

...

procedure TFormViewAnim.bnStopViewClick(Sender: TObject);

begin

//ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

StandartAnimate.Stop;

bnStartView.Enabled := True;

bnStopView.Enabled := False;

end;

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ создании ΠΏΠ°Π½Π΅Π»Π΅ΠΉ инструмСнтов для добавлСния Π² Π½ΠΈΡ… Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΆΠΈΠ²Π»ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ слуТат для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. ВоспроизвСдСниС изобраТСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈΠ»ΠΈ ΠΏΠΎ истСчСнии Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Animate обСспСчиваСт воспроизвСдСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простых AVI-Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MediaPlayer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТнСС ΠΈ обСспСчиваСт ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… возмоТностСй.

5.4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ проигрыватСля

Обладая достаточно большим Π±Π°Π³Π°ΠΆΠΎΠΌ Π·Π½Π°Π½ΠΈΠΉ ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Delphi, ΠΌΡ‹ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ подошли ΠΊ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-проигрыватСля. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΠΊΠ½ΠΈΠ³ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ слоТного проигрыватСля Π½Π΅ прСдусматриваСтся, Π½ΠΎ созданиС Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ прилоТСния с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, приступим ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ проигрыватСля. Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ качСствС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… возмоТностСй любого проигрыватСля ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π΅ΠΎ-, Ρ‚Π°ΠΊ ΠΈ Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ»ΠΎΠ² Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚: нСпосрСдствСнно воспроизвСдСниС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ остановки ΠΈ возобновлСния воспроизвСдСния (функция ΠΏΠ°ΡƒΠ·Ρ‹), остановки, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ воспроизвСдСния (ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ°). НСобходимыми Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠΊΠ°Π· Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ проигрывания ΠΈ имя воспроизводимого Ρ„Π°ΠΉΠ»Π°. Как извСстно, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MediaPLayer ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… послСдних. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, MediaPLayer практичСски идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Ρ€ΠΎΠ»ΡŒ основного элСмСнта Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ проигрыватСля.

Π˜Ρ‚Π°ΠΊ, создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ прилоТСния. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ настраиваСм свойства Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π£Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ максимизации, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½Π° являСтся лишнСй: устанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False свойству biMaximaze, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Borderlcons. УстанавливаСм BorderStyle Ρ€Π°Π²Π½Ρ‹ΠΌ bsSingle. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹. Для удобства использования ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ появляСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, свойство Position устанавливаСм ΠΊΠ°ΠΊ poScreenCenter. НастраиваСм Ρ†Π²Π΅Ρ‚Π°, Π² рассматриваСмом случаС Color Ρ€Π°Π²Π½ΠΎ clInactiveCaptionText.

Для отобраТСния тСкстовой динамичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ являСтся использованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Label ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠΊ. ВрСмя, позиция указатСля воспроизвСдСния Π² Ρ„Π°ΠΉΠ»Π΅ Π±ΡƒΠ΄ ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Π² нашСм случаС lbMainTime Ρ‚ΠΈΠΏΠ° TLabel) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя проигрывания. Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом, поэтому настраиваСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Color устанавливаСм ΠΊΠ°ΠΊ clSkyBlue, Ρ†Π²Π΅Ρ‚ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° – clMenuHighlight ΠΈ 28 соотвСтствСнно. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (надпись с ΠΈΠΌΠ΅Π½Π΅ΠΌ воспроизводимого Ρ„Π°ΠΉΠ»Π°) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свойства, установлСнныС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ воспроизвСдСниСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ частично ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ проигрыватСля. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ скрываСм всС ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPLayer, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ воспроизвСдСния, ΠΏΠ°ΡƒΠ·Ρ‹ ΠΈ остановки. Π”Π΅Π»Π°Π΅ΠΌ это ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ присвоСния свойству VisibleButtons массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ [btPlay,btPause,btStop]. Кнопки управлСния ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ стандартно. Нам Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° открытия Ρ„Π°ΠΉΠ»Π° для Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° воспроизвСдСния. ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ оставляСм Π΅Π΅ настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π”Π°Π»Π΅Π΅ максимально эргономично Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ создания Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСриодичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ. Для достиТСния этой Ρ†Π΅Π»ΠΈ Π½Π°ΠΌ понадобится Ρ‚Π°ΠΉΠΌΠ΅Ρ€. Π‘Ρ€Π΅Π΄Π° Delphi содСрТит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Timer (Π²ΠΊΠ»Π°Π΄ΠΊΠ° System). На Ρ„ΠΎΡ€ΠΌΡƒ прилоТСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ стандартный Π΄ΠΈΠ°Π»ΠΎΠ³ открытия Ρ„Π°ΠΉΠ»ΠΎΠ². Находится этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Dialogs. Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² интСрфСйса выглядит, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 5.3.

Рис. 5.3. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ проигрыватСля

НачнСм рассмотрСниС исходного тСкста прилоТСния. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ присутствуСт сСкция констант с СдинствСнной константой, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для задания расстояния (полоТСния указатСля воспроизвСдСния Π² Ρ„Π°ΠΉΠ»Π΅), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° 10 сСкунд:

...

const

//ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° для ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ Π½Π° 10 000 миллисСкунд

perem=10000;

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ числСнныС значСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (миллисСкунды) Π² Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π° строковый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ сСкунд (листинг 5.6).

...

Листинг 5.6.

Ѐункция прСобразования Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

function TSoundPlayerForm.FileLangToStr(leng: longint): string;

var

//ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ строки

strTime: string;

sec: longint;

min: longint;

begin

//ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сСкунды ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈΠ· миллисСкунд (leng)

sec := trunc(leng/1000);

min := trunc(sec/60);

sec := sec – min*60;

strTime := IntToStr(min);

//Если сСкунд мСньшС дСсяти, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡ‰ΡƒΡŽ

//строку (участок ΠΌΠΈΠ½ΡƒΡ‚), добавляя \'0\' спСрСди

if sec < 10 then strTime := strTime + \':0\' + IntToStr(sec)

else strTime := strTime + \':\' + IntToStr(sec);

FileLangToStr := strTime;

end;

Находим количСство сСкунд, Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΈΠ½ΡƒΡ‚, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ эти Π΄Π°Π½Π½Ρ‹Π΅ Π² строковый Π²ΠΈΠ΄ (для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ). Если послС нахоТдСния количСства ΠΌΠΈΠ½ΡƒΡ‚ сСкунд оказалось мСньшС дСсяти, Ρ‚ΠΎ добавляСм 0 Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ строку. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ композиция Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ ΠΏΡΡ‚ΡŒ сСкунд. Π’ этом случаС строка Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ 3:05, Π° Π½Π΅ 3:5.