ImagePanelForActiveX.pas 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. unit ImagePanelForActiveX;
  2. interface
  3. uses
  4. GIFImage, Graphics, Windows,
  5. SysUtils, Classes, Controls, ExtCtrls;
  6. type
  7. TImagePanelForActiveX = class(TPanel)
  8. private
  9. FImage: TImage;
  10. procedure SetPicture(Value: TPicture);
  11. function GetPicture: TPicture;
  12. protected
  13. { Protected declarations }
  14. public
  15. constructor Create(AOwner: TComponent); override;
  16. destructor Destroy; override;
  17. procedure LoadFromFile(AFileName: String);
  18. published
  19. property Picture: TPicture read GetPicture write SetPicture;
  20. end;
  21. procedure Register;
  22. implementation
  23. //------------------------------------------------------------------------------
  24. procedure TImagePanelForActiveX.SetPicture(Value: TPicture);
  25. begin
  26. FImage.Picture.Assign(Value);
  27. end;
  28. //------------------------------------------------------------------------------
  29. function TImagePanelForActiveX.GetPicture: TPicture;
  30. begin
  31. Result := FImage.Picture;
  32. end;
  33. //------------------------------------------------------------------------------
  34. procedure TImagePanelForActiveX.LoadFromFile(AFileName: String);
  35. var
  36. GIFImage: TGIFImage;
  37. begin
  38. if AnsiSameText(ExtractFileExt(AFileName), '.GIF') then
  39. begin
  40. GIFImage := TGIFImage.Create;
  41. try
  42. GIFImage.Animate := False;
  43. GIFImage.LoadFromFile(AFileName);
  44. FImage.Picture.Bitmap.Assign(GIFImage.Bitmap);
  45. finally
  46. GIFImage.Free;
  47. end;
  48. end
  49. else
  50. begin
  51. FImage.Picture.LoadFromFile(AFileName);
  52. end;
  53. FImage.Refresh;
  54. Width := FImage.Width;
  55. Height := FImage.Height;
  56. end;
  57. //------------------------------------------------------------------------------
  58. constructor TImagePanelForActiveX.Create(AOwner: TComponent);
  59. begin
  60. inherited Create(AOwner);
  61. Caption := '';
  62. Color := $00FFFFFF;
  63. DoubleBuffered := True;
  64. BevelInner := bvNone;
  65. BevelOuter := bvNone;
  66. FImage := TImage.Create(Self);
  67. FImage.Parent := Self;
  68. FImage.Enabled := False;
  69. FImage.Left := 0;
  70. FImage.Top := 0;
  71. FImage.AutoSize := True;
  72. end;
  73. //------------------------------------------------------------------------------
  74. destructor TImagePanelForActiveX.Destroy;
  75. begin
  76. FreeAndNil(FImage);
  77. inherited Destroy;
  78. end;
  79. procedure Register;
  80. begin
  81. RegisterComponents('RealICQ UI', [TImagePanelForActiveX]);
  82. end;
  83. end.