首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使fmx listbox.ScrollToItem用于表单创建或激活

如何使fmx listbox.ScrollToItem用于表单创建或激活
EN

Stack Overflow用户
提问于 2021-10-06 09:23:20
回答 1查看 234关注 0票数 0

我在TListBox上有一个表单,我在onCreate事件中填充它,在那里我还设置了所选的项。我希望列表框在表单显示时将所选项目显示为,因此我尝试触发ScrollToItem方法。这不管用。我还尝试将其放入OnShowOnActivate事件中,但仍然无法工作。有办法让这件事起作用吗?下面是一个演示问题的示例程序:

代码语言:javascript
运行
复制
`type
  TForm5 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.fmx}

procedure TForm5.FormCreate(Sender: TObject);
var
  i: Integer;
  lbi: TListBoxItem;
begin
 for i := 1 to 50 do
 begin
    lbi := TListBoxItem.Create(ListBox1);
    lbi.Text := 'item ' + inttostr(i);
    ListBox1.AddObject( lbi );
 end;
  ListBox1.itemindex := ListBox1.items.indexof('item 48');
  ListBox1.ScrollToItem(ListBox1.Selected);
end;

end.`

而FMX文件:

代码语言:javascript
运行
复制
`object Form5: TForm5
  Left = 0
  Top = 0
  Caption = 'Form5'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  OnCreate = FormCreate
  DesignerMasterStyle = 0
  object ListBox1: TListBox
    Position.X = 224.000000000000000000
    Position.Y = 144.000000000000000000
    TabOrder = 1
    DisableFocusEffect = True
    DefaultItemStyles.ItemStyle = ''
    DefaultItemStyles.GroupHeaderStyle = ''
    DefaultItemStyles.GroupFooterStyle = ''
    Viewport.Width = 196.000000000000000000
    Viewport.Height = 196.000000000000000000
  end
end`
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 11:21:22

TListBox有一个设置滚动条的属性ViewportPosition: TPointF。在设置ListBox1.ItemIndex后添加以下行

代码语言:javascript
运行
复制
ListBox1.ViewportPosition := PointF(0.0, ListBox1.itemindex * ListBox1.ItemHeight);

前一种假设所有项都具有相同的高度(在对象检查器中或在前面的代码中设置了TListBox1.ItemHeight)。您的FMX文件没有反映这一点,所以您可能想要添加它,否则滚动不会发生。

您可能需要为项目设置个人高度。在这种情况下,您必须遍历所有项目,直到要被选中的项目,并将其高度相加,以获得ViewportPositionViewportPosition项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69463046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档