程序包含主窗体FormMain和一个Data Module 名字为DMData. FormMain中有个 procedure Deal(S: String) 。在Data Module 中有个 Timer控件。我现在想在 procedure TDMData.Timer1Timer(Sender: TObject) 中调用Deal(DataTimeToStr(Now)),而且不在DMDtata引用FormMain,如何实现?请大家帮帮忙,谢谢!
调试欢乐多
procedure RightCall(Sender: TObject);
begin
Deal(.....);
end;在DM:
增加一个变量
TheRightCall: TNotifyEvent;程序启动时设
TheRightCall := RightCall;在OnTimer中:
if Assigned(TheRightCall) then
TheRightCall(Sender);
我也是这个思路,但是我是在DM里:
自定义一个类型 type TMyCall = procedure(Sender: TObject; S: string); 然后增加一个 protperty Deal: TMyCall read FDeal write FDeal; 程序启动时设
DMData.Deal := Deal; 在OnTimer中:
if Assigned(FDeal) then
FDeal(Sender,myStr);我这样做思路对吗?但是DMData.Deal := Deal;这句出错是怎么回事???
我定义 FDeal 了啊,在 DMData的private FDeal : TMyCall;
怎么是 DmData.deal := Fdeal; 呢?
budi 的方法是对的,但是没有从DMData传参数到FormMain里, 在 Deal(S: String)中,参数 S 也是要从DMData 中传过去的? 可不可以再给一个代码?
在DataModule里:
type TMyEvent=procedure(Sender: TObject; S: String);private
FDeal: TMyEvent;public
property Deal: TMyEvent read FDeal write FDeal;procedure TDMCall.TimerMainTimer(Sender: TObject);
var
myStr: String;
begin
if Assigned(FDeal) then
FDeal(self,myStr);
end;
在FormMain里:
public
procedure Deal(Sender: TObject; phone: String);procedure TFormSeat.FormCreate(Sender: TObject);
begin
DMData.Deal := Deal;
end;
大家帮我看看到底是什么问题,谢谢!!!