首先很抱歉,如果之前已经提出,但我正在努力寻找有关此事的任何内容。
我试图将一些TImage添加到滚动条中,该滚动条用于保存图像并允许用户滚动它们。此创建在运行时完成。
图像存储在TImage数组中。
以下是我创建图片的代码。
procedure TfrmMain.CreateSolutionImages(ImageCount: Integer);
var
I: Integer;
ImageScale: double;
begin
if sbSolutionImages.ComponentCount > 0 then //destroy the images already in the scrollbox
sbSolutionImages.DestroyComponents;
SetLength(SolutionImages,0); //clear the array of images
SetLength(SolutionImages,ImageCount); //SolutionImages is an array of timage
ImageScale:= ((sbSolutionImages.Width - 20)/Guillotine.StockWidth);
for I := 0 to ImageCount - 1 do
begin
if not Assigned(SolutionImages[I]) then //if not assigned then create and set the parent to the scrollbox
begin
SolutionImages[I]:= TImage.Create(sbSolutionImages);
SolutionImages[I].Parent:= sbSolutionImages;
SolutionImages[I].Width:= trunc(Guillotine.StockWidth * ImageScale); //set image dimentions and positions
SolutionImages[I].Height:= trunc(Guillotine.StockHeight * ImageScale);
SolutionImages[I].Position.X:= 10;
if I = 0 then
begin
SolutionImages[I].Position.Y:= 10;
end
else
begin
SolutionImages[I].Position.Y:= SolutionImages[I-1].Position.Y + SolutionImages[I-1].Height + 20;
end;
end;
//forgot to include these lines
SolutionImages[I].Bitmap.SetSize(Round(SolutionImages[I].Width),Round(SolutionImages[I].Height));
SolutionImages[I].Bitmap.Clear(TAlphaColors.White);
end;
end;
正在发生的事情是滚动框(sbSolutionImages)报告它包含图像,即componentcount增加,但它没有绘制图像而且没有滚动条出现,这应该在逻辑上发生,因为一些图像赢了'在可见区域。
非常感谢任何帮助。
答案 0 :(得分:1)
将TLayout添加为TScrollBox的子级。 根据需要设置宽度和高度(并设置Position =(0,0))。 在TLayout上将您的图像添加为孩子。
TScrollBox将知道TLayout的边界,并根据此设置它的滚动条。
答案 1 :(得分:0)
好的抱歉。这是一个简单的愚蠢问题。 我忘了在所有图像的位图上设置大小。
仍然在我需要添加的for循环中。
SolutionImages[I].Bitmap.SetSize(Round(SolutionImages[I].Width),Round(SolutionImages[I].Height));
SolutionImages[I].Clear(TAlphaColors.White);
好的,看来我还有问题。滚动条没有出现并尝试调整滚动条的大小(我在两个面板之间有一个滑块,一个是滚动框的父级,另一个是其他组件)要么什么也不做(没有动作)或导致滑块射击屏幕向左,从而隐藏了一切" off"应用程序窗口。
由于我不熟悉firemonkey,这是令人难以置信的。我可以在VCL中轻松完成这项任务,但我们正在努力探索“广受好评的力量”#34; firemonkey。