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

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

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


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

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


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

path:=extractfilepath(application.ExeName);
HTMLView.Navigate(path+”INTRO.html”);

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

procedure TMainForm.backbuttonClick(Sender: TObject);
begin
try
HTMLView.GoBack;
except
end;
end;

procedure TMainForm.forwardbuttonClick(Sender: TObject);
begin
try
HTMLView.GoForward
except
end;
end;


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

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

procedure TMainForm.systemClick(Sender: TObject);
begin
HTMLView.Navigate(path+”htmlsystem.html”);
end;

procedure TMainForm.NETClick(Sender: TObject);
begin
HTMLView.Navigate(path+”html
et.html”);
end;

procedure TMainForm.DOCSClick(Sender: TObject);
begin
HTMLView.Navigate(path+”htmlDOCS.html”);
end;


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

procedure TMainForm.BrowseCDClick(Sender: TObject);
begin
winexec (PChar ("explorer.exe" + extractfiledir (application.ExeName)), 1);
end;

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

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


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

procedure TMainForm.NETMouseMove (Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
MediaPlayerMenu.FileName: = extractfiledir (application.ExeName) + "check.wav";
mediaplayermenu.Open;
mediaplayermenu.Play;
end;

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

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


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

procedure TMainForm.playbuttonClick(Sender: TObject);
begin
musicmenu.Play;
pausebutton.Enabled:=true;
playbutton.Enabled:=false;
end;

procedure TMainForm.pausebuttonClick(Sender: TObject);
begin
musicmenu.Pause;
playbutton.Enabled:=true;
pausebutton.Enabled:=false;
end;

procedure TMainForm.nextbuttonClick(Sender: TObject);
var i:integer;
begin
s2:=musicmenu.filename;
count:=1;
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
if musicmenu.FileName=path+”music”+sr.name then
begin
i:=findnext(sr);
musicmenu.FileName:=path+”music”+sr.Name;
end
else
begin
repeat
if musicmenu.filename=path+”music”+sr.Name then
begin
i:=findnext(sr);
musicmenu.FileName:=path+”music”+sr.Name;
end
until findnext(sr)<>0;
end;
end;
if musicmenu.filename=s2 then
begin
findclose(sr);
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
musicmenu.FileName:=path+”music”+sr.Name;
end;
end;
findclose(sr);
try
musicmenu.Open;
musictime: = musicmenu.length; / / об цієї змінної трохи пізніше
musicmenu.Play;
playbutton.Enabled:=false;
pausebutton.Enabled:=true;
except
end;
end;

procedure TMainForm.previousbuttonClick(Sender: TObject);
var ss: string;
i: integer;
begin
if count=1 then
begin
count:=0;
musicmenu.FileName:=s2;
end
else
begin
s1:=musicmenu.FileName;
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
if musicmenu.FileName=path+”music”+sr.name then
begin
repeat
i:=findnext(sr)
until i<>0;
musicmenu.FileName:=path+”music”+sr.Name;
end
else
begin
findclose(sr);
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
ss:=sr.Name;
repeat
if musicmenu.filename=path+”music”+sr.Name then
musicmenu.FileName:=path+”music”+ss;
ss:=sr.Name;
until findnext(sr)<>0;
end;
end;
end;
end;
try
musicmenu.Open;
musictime:=musicmenu.length;
musicmenu.Play;
playbutton.Enabled:=false;
pausebutton.Enabled:=true;
except
end;

end;


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

procedure TMainForm.musicchange;
var i:integer;
begin
s2:=musicmenu.filename;
count:=1;
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
if musicmenu.FileName=path+”music”+sr.name then
begin
i:=findnext(sr);
musicmenu.FileName:=path+”music”+sr.Name;
end
else
begin
repeat
if musicmenu.filename=path+”music”+sr.Name then
begin
i:=findnext(sr);
musicmenu.FileName:=path+”music”+sr.Name;
end
until findnext(sr)<>0;
end;
end;
if musicmenu.filename=s2 then
begin
findclose(sr);
if findfirst(path+”music”+”*.mp3″,faanyfile,sr)=0 then
begin
musicmenu.FileName:=path+”music”+sr.Name;
end;
end;
findclose(sr);
try
musicmenu.Open;
musictime:=musicmenu.length;
musicmenu.Play;
playbutton.Enabled:=false;
pausebutton.Enabled:=true;
except
end;

end;


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

findfirst(path+”music*.mp3″,faanyfile,sr);
findnext(sr);
findnext(sr);
musicmenu.filename:=path+”music”+sr.Name;
musicmenu.Open;
musictime:=musicmenu.length;
musicmenu.Play;
playbutton.Enabled:=false;

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

procedure Tautorunform.Timer1Timer(Sender: TObject);
begin
if musictime=0 then
musicchange
else
if musicmenu.Position>=musictime then musicchange;
end;

Властивість Interval = 500.

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

  private
{ Private declarations }
public
{ Public declarations }

end;

var
MainForm: TMainForm;
count,musictime:integer;
s2,s1,path:string;
sr :tsearchrec;
implementation

{$R *.dfm}


Це до FormCreate.

Створення HTML.


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

/ / Так треба
<! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Transitional / / EN">
<html> / / початок самої html "ки
<head>
<title> NET </ title> / / заголовок
/ / Теж треба
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
/ / Це якщо стилі використовувати
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body> / / тут буде розміщувати сам текст до </ body>
/ / Назва програми
<br> / / перенесення на новий рядок
/ / Пишіть про що прога
<br>
<a href="здесь шлях до папкі"> тут текст позначає посилання </ a>
/ / Ще текст
/ / Текст
/ / І текст
</body>
</ Html> / / кінець

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

Висновок.


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

Заздалегідь приношу вибачення за помилки і помилки. Пишіть коментарі (почитаю).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*