1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
unit MessageHandler
interface
TOSMessage = procedure(aMessageID, aData1, aData2: integer) of object;
TOSMessageHandler = class
private
fOnMessage : TOSMessage;
public
constructor Create(aMessageCallBack: TOSMessage);
procedure PostMessage(aMessageID, aData1, aData2: integer; aSourceThread: TThread = nil);
end;
var
OSMessageHandler : TOSMessageHandler;
implementation
constructor TOSMessageHandler.Create(aMessageCallBack: TOSMessage);
begin
fOnMessage := aMessageCallBack;
end;
procedure TOSMessageHandler.PostMessage(aMessageID, aData1, aData2: integer; aSourceThread: TThread);
begin
if aSourceThread=nil then
aSourceThread := TThread.CurrentThread;
aSourceThread.Queue(nil, procedure
begin
if Assigned(fOnMessage) then
fOnMessage(aMessageID, aData1, aData2);
end );
end;
end.
//Ajout dans la form principal:
TMainForm = class(TForm)
...
procedure MessageCallBack(aMessageID, aData1, aData2: integer);
...
end;
///
Implementation
//Ajout dans le create de la main Form
OSMessageHandler := TOSMessageHandler.Create(MessageCallBack);
//AJout dans le destroye de la main Form
FreeAndNil(OSMessageHandler)
// Ici la gestion des messages
procedure TMainForm.MessageCallBack(aMessageID, aData1, aData2: integer);
begin
case aMessageID of
MyMessage1 : MyFunction1(aData1,aData2);
...
end;
end; |
Partager