давайте предположим, что у вас есть текстовый файл с текстом, который нужно отобразить, и аннотированным временем, когда нужно его подсветить (вид файла субтитров, например стандартный текст с временным текстом w3c (http://www.w3.org/AudioVideo/TT/) или SUB - Формат файла фильма с субтитрами, используемый несколькими медиапроигрывателями.
Ваша программа должна сначала прочитать и проанализировать текстовый файл и декодировать аннотированное время. Вставьте его в список строк с именем Subtitles, элементы которого также будут содержать объекты, подобные этому
type tSubtitle = class
num : integer;
prevTime, fromTime : tdatetime;
toTime, nextTime: tdatetime;
text: string;
end;
Возможно, вы захотите расширить объект, чтобы он также содержал некоторые атрибуты подсветки.
Тогда вам просто нужно отобразить эти объекты, синхронизированные с таймером.
procedure TForm1.Timer1Timer(Sender: TObject);
var rt : TDateTime;
done:boolean;
si,st,sb:integer;
s:string;
begin
rt:=now-startTime;
st:=0;
sb:=subtitles.Count; // binary search the subtitle for the current time
repeat
si:=(st+sb) div 2;
s:=TSubtitle(subtitles.Objects[si-1]);
done:= ((t>=s.prevTime) and (t<=s.nextTime));
if not done then
begin
if t>s.prevTime then st:=si
else if t<s.nextTime then sb:=si;
if st=sb then done:=true;
end;
until done;
// do what you want with s
end;