如何在Delphi的ListView中显示图像?
我需要将数据库中的图像显示到listview组件中。我试过这样的方法,但没有成功 例如:如何在Delphi的ListView中显示图像?,listview,delphi,Listview,Delphi,我需要将数据库中的图像显示到listview组件中。我试过这样的方法,但没有成功 例如: var bmp: TBitmap; blob :TBLOBField; begin bmp := TBitmap.Create; blob := TBlobField.Create(nil); //get image from blob column //image is type bmp blob
var
bmp: TBitmap;
blob :TBLOBField;
begin
bmp := TBitmap.Create;
blob := TBlobField.Create(nil);
//get image from blob column
//image is type bmp
blob := //here i set bmp image from db;
bmp.Assign(blob);
//ListView1 viewstyle is vsReport
ListView1.LargeImages.Add(bmp,nil); //there is Runtime error access violation at address
end;
我做错了什么?对访问冲突最合理的解释是您没有将任何内容分配给
大图像,因此为nil
。将图像列表放到表单上,并设置LargeImages
以引用该图像列表。这将解决您的访问冲突
然后您肯定会发现,图像列表要求所有图像具有相同的维度。这意味着在列表视图中显示的每个图像也必须具有相同的尺寸。在添加到图像列表之前,您可能需要调整原始图像的大小以匹配该公共维度。对于访问冲突最合理的解释是,您没有将任何内容分配给大图像
,因此它是零
。将图像列表放到表单上,并设置LargeImages
以引用该图像列表。这将解决您的访问冲突
然后您肯定会发现,图像列表要求所有图像具有相同的维度。这意味着在列表视图中显示的每个图像也必须具有相同的尺寸。在添加到图像列表之前,您可能需要调整原始图像的大小以匹配该通用尺寸。您可以说更多吗。编译器错误?运行时错误?许多新手程序员认为错误消息不包含有用的信息,只是忽略了它们的内容。如果您想要进步,那么我建议您尝试学习如何解释错误消息。读它们。试着理解它们。一旦你开始这样做,你也会意识到,当你询问有关他们的问题时,你必须逐字记录错误信息。除此之外,请给我们一个提示。删除所有数据库代码,因为您可能知道如何从数据库加载图像。而是提供尝试在列表视图中显示图像的完整代码。图像可以在运行时以某种愚蠢的方式创建,它不应该管它的内容是什么。然后我们就知道你的控件是如何设置的。它的视图样式是什么,依此类推。最后,您可以使用文档中的示例。可以在这里找到:顺便说一下,请记住,您的数据库必须包含位图图像,如果它确实包含JPEG、PNG。。。然后需要额外的代码将其首先转换为位图。这就像拔牙一样。不理解错误消息并不意味着它不包含任何信息。如果您想要改进,您需要学习如何解释错误消息。这一点特别容易理解。如果你能学会如何做到这一点,你就能为自己解决更多的问题。你不想这样做吗?“有错误”你能说得更多吗。编译器错误?运行时错误?许多新手程序员认为错误消息不包含有用的信息,只是忽略了它们的内容。如果您想要进步,那么我建议您尝试学习如何解释错误消息。读它们。试着理解它们。一旦你开始这样做,你也会意识到,当你询问有关他们的问题时,你必须逐字记录错误信息。除此之外,请给我们一个提示。删除所有数据库代码,因为您可能知道如何从数据库加载图像。而是提供尝试在列表视图中显示图像的完整代码。图像可以在运行时以某种愚蠢的方式创建,它不应该管它的内容是什么。然后我们就知道你的控件是如何设置的。它的视图样式是什么,依此类推。最后,您可以使用文档中的示例。可以在这里找到:顺便说一下,请记住,您的数据库必须包含位图图像,如果它确实包含JPEG、PNG。。。然后需要额外的代码将其首先转换为位图。这就像拔牙一样。不理解错误消息并不意味着它不包含任何信息。如果您想要改进,您需要学习如何解释错误消息。这一点特别容易理解。如果你能学会如何做到这一点,你就能为自己解决更多的问题。你不想这样做吗?