一、定义结构体
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
版权声明:本文为博主原创文章,转载请附上博文链接!