【发布时间】:2013-12-26 15:33:33
【问题描述】:
我正在使用带有一个 TPopupColumn 的 fireMonkey 网格。此列的项目是确定的,并且在运行时也会发生变化。
问题是 TpopupColumn.items 中的更改仅反映在弹出列中新添加的行上,而旧的具有旧项(未更改)。
setlength(PointNames,NoMeasPoints);
setlength(PlaneNames,NoMeasPlanes);
PopupColumn1.Items.Clear;
Grid1.RowCount:=NoMeasPoints;
for i:=0 to NoMeasPlanes-1 do
begin
PlaneNames[i]:= 'Plane '+inttostr(i+1);
PopupColumn1.Items.Add(PlaneNames[i].ToString);
Grid1.Repaint;
end;
例如,如果 PopupColumn1 从一个单元格开始,其下拉列表中有一个项目,然后添加了另一个单元格(行),其中项目也更改为两个。第二个单元格在单击时显示两个项目,但第一个单元格只显示它从一开始就有的一个项目。
有没有办法在运行时更新单元格。
【问题讨论】:
-
这是什么语言?
-
这个德尔福。我正在使用delphi xe5
-
您需要遍历列中的每个单元格并更新每个单元格的项目。不过,进入牢房并不容易。也许使用 Column[n].Children?如果这还不足以让您继续前进,我稍后会给出正确的答案。
-
@MikeSutton,我试图完全按照您提到的去做,但 Column[n].Children 不包含 Items 属性来更改 popupCell.Items。我确实尝试删除所有 popupcolumn 然后再次创建它们。使用这种方式我设法访问和更新 PopupCell.Items。但是,当我尝试更改 gid.RowCount 时,我现在面临另一个问题,我得到内存访问冲突错误
-
关于如何在运行时更新 PopupCell.Items 而不先删除它们然后再次创建它们的任何想法。删除和创建单元格确实会导致内存违规问题和显示问题(例如,单击时单元格未突出显示)
标签: delphi grid firemonkey delphi-xe5