Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Программный код
{ MP3 плееер с регулятором громкости.} unit mp3p_; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, MPlayer, ComCtrls, MMSYSTEM, FileCtrl; // эти ссылки вставлены вручную type TForm1 = class(TForm) // кнопки SpeedButton1: TSpeedButton; // Предыдущая композиция SpeedButton2: TSpeedButton; // Воспроизведение/Стоп SpeedButton3: TSpeedButton; // Следующая композиция SpeedButton4: TSpeedButton; // Выбор папки ListBox1: TListBox; // Список композиций (mp3 файлов) MediaPlayer1: TMediaPlayer; // медиа плеер TrackBar1: TTrackBar; // регулятор громкости Timer1: TTimer; Label1: TLabel; Label2: TLabel; Shape1: TShape; // рамка вокруг кнопок procedure FormCreate(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); // эти объявления вставлены сюда вручную procedure Play; // воспроизведение procedure PlayList(Path: string); // формирует список MP3 файлов private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var SoundPath: string[255]; min, sec: integer; // время воспроизведения volume: LongWord; // старшее слово - правый канал, // младшее - левый. // формирует список MP3 файлов procedure TForm1.PlayList(Path: string); var lpBuf: PChar; // указатель на nul-terminated строку sWinDir: string[128]; // обычная Паскаль строка SearchRec: TSearchRec; // структура SearchRec содержит информацию // о файле, удовлетворяющем условию поиска begin ListBox1.Clear; // сформировать список mp3 файлов if FindFirst(Path + '*.mp3', faAnyFile, SearchRec) =0 then begin // в каталоге есть файл с расширением WAV // добавим имя этого файла в список ListBox1.Items.Add(SearchRec.Name); // пока в каталоге есть другие файлы с расширением WAV while (FindNext(SearchRec) = 0) do ListBox1.Items.Add(SearchRec.Name); end; ListBox1.ItemIndex: = 0; end; procedure TForm1.FormCreate(Sender: TObject); begin PlayList(''); ListBox1.ItemIndex: = 0; Label1.Caption: =ListBox1.Items[ListBox1.itemIndex]; TrackBar1.Position: = 7; // старшее слово переменной volume - правый канал, // младшее - левый volume: = (TrackBar1.Position - TrackBar1.Max+1)* 6500; volume: = volume + (volume shl 16); waveOutSetVolume(WAVE_MAPPER, volume); // уровень сигнала end; // щелчок на названии произведения procedure TForm1.ListBox1Click(Sender: TObject); begin // вывести в поле метки Label1 имя выбранного файла if not SpeedButton2.Down then SpeedButton2.Down: = True; Label1.Caption: =ListBox1.Items[ListBox1.itemIndex]; Play; end; // щелчок на кнопке Воспроизведение procedure TForm1.SpeedButton2Click(Sender: TObject); begin if SpeedButton2.Down then // пользователь нажал кнопку // начать воспроизведение Play else // если кнопка Воспроизведение нажата, // то повторное нажатие останавливает // воспроизведение begin MediaPlayer1.Stop; Timer1.Enabled: = False; SpeedButton2.Down: = False; SPeedButton2.Hint: = 'Play'; end; end; // кнопка К предыдущей procedure TForm1.SpeedButton1Click(Sender: TObject); begin if ListBox1.ItemIndex > 0 then ListBox1.ItemIndex: = ListBox1.ItemIndex - 1; Play; end; // кнопка К следующей procedure TForm1.SpeedButton3Click(Sender: TObject); begin if ListBox1.ItemIndex < ListBox1.Count then ListBox1.ItemIndex: = ListBox1.ItemIndex + 1; Play; end; // пользователь изменил положение // регулятора громкости procedure TForm1.TrackBar1Change(Sender: TObject); begin volume: = 6500* (TrackBar1.Max - TrackBar1.Position); volume: = volume + (volume shl 16); waveOutSetVolume(WAVE_MAPPER, volume); end; // воспроизвести композицию, // название которой выделено // в списке ListBox1 procedure TForm1.Play; begin Timer1.Enabled: = False; Label1.Caption: =ListBox1.Items[ListBox1.itemIndex]; MediaPlayer1.FileName: = SoundPath + ListBox1.Items[ListBox1.itemIndex]; try Mediaplayer1.Open; except on EMCIDeviceError do begin ShowMessage('Ошибка обращения к файлу '+ ListBox1.Items[ListBox1.itemIndex]); SpeedButton2.Down: = False; exit; end; end; MediaPlayer1.Play; min: =0; sec: =0; Timer1.Enabled: = True; SpeedButton2.Hint: = 'Stop'; end; // сигнал от таймера procedure TForm1.Timer1Timer(Sender: TObject); begin // изменить счетчик времени if sec < 59 then inc(sec) else begin sec: =0; inc(min); end; // вывести время воспроизведения Label2.Caption: = IntToStr(min)+': '; if sec < 10 then Label2.Caption: = Label2.Caption +'0'+ IntToStr(sec) else Label2.Caption: = Label2.Caption + IntToStr(sec); // если воспроизведение текущей композиции // не завершено if MediaPlayer1.Position < MediaPlayer1.Length then exit; // воспроизведение текущей композиции // закончено Timer1.Enabled: = False; // остановить таймер MediaPlayer1.Stop; // остановить плеер if ListBox1.ItemIndex < ListBox1.Count // список не исчерпан then begin ListBox1.ItemIndex: = ListBox1.ItemIndex + 1; Play; end end; // Щелчок на кнопке Папка // Выбрать папку, в которой находятся MP3 файлы procedure TForm1.SpeedButton4Click(Sender: TObject); var Root: string; // корневой каталог pwRoot: PWideChar; Dir: string; begin Root: = ''; // корневой каталог - папка Рабочий стол GetMem(pwRoot, (Length(Root)+1) * 2); pwRoot: = StringToWideChar(Root, pwRoot, MAX_PATH*2); if not SelectDirectory('Выберите папку', pwRoot, Dir) then Dir: ='' else Dir: = Dir+'\'; // каталог, в котором находятся MP3 файлы выбран SoundPath: = Dir; PlayList(SoundPath); end; end.
|