【发布时间】:2012-02-14 15:21:22
【问题描述】:
我无法意识到这件事。我在 DELPHI 中有一个组件,其中包括 2 个其他组件:一个 Firemonkey 布局,其中一个包含 TRectangle 的 TLayout 动态数组。 这是通过属性 BarNumber 实现的。
我有很多关于设计时与运行时行为的问题,这是由于 DFM(Firemonkey 中的 FMX)将子组件存储为对象的一部分。 现在。这是 On Create 部分的代码。
constructor TFluffyTable.Create(Owner: TComponent);
var
i: integer;
begin
inherited Create(Owner);
Width:=300;
Height:= 160;
BarNumber:=100;
SetLength(Column, FBarNumber);
for i := 0 to (FBarNumber-1) do
begin
Column[i]:= TColumn.Create(Self);
Column[i].Name:= 'Column_' + IntToStr(i);
Column[i].Parent:= Self;
Column[i].Height:=Height;
Column[i].Width:=Width/FBarNumber;
Column[i].Align:= TAlignLayout.alMostLeft;
end;
end;
如果我注册该组件并在设计时使用它,我会显示正确数量的条形图。但是,如果我使用该组件运行程序,我会得到两倍的条数,因为 EXE 会加载这些值。我设法用
解决了这个问题 if not (csDesigning in ComponentState) then
就在 for 循环之前。 但显然,我看不到设计模式下的 BARS。好吧,如果这是唯一的解决方案,我可以忍受。 这还没有结束..! 出于一个奇怪的原因,我可以为 Width、Height 和 BarNumber 设置值的唯一一个地方就是那部分代码。如果我在对象检查器中设置它们,当我运行程序时,它们将不会被考虑并重置为默认值。 (BarNumber 是一个在 FBarNumber 上读写的变量)
简而言之:我不知道如何处理和管理我的组件,以便在设计时设置 BarNumber 和其他属性,并在运行时查看正确的条数。 非常感谢。
【问题讨论】:
-
你应该接受答案,如果它们是正确的,我看到你所有的问题你从来没有接受过..
-
我在设计时通过我制作的一个简单组件创建的对象遇到了同样的问题
标签: delphi