Как создать прокручиваемое TW3ListMenu во время выполнения?

Как создать прокручиваемое TW3ListMenu во время выполнения?

Мне нужно что-то немного лучше для вертикальной прокрутки по 50 элементам. Я хотел бы использовать TW3ListMenu и просто отобразить заголовок и значок справа ">", чтобы щелкнуть - затем отобразить дополнительную информацию во вторичной форме.

Как создать прокручиваемый список элементов с помощью TW3ListMenu?

Я создал TW3ListMenu на TW3ScrollBox, но он, кажется, не прокручивается

Может быть, это макет?

procedure TfrmMain.InitializeObject;
var
 i: Integer;
procedure AddMenuItem(caption: string);
var
 li: TW3ListItem;
begin
 li := fListMenu.Items.Add;
 li.Text := caption;
 li.OnClick :=
 procedure (Sender: TObject)
 begin
  //ShowMessage('You clicked: ' + (Sender as TW3ListItem).Text);
 end;
end; //addmenu


begin
  inherited;
  {$I 'frmMain:impl'}


   fHeader:= TW3HeaderControl.Create(self);
   fHeader.Height:= 50;
   fHeader.Title.Caption := 'Mountains';
   fHeader.Title.AlignText:= taCenter;
   fHeader.BackButton.Visible:= False;
   fHeader.StyleClass:= 'TW3Header';


   fBackButton:= TMenuButton.Create(self);
   fBackButton.Caption:= 'Back';
   fBackButton.Height:=  50;
   fBackButton.StyleClass:= 'TMenuButton';
   fBackButton.OnClick:= BackButtonClick;


   fScrollBox:= TW3Scrollbox.Create(self);
   fListMenu:= TW3ListMenu.Create(fScrollbox);

   For i:= 1 to 46 do
   AddMenuItem(IntToStr(i));




   FLayout :=
    Layout{1}.Client(Layout{2}.Margins(5).Spacing(5), [
     Layout{3}.Top(fHeader),
     Layout{4}.Client(fScrollbox),
     Layout{5}.Bottom(fBackButton)]);
end;

Я даже попробовал два макета....

fScrollBox:= TW3Scrollbox.Create(self);
   fListMenu:= TW3ListMenu.Create(fScrollbox);
   For i:= 1 to 46 do
   AddMenuItem(IntToStr(i));

   FScrollLayout :=
    Layout{1}.Client(Layout{2}.Margins(5).Spacing(5), [
    Layout{3}.Client(fScrollbox)]);


   FLayout :=
    Layout{1}.Client(Layout{2}.Margins(5).Spacing(5), [
     Layout{3}.Top(fHeader),
     Layout{4}.Client(fScrollLayout),
     Layout{5}.Bottom(fBackButton)]);

1 ответ

Решение

Warleyalex разместил решение в форме Smart Mobile Studio

Решение, которое использует qtxlibrary

Другие вопросы по тегам