本文整理自网络,侵删。
一、定义结构体
type Tfrequency_band_list = class frequency_band_name: string; frequency_band_pic_color: string; frequency_band_pic_Stream: TMemoryStream; end;二、结构体的使用
//全局变量var frequency_band_list: array of Tfrequency_band_list;//定义变量 //界面初始化时var bmp: Tbitmap;begin SetLength(frequency_band_list, 5);//分配存储空间 bmp := Tbitmap.Create;//初始化Tbitmap for i := 1 to length(frequency_band_list) - 1 do//存储空间是从0开始的,个人习惯从1开始 begin frequency_band_list[i] := Tfrequency_band_list.Create;//结构图初始化 frequency_band_list[i].frequency_band_pic_Stream := TMemoryStream.Create;//内存流初始化 ImageList3.GetBitmap(i, bmp);//借用了一个imagelist保存了一部分相同大小的图片,为BMP变量赋值 bmp.PixelFormat := pfDevice; bmp.PixelFormat := pf24bit;//设定24位,这段程序是为SPEEDBUTTON加透明图片的,所以用的24位 bmp.SaveToStream(frequency_band_list[i].frequency_band_pic_Stream); //将BMP保存到内存流中 frequency_band_list[i].frequency_band_name := '1';//赋值 frequency_band_list[i].frequency_band_pic_color := '1'; end; bmp.Free;//用完后释放end; 三、使用
procedure TForm2.Button36Click(Sender: TObject);var Stream: TMemoryStream;//定义这个变量主要是为了演示用法,直接用全局定义的也可以 bmp: Tbitmap;begin //Stream := TMemoryStream.Create;因为定义了Stream变量,并且进行了赋值,所以不进行初始化 frequency_band_list[1].frequency_band_pic_Stream.Position := 0;//用之前先调指针 Stream := frequency_band_list[1].frequency_band_pic_Stream;//赋值 Stream.Position := 0;//这句可以不须要,内存流变量赋值应该是直接给的指针,这个时候其实两个内存流变量指向的是一个地址,改一个就相当于改另一个 bmp := Tbitmap.Create; bmp.LoadFromStream(Stream); bmp.PixelFormat := pfDevice; bmp.PixelFormat := pf24bit; SpeedButton1.glyph.Assign(bmp);//speedbutton类型的按钮这样加载图片 //stream.Free;//因为是同一个地址,所以这句也取消了,否则两个变量一起被释放了 bmp.Free;end; --------------------- 作者:以后换名字 来源:CSDN 原文:https://blog.csdn.net/weixin_44387646/article/details/87935335 版权声明:本文为博主原创文章,转载请附上博文链接!
相关阅读 >>
Delphi xe6 firemonkey移动应用程序获取android设备屏幕信息
更多相关阅读请进入《Delphi》频道 >>