ufrmMain.pas 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. unit ufrmMain;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls, uAppPluginContext, FileLogger;
  6. type
  7. TfrmMain = class(TForm)
  8. procedure btnSingletonFormClick(Sender: TObject);
  9. procedure btnStartClick(Sender: TObject);
  10. procedure Button1Click(Sender: TObject);
  11. private
  12. { Private declarations }
  13. public
  14. { Public declarations }
  15. procedure workerTester();
  16. end;
  17. var
  18. frmMain: TfrmMain;
  19. implementation
  20. uses
  21. uIUIForm, uIShow;
  22. {$R *.dfm}
  23. function ThreadFunc(p: Pointer): Integer;
  24. begin
  25. TfrmMain(p).workerTester;
  26. end;
  27. procedure TfrmMain.btnSingletonFormClick(Sender: TObject);
  28. begin
  29. with appPluginContext.getBean('singletonDEMO') as IShowForm do
  30. begin
  31. ShowForm;
  32. end;
  33. end;
  34. procedure TfrmMain.btnStartClick(Sender: TObject);
  35. var
  36. i, iCount: Integer;
  37. tid: Cardinal;
  38. begin
  39. iCount := StrToInt(edtThreadCounter.Text);
  40. for i:=1 to iCount do
  41. begin
  42. BeginThread(nil,0,ThreadFunc,Self,0,tid);
  43. end;
  44. end;
  45. procedure TfrmMain.Button1Click(Sender: TObject);
  46. begin
  47. with appPluginContext.getBean('tester') as IUIForm do
  48. try
  49. showAsModal;
  50. finally
  51. UIFormFree;
  52. end;
  53. end;
  54. procedure TfrmMain.workerTester;
  55. var
  56. i: Integer;
  57. begin
  58. try
  59. for i := 1 to 10 do
  60. begin
  61. with appPluginContext.getBean('tester') as IUIForm do
  62. try
  63. finally
  64. UIFormFree;
  65. end;
  66. end;
  67. except
  68. on E:Exception do
  69. begin
  70. TFileLogger.instance.logErrMessage(E.Message);
  71. end;
  72. end;
  73. end;
  74. end.