UserWaitFrm.pas 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. unit UserWaitFrm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants,
  5. Classes, Graphics, Controls, Forms, ExtCtrls;
  6. type
  7. TUserWaitForm = class(TForm)
  8. Shape: TShape;
  9. procedure FormCreate(Sender: TObject);
  10. procedure FormPaint(Sender: TObject);
  11. private
  12. procedure SetFormWidthAndHeight;
  13. public
  14. procedure ShowUserHint(const AUserHint: string);
  15. end;
  16. procedure ShowUserWaitForm(const AUserHint: string);
  17. procedure CloseUserWaitForm;
  18. implementation
  19. {$R *.dfm}
  20. var
  21. UserWaitForm: TUserWaitForm;
  22. function GetUserWaitForm: TUserWaitForm;
  23. begin
  24. if UserWaitForm = nil then
  25. UserWaitForm := TUserWaitForm.Create(nil);
  26. Result := UserWaitForm;
  27. end;
  28. procedure ShowUserWaitForm(const AUserHint: string);
  29. begin
  30. GetUserWaitForm.ShowUserHint(AUserHint);
  31. Application.ProcessMessages;
  32. end;
  33. procedure CloseUserWaitForm;
  34. begin
  35. FreeAndNil(UserWaitForm);
  36. end;
  37. { TProgressForm }
  38. procedure TUserWaitForm.SetFormWidthAndHeight;
  39. begin
  40. Width := 450;
  41. Height := 60;
  42. end;
  43. procedure TUserWaitForm.FormCreate(Sender: TObject);
  44. begin
  45. SetFormWidthAndHeight;
  46. end;
  47. procedure TUserWaitForm.FormPaint(Sender: TObject);
  48. var
  49. R: TRect;
  50. begin
  51. R := ClientRect;
  52. DrawText(Canvas.Handle, PChar(Hint), -1, R, DT_CENTER or DT_VCENTER or DT_SINGLELINE);
  53. end;
  54. procedure TUserWaitForm.ShowUserHint(const AUserHint: string);
  55. begin
  56. Hint := AUserHint;
  57. Show;
  58. end;
  59. end.