B4J Tutorial TabPane Example

Similar threads

B4J Tutorial Pagination Container
B4J Tutorial Accordion container
B4J Code Snippet TabPane Closing Policy TabPages
B4J Tutorial Charts Framework
B4J Tutorial [B4X] Resumable Subs - Sleep / Wait For

Erel

Administrator
Staff member
Licensed User


The TabPane container allows the user to switch between different tab pages.

Working with TabPane is similar to working with SplitPane. Each page is made of a different layout file.
The most important point is to use anchors in the pages layouts. This way the layouts will be resized automatically when the TabPane is resized.

For example the following code adds two pages. The second parameter is the tab title.
Tab1 and Tab2 are layout files.
B4X:
Sub AppStart (Form1 As Form, Args() As String)
   MainForm = Form1
   MainForm.SetFormStyle("UNIFIED")
   MainForm.RootPane.LoadLayout("Main")
   TabPane1.LoadLayout("Tab1", "Tab 1")
   TabPane1.LoadLayout("Tab2", "Tab 2")
   MainForm.Show
End Sub
TabPane.LoadLayout returns a TabPage object. You can use this object to further configure the page.

The example is attached.
 

Attachments

Last edited:

rwblinn

Well-Known Member
Licensed User
Hi Erel,

thanks for this enhancement - very good.

Hint for those who already have been using tabpane prior B4J v1.06:
Change the tabpane type from Node to TabPane. This enables to use all the new properties and methods, like selectedindex, etc...

I noticed that the B4J Documentation has not been updated (yet).
 

Erel

Administrator
Staff member
Licensed User
Are you asking about B4J? Is it is possible to add a ScrollPane to a TabPane.
 

Erel

Administrator
Staff member
Licensed User
The width changes automatically based on the tab name.
 

Erel

Administrator
Staff member
Licensed User
You can use this sub:
B4X:
Sub SetMinTabSize(tp As TabPane, width As Double, height As Double)
    Dim jo As JavaObject = tp
    jo.RunMethod("setTabMinWidth", Array(width))
    jo.RunMethod("setTabMinHeight", Array(height))
End Sub
 

CHAUVET

Member
Licensed User
Hello everyone,

In tabpane with 4 tabpage I have 4 headers (tab1 / tab2 / tab3 / tab4)

How can we do for a TAB HEADER is not clickable?
Move from tab enabled to disable stat of tab item ?

For example:

Public Tabpane1 As TabPane
Tabpane1.header(1).enabled = false '(This code is wrong it's just for example)


thank you,
 

Erel

Administrator
Staff member
Licensed User
You can disable all tabs except of one tab:
B4X:
Sub DisableAllTabsExceptOf(TabPane As TabPane, page As TabPage)
   For Each tp As TabPage In TabPane.Tabs
     Dim jo As JavaObject = tp
     jo.RunMethod("setDisable", Array(tp <> page))
   Next
End Sub
Use this sub to disable all tabs except of the one you want to show.
 

StarinschiAndrei

Active Member
Licensed User
Hi ,

How can i set the image height and width if i load the image from database ?
my code :
B4X:
inputstreamDept.InitializeFromBytesArray(bufferImgDept,0,bufferImgDept.Length)
            Dim bmpDept As Image
            bmpDept.Initialize2(inputstreamDept)
            page.Image=bmpDept
on this way the image doesn't fit in tab.
i'd like to use page.Image=fx.LoadImageSample(????,height,width)
 
Last edited:

Erel

Administrator
Staff member
Licensed User
Create an ImageView with the desired size and set this image to the ImageView.
Use this code to add the ImageView to the TabPage:
B4X:
Dim jo As JavaObject = TabPage1
jo.RunMethod("setGraphic", Array(ImageView1))
 
Top