A given class with a TIDUDPServer instance:
unit udpbroadcast_fm;
TUDPBC_FM = class( TObject )
protected
IdUDPServer: TIdUDPServer;
Timer: TTimer;
…
procedure IdUDPServerUDPRead( AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle );
procedure TimerOnTimer( Sender: TObject );
public
constructor Create;
function SendDiscover: integer;
properties
…
end;
function TUDPBC_FM.SendDiscover: integer;
begin
…
IdUDPServer.Broadcast( udpDiscovery, BCport );
…
end;
Im using this class to send a UDP broadcast message. My question is that how can i ‘signal’ back to a form/custom class instance from the onTimer event handler (‘TimerOnTimer‘) of ‘Timer‘ (defined as TUDPBC_FM field)?
The timer’s interval been set to 2000msec, so there is two sec for all the devices to answer for the broadcast, then i want to send a signal to a form or class instance.
In my VCL application i was using messages for this, but now im on firemonkey.
Maybe the only way is to use another approach? For example, putting the timer as the form’s field?).
unit mstcc_fm;
Tmstcc = class(TObject)
protected
Fudpbc : TUDPBC_FM;
…
public
function msts_Discover: integer;
…
end;
function Tmstcc.msts_Discover: integer;
begin
…
Fudpbc.SendDiscover;
…
end;
Form unit:
unit main_fm;
…
procedure TfrmMain.btnDiscoverClick(Sender: TObject);
begin
mstcc.msts_Discover;
…
end;