2016-04-15 77 views
0

任何人都可以幫助我如何正確使用Android應用程序中的vertscrollbox。我已經把vertscrollbox一個tgroupbox和兩個tlistbox。你可以在截圖中看到。當我想在我的應用程序中使用橫向模式並點擊並按住tgroupbox時,滾動工作得更好。但是,如果我點擊並按住其中一個tlistbox並嘗試滾動滾動不起作用。如果它的內容比在任何方向Self.ClientHeight大(高)Delphi西雅圖10 Android滾動問題

Here is a Youtube video about this issue

回答

0

垂直滾動框纔會滾動。最好的方法是在TVertScrollbox上放置一個TLayout。然後將它的高度設置爲比Self.ClientHeight高。然後它會出現滾動。

爲配合定位,並獲得滾動恰到好處,並不會太多,使用FormResize事件處理程序:

procedure TfrmMain.FormResize(Sender: TObject); 
begin 
    VScrollBox1.Align := TAlignLayout.Client; 
    Layout4.Align := TAlignLayout.Horizontal; // stays centered left-right 
    Layout4.Size.Height := 351 + 200; // space for VK here 
    Layout4.Size.Width := 451; // doesn't matter actually 

你會從我的評論指出,我的垂直滾動框允許足夠的空間它下面的虛擬鍵盤(大約200像素)。因此,當VK出現時,用戶可以滾動垂直滾動框上的佈局,因此可以查看第一個和最後一個TEdit控件,但不會顯示頂部和底部的額外空間。當鍵盤顯示時,Self.ClientHeight不會變小。注意:如果佈局太高,可能會非常混亂。上面的351值是Layout4的最小尺寸,這樣所有我父親的TEdits都可以立即看到。

因此,舉例來說,如果在那個方位Self.ClientHeight是< 551,佈局看起來滾動和滾動條顯示在滾動時的權利(如果VertScrollBox1.ShowScrollBars:= TRUE)

+0

是, 我知道。它也適用於Windows和Android。問題是,當我點擊並嘗試在一個TLisbox組件上滾動時,滾動不起作用。但是,如果我點擊TGroup組件並嘗試滾動滾動正在工作。無論如何,我想出了一個解決方案,我已經把所有組件放在TListbox上,並且滾動工作完美。儘管另一個問題是,當我想要滾動並點擊一個編輯字段時,鍵盤立即出現並阻止滾動。 – Lionking

+0

當然,VK會阻止控件。你真的在處理複雜的事情,所以最簡單的例子可以工作,然後看看你的項目中如何使用它。 Embarcadero提供了一個如何使用滾動和VK [移動可滾動窗體]的示例(http://docwiki.embarcadero.com/CodeExamples/XE5/en/FMX.Mobile.ScrollableForm_Sample_%28Delphi%29) – nolaspeaker