Jump to content

Recommended Posts

Posted

I'm trying to develop a custom unigui component within a TFrame parent.

 

Everything was fine so far but I have to add an icon to this component. I added a Tbitmap property for this. I'm creating and freeing the bitmap in the contructor and destructor. I can change the bitmap at design time using object inspector.

 

My problem is, when I try to remove the component from my form, Delphi crashes with Access Violation error. 

 

If I comment out Icon.Free on destructor, it does not crash.

 

 

unit unit_device_type_a;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIFrame, uniGUIBaseClasses, uniPanel, uniLabel, Vcl.Imaging.pngimage, uniImage,
  uniEdit;


const
  Fversion = '1.0.0';


type
  Tframe_device_type_A = class(TUniFrame)
    panel_parent: TUniPanel;
    UniPanel2: TUniPanel;
    label_header: TUniLabel;
    bitmap_icon: TUniImage;
    UniLabel1: TUniLabel;
    UniLabel4: TUniLabel;
    UniLabel5: TUniLabel;
    UniImage1: TUniImage;
    UniImage2: TUniImage;
    function GetVersion: string;
    procedure SetVersion(const Value: string);




    function   GetIcon: Tbitmap;
    procedure  SetIcon( icon : TBitmap );


  private
    { Private declarations }
  public
    { Public declarations }
    constructor Create(Aowner: TComponent); override;
    destructor Destroy; override;


  published
    property  Version: string  read GetVersion write SetVersion;
    property  Icon:    Tbitmap read GetIcon    write SetIcon;
  end;


implementation


{$R *.dfm}


constructor Tframe_device_type_A.Create(AOwner: TComponent);
begin
  inherited;
  Icon := TBitmap.Create;
end;


destructor Tframe_device_type_A.Destroy;
begin
  Icon.Free;
  inherited;
end;



function Tframe_device_type_A.GetIcon: TBitmap;
begin
  result := bitmap_icon.Picture.Bitmap;
end;


procedure Tframe_device_type_A.SetIcon(icon : TBitmap);
begin
  bitmap_icon.Picture.Bitmap.Assign( icon );
end;


end.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...