Необходимо из приведенного выше кода сделать на подобии:
Код:
Type
//Указатель на процедуру объекта
//понадобится для организации обратного вызова процедуры, которая будет выводить информацию о нашем объекте
TP = procedure of object;
TCD = Class
protected
//свойства класса
m_Name:string; //Кнопка
m_Track:integer;
m_memotext:string;
m_memoadd:string;
m_timer:boolean;
m_p:TP;
function getPlay:string;
function getMemo:string;
function getTimer:boolean;
function getTrackBar:integer;
public
constructor Create(TrackBar:TTrackBar;Memo:Tmemo;BitBtn:TBitBtn;timer:Ttimer;pp:TP);
property name:string Read getPlay;
property memotext:string Read getMemo;
property timer:boolean Read getTimer;
property trackbar:integer Read getTrackBar;
function Play:string;
end;
var
Line: Integer;//Хранится номер строки memo
implementation
constructor TCD.Create(TrackBar:TTrackBar;Memo:Tmemo;BitBtn:TBitBtn;timer:Ttimer;pp:TP);
begin
m_name:= BitBtn.Caption;
m_Track:=TrackBar.Position;
m_memotext:= Memo.Lines.Strings[Line];
m_timer:= Timer.Enabled;
m_p:=pp;
end;
function TCD.getPlay:string;
begin
result := m_name;
end;
function TCD.getMemo:string;
begin
result := m_memotext;
end;
function TCD.getTimer:boolean;
begin
result := m_timer;
end;
function TCD.getTrackBar:integer;
begin
result := m_Track;
end;
function TCD.Play:string;
begin
// Если на кнопке надпись Play
if m_name='Play' then
begin
//Включаем таймер
m_timer:=true;
//Меняем название кнопки
m_name:='Pause';
//Выводим строку с индексом line в лайьл
Result:=m_memotext;
end
else
begin
//Выключаем таймер
m_timer:=false;
//Меняем название кнопки
m_name:='Play';
//Выводим строку с индексом line в лайьл
Result:=m_memotext;
end;
m_p;
end;
С кнопкой разобрался, а вот с трек баром почему то не получается.
Код:
function Tcd.SetTrack:string;
begin
//По срабатыванию таймера прибавляем к позиции тракбара 1
m_Track:=m_Track+1;
Result :=m_memotext;
//Если позиция тракбара достигля максимального значения
if m_Track=60 then
begin
//Переходим на строку вперед
Line:=Line+1;
//Устанавливаем позицию тракбара на 0
m_Track:=0;
//Выводим строку с индексом line в лайьл
Result :=m_memotext;
end;
end;