UMessageThread.pas 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. unit UMessageThread;
  2. interface
  3. uses
  4. Classes,Dialogs,SysUtils,Windows;
  5. procedure MessageOut(ParMessageString,ParMessageCaption:String);
  6. type
  7. TMessageThread = class(TThread)
  8. constructor Create(CreateSuspended:Boolean;
  9. ParMessageString,ParMessageCaption:String);
  10. private
  11. { Private declarations }
  12. protected
  13. procedure Execute; override;
  14. public
  15. MessageString:String;
  16. MessageCaption:String;
  17. end;
  18. const MaxMessageCount=5;
  19. var MessageCount:Cardinal=0;
  20. implementation
  21. uses Unit1,ShellApi;
  22. constructor TMessageThread.Create(CreateSuspended:Boolean;
  23. ParMessageString,ParMessageCaption:String);
  24. begin
  25. inherited Create(CreateSuspended);
  26. MessageString:=ParMessageString;
  27. MessageCaption:=ParMessageCaption;
  28. end;
  29. procedure TMessageThread.Execute;
  30. begin
  31. try
  32. Inc(MessageCount);
  33. if MessageCount<=MaxMessageCount then
  34. MessageBox(0, PChar(MessageString),
  35. PChar(MessageCaption), MB_ICONINFORMATION or MB_OK);
  36. Dec(MessageCount);
  37. except
  38. on e: exception do begin
  39. showmessage(e.Message);
  40. end;
  41. end;
  42. end;
  43. procedure MessageOut(ParMessageString,ParMessageCaption:String);
  44. var MessageThread:TMessageThread;
  45. begin
  46. MessageThread:=
  47. TMessageThread.Create(true,ParMessageString,ParMessageCaption);
  48. MessageThread.Resume;
  49. end;
  50. end.