无法更改ListView FMX的属性,除非通过Text



我创建了一个ListView并添加了一些ItemsText,将它们安排在各自的大小/位置,当尝试填充它们时,一些ItemsText被切成两半(短宽度),然后我决定使用Canvas.TextWidth在文本上使用OnUpdatingObjects事件更改所有这些,并添加更多的10p宽度以确保。

My Vars (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;

也不改变

已经尝试了很多不同的方法,但是没有一个成功。

p: Listview在DynamicAppearance.

由于本周: Drawable变量显示宽度的新值,但在ListView上没有变化,除了文本属性,它们都是不可改变的。

尝试使用onUpdateObjects

procedure TFHistory.lvMainUpdateObjects(const Sender: TObject;
const AItem: TListViewItem);
var
AText : TListItemText;
begin
AText := AItem.View.FindDrawable('kd') as TListItemText;
AText.Width := 20;
end;

我有点好奇,所以我成功地尝试了一下

procedure TForm2.ListView1UpdateObjects(const Sender: TObject;
const AItem: TListViewItem);
begin
AItem.Objects.FindDrawable('Text2').Width :=Round(Canvas.TextWidth(AItem.Objects.FindObject('Text2').Data.AsString))+5;
end;

相关内容

  • 没有找到相关文章

最新更新