2015-11-23 5 views
2

Как создать прокручиваемый 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)]); 

ответ

Смежные вопросы