German B4J: TabPane und TabPage-Content

Discussion in 'German Forum' started by Kiffi, Mar 28, 2018.

  1. Kiffi

    Kiffi Active Member Licensed User

    Hallo,

    ich habe eine TabPane mit drei TabPages. Jedes mal, wenn die TabPage wechselt, verschiebe ich mit AddNode ein WebView in das SelectedTab. Das funktioniert soweit ganz gut.

    Was ich allerdings nicht hinbekomme ist, dass das WebView die volle Größe der TabPage annimmt (und sich dann auch demzufolge beim Resizen der Form mit vergrößert).

    Hier der Code (ein simples Projekt habe ich diesem Posting hinzugefügt):

    Code:
    #Region Project Attributes 
        
    #MainFormWidth: 1000
        
    #MainFormHeight: 800 
    #End Region

    Sub Process_Globals
        
    Private fx As JFX
        
    Private MainForm As Form
        
    Private TabPane1 As TabPane
        
    Private WebView1 As WebView
    End Sub

    Sub AppStart (Form1 As Form, Args() As String)
       
        MainForm = Form1
        MainForm.RootPane.LoadLayout(
    "MainLayout"'Load the layout file.
        MainForm.Show
       
        WebView1.Initialize(
    "WebView1")
       
        TabPane1.LoadLayout(
    "EmptyLayout""NewTab1")
        TabPane1.LoadLayout(
    "EmptyLayout""NewTab2")
        TabPane1.LoadLayout(
    "EmptyLayout""NewTab3")
       
    End Sub

    Sub TabPane1_TabChanged (SelectedTab As TabPage)
       
        SelectedTab.Content.RemoveAllNodes
       
        SelectedTab.Content.AddNode(WebView1, 
    00, -1, -1)
       
        WebView1.LoadHtml(SelectedTab.Text)
       
    End Sub

    'Return true to allow the default exceptions handler to handle the uncaught exception.
    Sub Application_Error (Error As Exception, StackTrace As StringAs Boolean
        
    Return True
    End Sub
    Danke im Voraus & Grüße ... Peter
     

    Attached Files:

  2. MaFu

    MaFu Well-Known Member Licensed User

    Die einfachste Methode wäre ein weiteres Layout nur mit dem WebView zu erstellen und dieses in den aktuellen Tab zu laden. Beispiel anbei.
     

    Attached Files:

  3. Kiffi

    Kiffi Active Member Licensed User

    Hi Manfred,

    danke für Deine schnelle Hilfe!

    Wenn ich das recht sehe, wird dann aber pro Tab eine WebView-Instanz geladen? Gerade das möchte ich nicht.

    Nur eine WebView-Instanz, die dann zwischen den Tabs hin- und hergeschoben wird: Das wäre optimal.

    Grüße ... Peter
     
  4. RWK

    RWK Member Licensed User

    Dann musst Du das im Resize Event behandeln.

    Code:
    Sub MainForm_Resize (Width As Double, Height As Double)
        WebView1.SetSize(TabPane1.Width,TabPane1.Height)   
    'irgend ne Größe
    End Sub
    Grüße
    Rainer
     
    MaFu likes this.
  5. Kiffi

    Kiffi Active Member Licensed User

    Hallo Rainer,

    auch Dir vielen Dank für Deine Antwort!

    SetSize() ist eine Option. Mittlerweile habe ich allerdings die AnchorPane für mich entdeckt (finde ich irgendwie JavaFXiger ;)):

    Code:
    Sub Process_Globals
       
        
    Private fx As JFX
        
    Private MainForm As Form
        
    Private TabPane1 As TabPane
        
    Private WebView1 As WebView
           
    End Sub

    Sub AppStart (Form1 As Form, Args() As String)
       
        MainForm = Form1
        MainForm.RootPane.LoadLayout(
    "MainLayout")
        MainForm.Show
       
        WebView1.Initialize(
    "WebView1")
       
        AddTab(
    "NewTab1")
        AddTab(
    "NewTab2")
        AddTab(
    "NewTab3")
       
    End Sub

    Sub AddTab(TabText As String)
       
        
    Dim myNewTabPage As TabPage
        myNewTabPage.Initialize
        myNewTabPage.Text = TabText
       
        
    Dim myNewAnchorPane As AnchorPane
        myNewAnchorPane.Initialize(
    "")
        myNewTabPage.Content = myNewAnchorPane
       
        TabPane1.Tabs.Add(myNewTabPage)
       
    End Sub

    Sub TabPane1_TabChanged (SelectedTab As TabPage)

        
    Dim myAnchorPane As AnchorPane = SelectedTab.Content
       
        myAnchorPane.RemoveAllNodes
        myAnchorPane.AddNode(WebView1, 
    00, -1, -1)
        myAnchorPane.SetAnchors(WebView1, 
    5555)

        WebView1.Loadhtml(SelectedTab.Text)

    End Sub
    Nochmals Danke für Eure Hilfe & Grüße ... Peter
     

    Attached Files:

    MaFu likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice