5,928
社区成员




TimeThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
procedure DoEverySecond;
end;
TClock = class(TGraphicControl)
private
FTimeThread: TimeThread;
procedure EverySecondDraw();
end;
procedure TimeThread.DoEverySecond;
begin
{如何在这里面调用TClock的函数EverySecondDraw}
end;
procedure TimeThread.Execute;
begin
FreeOnTerminate := True;
while not Terminated do
begin
Synchronize(DoEverySecond);
Sleep(1000);
end;
end;
TimeThread = class(TThread)
private
FOnExecute: TNotifyEvent;
protected
procedure DoExecute;
procedure Execute; override;
public
property OnExecute: TNotifyEvent read FOnExecute write FOnExecute;
end;
procedure TimeThread.DoExecute;
begin
if Assigned(FOnExecute) then
FOnExecute(Self);
end;
procedure TimeThread.Execute;
begin
FreeOnTerminate := True;
while not Terminated do
begin
Synchronize(DoExecute);
Sleep(1000);
end;
end;
TClock = class(TGraphicControl)
private
procedure EverySecondDraw(sender: TObject);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{```````}
end;
constructor TClock.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTimeThread := TimeThread.Create(True);
FTimeThread.OnExecute := EverySecondDraw;
FTimeThread.Resume;
end;
constructor TClock.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTimeThread := TimeThread.Create(False);
end;