Оболонка для компакт-диска своїми руками

Передісторія.

Справа в тому, що іноді ти зносиш свою вінду з низки причин чи то атака вірусів, чи відсутність вільного місця на жорстких (бувають і такі) і після її перестановки ти починаєш встановлювати необхідний тобі софт. Все б нічого, але є одне "але" - всі необхідні проги знаходяться на різних дисках, здавалося б створив диск, записав на нього все і все, але хіба так робить справжній Delphi кодер. До того ж у мене, наприклад, часто запитують мої диски з софтом, а потім запитують: "Що за прога?"; "Для чого вона потрібна?" і т.д. Так ти бачив диски від AlexSoft? Ми зробимо так само. Приступимо.

З самого початку.

Для написання програми нам знадобиться голова, руки, Delphi (6,7), Блокнот, невелике знання HTML.

Пишемо основу.

Беремо стандартну форму, я назвав її MainForm і ставимо на неї (залежно від ваших дизайнерських уподобань) компонент WebBrowser із вкладки Internet. Як name напишемо HTMLView. А у FormCreate помістимо цей код:

Цей код визначає, який html буде завантажений першим (при старті програми). Також кинемо на форму дві кнопки. У властивості Caption і Name напишемо відповідно: Назад, Вперед, BackButton, ForwardButton. І напишемо до них відповідні обробники подій:

Структура try. except. end спрямована на те, щоб врятувати програму від краху в тому випадку, якщо користувач ще нікуди не зрушив або рухатися вже нікуди.

Тепер поговоримо про навігацію. Тут все залежить від ваших потреб. Особисто я виділив три розділи SYSTEM, NET, DOCS на своєму диску і відповідно додав стільки ж кнопок на форму з відповідними Caption і name. І написав такий код:

Як видно, неозброєним оком при натисканні на відповідні кнопки в HTMLView'і будуть відображатисяпотрібні html файли (звичайно назвати їх можете на власний розсуд, головне не заплутатися). Можна також створити ще одну кнопку з Caption:='Browse CD' та Name:='BrowseCD'. Призначення її найпростіше: при натисканні на неї в explorer'і відкриється наш диск з усіма файлами, щоб так сталося напишемо це:

Звичайно можна використовувати функцію CreateProcess, але аж надто параметрів багато, а так простіше.

Пікантність.

Основа готова, але можна додати трохи жвавості програми. Помістимо на форму компонент MediaPlayer та обзовемо його MediaPlayerMenu, властивість Visible = false. За допомогою нього програватиметься відповідний звук, коли курсор буде над якоюсь кнопкою. Для цього пишемо код:

Файл check.wav знаходиться у папці з екзешником (ваш файл може називатися по-іншому). І всім кнопкам, що залишилися, ставимо в Events-OnMouseMove відповідну процедуру.

Музика, музика, музика.

Встановлювати програми не завжди весело, тому можна зробити так, що під час поки працює наша оболонка програватиметься музика (звичайно, твоя кохана). Поміщаємо на форму компонент MediaPlayer і називаємо його musicmenu або якось інакше. В якості Visible ставимо fasle. І поміщаємо на форму чотири кнопки з name'ами ​​previousbutton(попередня мелодія), nextbutton(наступна), playbutton(грати), pausebutton(пауза). Пишемо обробники:

Тепер можна здійснювати дії із відтворенням музики. Файли я брав у форматі mp3. Змінні, що зустрічаються, повинні поширюватися на всю прогу. Але біда після закінчення одного треку перехід на інший не здійснюється. Думаємо і пишемо ось це як окрему процедуру (загальну):

А щоб музика грала відразу після початку роботи пишемо ось це у FormCreate:

У коді зустрічається зміннаmusictime, так вона потрібна для того, щоб зберігати тривалість mp3, і якщо поточна позиція дорівнює кінцю файлу, то здійснюємо перехід. Для перевірки кладемо на форму компонент Timer та пишемо процедуру:

Щоб уникнути недомовок напишу і ось це (а то всяке буває):

Це до FormCreate.

Створення HTML.

Програма написана, але не вистачає html-файлів. Так ось коротка структура:

Більше про html на цьому сайті (самі подивіться - купа матеріалу).

Висновок.

Програму можна доповнити на вашу думку. Звичайно, все виглядає блякло, але можна підключити скіни, особисто я використовував компоненти Dinamic Skin Form, причому код навіть міняти не треба - просто замініть потрібні компоненти на відповідні.