2015-06-11 1 views
0

Я собираюсь кругами, пытаясь решить эту проблему. В основном у меня есть элемент управления вкладками в моем приложении Android Firemonkey и можно прокручивать влево или вправо, чтобы менять вкладки, и он отлично работает.Firemonkey как реализовать панель управления вкладками в стиле приложения

Я хотел бы улучшить прокрутку, чтобы он больше походил на ящик приложения Android. Я имею в виду, что если вы долгое время и медленно двигаете пальцем влево или вправо, содержимое экрана перемещается влево/вправо пальцем, а не то, что у меня есть сейчас, когда оно перемещает весь экран за раз, а не медленно под пальцем ,

THORZScrollBox близок к эффекту, который я хочу, но он не «привязывается» к одному экрану, но вместо этого может оставлять ваш экран наполовину и наполовину на двух страницах.

Имею ли я смысл здесь?

Я использую XE8, но я не мог заставить его работать с более ранними версиями!

Большое спасибо,

Ian.

+0

ли кто-нибудь, по крайней мере указатель о том, как я могу добиться этого? У меня есть несколько TMemos, и каждый из них занимает весь экран.Если я поместил их в THorzScrollBox, как я могу убедиться, что только один TMemo отображается, когда пользователь закончил прокрутку, а не покинул экран, показывая половину одного TMemo и половину следующего рядом с ним? –

+0

вы можете проголосовать за это здесь: https://quality.embarcadero.com/browse/RSP-14845 – loki

ответ

0

Если кто-то заинтересован я просто создал новый TTabcontrol, который Повышать ударяя

вы можете увидеть здесь исходный код (СВН) https://svn.code.sf.net/p/alcinoe/code/

и демо здесь: (СВН) https://svn.code.sf.net/p/alcinoe/code/demos/ALFmxControls

любой замечание будет приветствовать :)

я по-прежнему также моя логика: создать набор элементов управления firemonkey, которые очень быстр, независимо от OpenGL, и которые не работают со стилем (я считаю, что стиль в firemonkey очень неэффективен и ужасно сложный для поддержания), поэтому я создаю этот tabcontrol как потомок Tcontrol а не как потомок TStyleControl.

Я думаю, что намного проще создать заголовок (т.е. кнопку) вкладки сам с базовым компонентом, таким как trectangle + ttext, чем обновить настолько сложную Книжную книгу для каждой формы (ioe, android, windows, macos , и т. д.)

Если вы сравниваете блок моего Tabcontrol (ALFmxTabControl.pas) с блоком delphi TabControl (Fmx.TabControl.pas), то вы увидите, что я использую строку с кодом меньше, чем на 3,5 раза (1018 против 3550), и меньше, строка кода = всегда лучше

пожалуйста, проголосуйте за эту просьбу особенность здесь: https://quality.embarcadero.com/browse/RSP-15576

0

Попытка THorzScrollBox.AniCalculations.SetTargets(...).

например.

1.Open FMX.HorizontalScroll Sample : CPP\Mobile Snippets\HorizontalScroll

2.Add Форма проведения: OnResize

3.Write код:

#include <FMX.InertialMovement.hpp> 
void __fastcall THorizontalScrollForm::FormResize(TObject *Sender) 
{ 
    TAniCalculations::TTarget target[4]; 

    // Set ths size and position of your slides. 
    Image1->SetBounds(0, 0, HorzScrollBox1->Width, HorzScrollBox1->Height); 
    Image2->SetBounds(HorzScrollBox1->Width, 0, HorzScrollBox1->Width, HorzScrollBox1->Height); 
    Image3->SetBounds(HorzScrollBox1->Width*2, 0, HorzScrollBox1->Width, HorzScrollBox1->Height); 
    Image4->SetBounds(HorzScrollBox1->Width*3, 0, HorzScrollBox1->Width, HorzScrollBox1->Height); 

    // Assign the check point(your slides' top-left conner). 
    target[0].TargetType = TAniCalculations::TTargetType::Other; 
    target[0].Point = TPointD(1, 0); 
    target[1].TargetType = TAniCalculations::TTargetType::Other; 
    target[1].Point = TPointD(HorzScrollBox1->Width, 0); 
    target[2].TargetType = TAniCalculations::TTargetType::Other; 
    target[2].Point = TPointD(HorzScrollBox1->Width*2, 0); 
    target[3].TargetType = TAniCalculations::TTargetType::Other; 
    target[3].Point = TPointD(HorzScrollBox1->Width*3, 0); 
    HorzScrollBox1->AniCalculations->SetTargets(target, 3); 
}