Показать сообщение отдельно
  #3  
Старый 14.06.2014, 20:15
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Необходимо из приведенного выше кода сделать на подобии:
Код:
 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;
Ответить с цитированием