- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,在 TListBox 等 VCL 控件上使用 BeginUpdate 和 EndUpdate 可以加快用项目填充控件的过程,因为它可以防止在调用 EndUpdate 之前重新绘制控件。
示例:
procedure TForm1.AddItems;
var
i: Integer;
begin
Screen.Cursor := crHourGlass;
try
for i := 0 to 5000 do
begin
ListBox1.Items.Add('Item' + IntToStr(i));
end;
finally
Screen.Cursor := crDefault;
end;
end;
上面会有延迟,因为列表框允许重新绘制,但是可以通过阻止重新绘制来缩短延迟,如下所示:
procedure TForm1.AddItems;
var
i: Integer;
begin
Screen.Cursor := crHourGlass;
try
ListBox1.Items.BeginUpdate;
try
for i := 0 to 5000 do
begin
ListBox1.Items.Add('Item' + IntToStr(i));
end;
finally
ListBox1.Items.EndUpdate;
end;
finally
Screen.Cursor := crDefault;
end;
end;
现在我使用 TStringList 对此进行了测试:
procedure TForm1.AddItems;
var
SL: TStringList;
i: Integer;
begin
SL := TStringList.Create;
try
Screen.Cursor := crHourGlass;
try
SL.BeginUpdate;
try
for i := 0 to 5000 do
begin
SL.Add('Item' + IntToStr(i));
end;
finally
SL.EndUpdate;
end;
ListBox1.Items.Assign(SL);
finally
Screen.Cursor := crDefault;
end;
finally
SL.Free;
end;
end;
看来,无论 TStringList 是否使用 BegindUpdate 和 EndUpdate,列表的填充速度都大致相同。
它们真的需要吗,因为 TStringList 是在内存中执行的,而不是在视觉上执行的。无论如何,我应该在 TStringList 上使用 BeginUpdate 和 EndUpdate 吗?这样做是个好习惯吗?
我觉得问这个问题很傻,但是为什么 TStringList 有过程 BeginUpdate 和 EndUpdate?
我想我可能已经在这里回答了我自己的问题,无论如何我都想听听你的观点。
谢谢:)
最佳答案
BeginUpdate
抑制字符串列表的 OnChanging
和 OnChange
事件。根据连接的内容,它可以显着加快速度。
在您的示例中,BeginUpdate/EndUpdate 没有太大区别。使用 TStringlist 实例并将其分配给 ListView 是一种非常有效的方法。
关于delphi - 为什么TStringList有BeginUpdate和EndUpdate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9150817/
我有一个带有静态单元格的表格 View 。单击单元格可切换与此单元格关联的选择器 View 单元格的可见性(更改单元格高度)。单击单元格的 tag 属性维护选择器单元格的状态。动画由一系列 begin
我有一个应用程序使用 Core Data 来驱动带有部分的 UITableView。它使用所有示例项目使用的标准 NSFetchedResultsControllerDelegate 实现。然而,偶尔
我想在动画结束后添加 slider 按钮,但这不起作用,它会在删除该部分的动画时添加按钮。 [coursesTable beginUpdates]; [coursesTable del
在处理字段更新时,我需要卡住(停止重绘)DataGridView。 有没有像BeginUpdate这样的东西来临时卡住DataGridView 最佳答案 最好的选择是使用 Adam Robinson
我正在构建一个 UITableView选择时,单元格会“滑出”下方的附加 View 。为此,我使用 [tableview beginUpdates] 为表格 View 中的行高设置了动画。和 [tab
我有这个函数,它由单元中的委托(delegate)调用。 它正在调用这个数组: var ingredientsArray = [String]() 我在 viewDidAppear() 中有这个,不确
我的UITableView需要显示来自服务器的一些图像。 UITableViewCell 由单个 UIImageView 和用于 UIImageView 高度的 NSLayoutConstraint
我在每个单元格中使用一个 UITableView 和一个 UITextView 来增加/减少它的高度以适应键入时的文本。为此,我更新了 -textViewDidChange: 委托(delegate)
我正在使用 UITableView 来显示其中包含 UIWebView 的单元格。当 Web View 完成加载时,我通过调用调整单元格的高度 [self.tableView beginUpdates
我在自定义 UITableViewCell 中有一个 UITextView。在扩展 UITextView 时,我希望 UITextView 下方的 subviews 根据其高度下降并增加行高。为此,我
编辑:这个答案的解决方案与 iOS7 有时返回 NSIndexPath 而其他时候返回 NSMutableIndexPath 有关。该问题与 begin/endUpdates 并没有真正相关,但希望该
我正在使用 beginUpdates/endUpdates block 对 tableView 进行更改。在整个过程中,我需要更新投影,以便它反射(reflect) tableView 的当前构图。
我有一个 richTextBox,我用它来执行一些语法突出显示。这是一个小型编辑工具,所以我没有编写自定义语法荧光笔 - 相反,我使用 Regex 并使用 Application.Idle 的事件处理
我编写了一个UserControl,其行为类似于ContainerControl,但完全由WindowsForms 绘制(我继承自UserControl) 我想避免在填充控件时绘制控件,因此我需要编写
我目前正在研究 inline UIDate picker 的实现在 UITableViewCell 内部。 当我选择应插入该单元格的正上方的单元格时,我能够显示和隐藏该选择器单元格,这是我期望的行为。
我一直在努力解决扩展 UITextView 这个非常普遍的问题。在不断增长的内部 UITableViewCell的 UITableView除了一件小事,我几乎就到了。 我有一个 UITableView
我需要执行 [[self tableView] reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableView
我的 TableView 显示用户列表。添加用户后刷新 TableView 时遇到问题。我尝试了不同的代码和事件组合,现在应用程序在 endUpdates 调用时崩溃。该应用程序是根据食谱应用程序建模
我在使用 Core Data 时遇到了一些性能问题,我希望有人能给我一些关于如何改进它的提示。调用save:时对于我的NSManagedObjectContext ,单个实体的保存时间超过 1 秒。我
我有一个应用程序,当用户首次启动应用程序时,它会显示一个自定义的无数据单元格。 当用户输入第一个条目时,我的 fetchedResultsController 的 fetchedResults 会被更
我是一名优秀的程序员,十分优秀!