mybean.vcl.BaseForm.pas 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. unit mybean.vcl.BaseForm;
  2. interface
  3. uses
  4. Classes,
  5. Messages, Forms, Controls, ActnList, Windows;
  6. type
  7. /// <summary>
  8. /// 标准显示
  9. /// </summary>
  10. IShowAsNormal = interface(IInterface)
  11. ['{4A2274AB-3069-4A57-879F-BA3B3D15097D}']
  12. procedure showAsNormal; stdcall;
  13. end;
  14. /// <summary>
  15. /// 显示成Modal窗体
  16. /// </summary>
  17. IShowAsModal = interface(IInterface)
  18. ['{6A3A6723-8FE7-4698-94BC-5CEDFD4FC750}']
  19. function showAsModal: Integer; stdcall;
  20. end;
  21. /// <summary>
  22. /// 显示成MDI窗体
  23. /// </summary>
  24. IShowAsMDI = interface(IInterface)
  25. ['{F68D4D30-C70C-4BCC-9F83-F50D2D873629}']
  26. procedure showAsMDI; stdcall;
  27. end;
  28. IShowAsChild = interface(IInterface)
  29. ['{B0AF3A34-8A50-46F9-B723-DEE17F92633B}']
  30. procedure showAsChild(pvParent:TWinControl); stdcall;
  31. end;
  32. { TMyBeanBaseForm }
  33. TMyBeanBaseForm = class(TForm
  34. , IInterfaceComponentReference
  35. , IShowAsNormal
  36. , IShowAsMDI
  37. , IShowAsModal)
  38. private
  39. protected
  40. procedure CreateParams(var Params: TCreateParams); override;
  41. {IInterfaceComponentReference}
  42. function GetComponent: TComponent;
  43. function GetObject: TObject;
  44. function GetInstanceID: integer;
  45. public
  46. procedure showAsNormal; stdcall;
  47. procedure showAsMDI; stdcall;
  48. function showAsModal: Integer; stdcall;
  49. public
  50. published
  51. end;
  52. implementation
  53. function TMyBeanBaseForm.GetComponent: TComponent;
  54. begin
  55. Result := Self;
  56. end;
  57. function TMyBeanBaseForm.GetObject: TObject;
  58. begin
  59. result := Self;
  60. end;
  61. function GetShiftState: TShiftState;
  62. begin
  63. Result := [];
  64. if GetKeyState(VK_SHIFT) < 0 then
  65. Include(Result, ssShift);
  66. if GetKeyState(VK_CONTROL) < 0 then
  67. Include(Result, ssCtrl);
  68. if GetKeyState(VK_MENU) < 0 then
  69. Include(Result, ssAlt);
  70. end;
  71. function TMyBeanBaseForm.GetInstanceID: integer;
  72. begin
  73. result := integer(Self);
  74. end;
  75. procedure TMyBeanBaseForm.CreateParams(var Params: TCreateParams);
  76. begin
  77. inherited CreateParams(Params);
  78. if not (csDesigning in ComponentState) and (FormStyle <> fsMDIChild) then begin
  79. Params.Style := Params.Style xor (Params.style and (WS_Caption or WS_THICKFRAME));
  80. end;
  81. end;
  82. procedure TMyBeanBaseForm.showAsMDI;
  83. begin
  84. self.FormStyle := fsMDIChild;
  85. self.WindowState := wsMaximized;
  86. self.Show;
  87. end;
  88. function TMyBeanBaseForm.showAsModal: Integer;
  89. begin
  90. Result := ShowModal();
  91. end;
  92. procedure TMyBeanBaseForm.showAsNormal;
  93. begin
  94. Show;
  95. end;
  96. end.