我创建了一个ListView并添加了一些ItemsText,将它们按各自的大小/位置进行排列,当尝试填充它们时,一些ItemsText被切成了两半(短宽度),然后我决定使用OnUpdatingObjects
事件对它们进行更改,在文本上使用Canvas.TextWidth
,并在宽度上添加更多的10 p。
我的变量(AItem
出现在OnUpdatingObjects
事件中,即TListViewItem
):
var
Drawable : TListItemText;
Text : String;
i : integer;
begin
for i := 0 to AItem.Objects.Count-1 do begin
if AItem.View.Drawables[i].ClassName = 'TListItemText' then begin
Drawable := TlistItemText(AItem.Objects.Drawables[i]);
Text := Drawable.Text;
Drawable.Width := Round(Canvas.TextWidth(Text))+10;
end;
end;
end;
宽度不会改变,如果我手动改变,则:
TListItemText(Objects.FindDrawable('MyText')).Width := 200;
也没什么变化。
我已经尝试了很多不同的方法,但没有一个奏效。
PS:列表视图处于动态外观。
PS.2:Drawable变量在Width中显示新值,但在ListView中没有更改,除了Text属性之外,它们都不可更改。
2条答案
按热度按时间jdzmm42g1#
请尝试使用onUpdateObjects
dfddblmv2#
我有点好奇,所以我成功地尝试了这个