gpt4 book ai didi

delphi - 同步通用 TList 和 TListBox 时出现问题

转载 作者:行者123 更新时间:2023-12-03 00:58:46 29 4
gpt4 key购买 nike

我无法保持 TListbox 与 TList 同步。每次将一项添加到通用 TList 时,都会调用 OnNotify,并且回调仅调用一个过程:create_gradients。其代码如下:

  procedure TColor_Dialog.create_gradients;
var Editor: TGradient_Editor;
eGradient: Int32;
y: single;
s: string;
begin
List_Names.Clear;
List_Gradients.Clear;

for eGradient := 0 to FColor_Editor.nGradients - 1 do
begin
List_Names.Items.Add (FColor_Editor [eGradient].Check_Rainbow.Text);
end; // for

List_Gradients.BeginUpdate;
try
for eGradient := 0 to FColor_Editor.nGradients - 1 do
begin
Editor := FColor_Editor [eGradient];
y := (eGradient + 1) * Editor.Height;
Editor.Position.Y := y;
s := Editor.Check_Rainbow.Text;
List_Gradients.AddObject (Editor);
end; // for
finally
List_Gradients.EndUpdate;
end; // try..finally
end; // create_gradients //

如您所见,它只是枚举列表中的所有项目。列表中的每个项目都是一个 TGradient_Editor,而它又以 TFrame 作为父级。父级上有一些 FMX 控件,如组合框、图像和复选框 (Check_Rainbow)。 Check_Rainbow.Text 用于识别目的。创建渐变编辑器时,它会根据 frame_%s 创建一个唯一名称,其中 %s 是每次创建渐变编辑器时都会递增的序列号。 OwnerParent 都是 List_Gradients

enter image description here

从上图中您可以看到发生了什么。添加右侧的列表框用于检查,并且仅显示文本,顺便说一句,这是正确的顺序。当我使用调试器跟踪将渐变编辑器添加到 List_Gradient 时,它们会以相同的顺序进行处理。但渐变编辑器的顺序错误。我不得不提的是,渐变编辑器的对齐方式是alTop。我什至添加了一些代码来确保编辑器位于 List_Gradients 的最底部。

我似乎不明白什么。我无法想象顺序添加到 TListBox 不能产生正确的顺序。我做错了什么?

最佳答案

试试这个:

procedure TColor_Dialog.create_gradients;
var
Editor: TGradient_Editor;
eGradient: Int32;
y: single;
begin
List_Names.Clear;
List_Gradients.Clear;

for eGradient := 0 to FColor_Editor.nGradients - 1 do
begin
List_Names.Items.Add (FColor_Editor[eGradient].Check_Rainbow.Text);
end;

List_Gradients.BeginUpdate;
try
y := 0.0; // or whatever value you want to start at...
for eGradient := 0 to FColor_Editor.nGradients - 1 do
begin
Editor := FColor_Editor[eGradient];
Editor.Position.Y := y;
List_Gradients.AddObject(Editor);
y := y + Editor.Height;
end;
finally
List_Gradients.EndUpdate;
end;
end;

关于delphi - 同步通用 TList 和 TListBox 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960267/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com