I suppose your code works inside an OnTimer event handler of a timer (Timer1). I don't know the Interval of this timer, maybe 1 second. So, when one second has passed after activation of the timer, this event handler is called, but your first line DISABLES the timer. There is also a line to enable the timer again, but this will never be reached when the current time is before the ScheduleStart. To fix do this: Remove the "Timer1.Enabled := false". This way the timer periodically checks whether the ScheduleStart is reached or not. When it is you must deactivate the timer to prevent triggering your copy again again and again. So, I would change your code as follows:
// Code to start the timer
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := true;
end;
// Code executed regularly while the timer it enabled.
procedure TForm1.Timer1Timer(Sender: TObject);
var
ScheduleStart : TTime;
begin
ScheduleStart := AutoStartTime.Time;
if Now() >= ScheduleStart then
begin
// strop triggering the event any more
Timer1.Enabled := false;
// Execute the process
ShowMessage('Copying has started...');
end;
end;