我已经关注了EMB提供的样本,可以在
找到“C:\ Users \ Public \ Documents \ Embarcadero \ Studio \ 14.0 \ Samples \ Object Pascal \ FireMonkey Desktop \ CustomListBox”
这就是它的样子:
这是将行添加到列表框的代码:
procedure TfrmCustomList.Button2Click(Sender: TObject);
var
Item: TListBoxItem;
begin
// create custom item
Item := TListBoxItem.Create(nil);
Item.Parent := ListBox1;
Item.StyleLookup := 'CustomItem';
Item.Text := 'item ' + IntToStr(Item.Index); // set filename
if Odd(Item.Index) then
Item.ItemData.Bitmap := Image1.Bitmap // set thumbnail
else
Item.ItemData.Bitmap := Image2.Bitmap; // set thumbnail
Item.StylesData['resolution'] := '1024x768 px'; // set size
Item.StylesData['depth'] := '32 bit';
Item.StylesData['visible'] := true; // set Checkbox value
Item.StylesData['visible.OnChange'] := TValue.From<TNotifyEvent>(DoVisibleChange); // set OnChange value
Item.StylesData['info.OnClick'] := TValue.From<TNotifyEvent>(DoInfoClick); // set OnClick value
end;
正如您所看到的那样,这一行应用了自定义样式:
Item.StyleLookup := 'CustomItem';
表单上有一个样书,表单与之关联。 TListBox没有应用样式。
但是,如果更改此CustomItem样式,则不会发生任何事情。您甚至可以更改itens的名称,没有任何反应(根本不是视觉上的变化),布局会在上面的窗口中显示时保持固定。
我添加了另一个带有自己名称的TTlabel并尝试分配给它:
Item.StylesData['ghost'] := 'scary thing';
它不会给出任何错误,但不显示任何文本。风格保持不变。
如果在创建项目时删除了Item.StyleLookup赋值,则唯一更改的是TLabel的名称丢失,然后无法分配值。
所以,风格是定义的,但我看到它似乎已经修复了。任何布局更改都不会应用,不知何故似乎只能理解样式子项名称的更改。这根本没用。
我怎样才能真正修改这种风格?我希望将3个TLabel中的每一个并排放置在水平布局中。
答案 0 :(得分:1)
虽然我理解并分享您的挫败感,但这个问题似乎是您自己的行为。
但是,如果更改此CustomItem样式,则不会发生任何事情。
出现这种情况有三个原因:
我非常肯定这是第二个原因。
如果您的Delphi IDE设置为自动保存项目桌面,则在关闭项目时会生成.dsk
文件。
稍后重新打开项目时,将读取.dsk文件,并恢复桌面布局,断点和手表。此外,项目关闭时打开的所有文件都会再次打开,,无论项目是否使用它们。
以下是水平布局中标签的示例:
您可以从dropbox下载示例,然后检查它以查看出错的位置。