Jump to content
Sign in to follow this  
nelgaio

Form+ToollStrip

Recommended Posts

nelgaio

Boas :thumbsup:

Na minha form principal, está como MDI. Alguém sabe se quando abrimos uma form dentro da form principal é possível aparecer o nome dela numa ToolStrip? 😲

Share this post


Link to post
Share on other sites
Caça

Poder pode... mas no MenuStrip dá para colocar um menu com todas as janelas abertas automaticamente


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Isso não é difícil de fazer mas agora não tenho tempo para te explicar melhor.

Basicamente tens de verificar qual é a janela que está activa no MDI e ir buscar o seu titulo e colocar na barra


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Aquilo, se for o que estou a pensar, é uma StatusStrip.

Bem, pega lá algo robusto e a partir daqui desenvolve como por bem achares.

Adicionas uma ToolStripStatusLabel1 na StatusStrip e fazes o seguinte:

1. Sempre que abres um novo Form, colocas os outros como minimized:

   

Private Sub stateMinimized()
        For i As Integer = My.Application.OpenForms.Count - 1 To 0 Step -1
            If My.Application.OpenForms.Item(i).IsMdiChild = True Then
                My.Application.OpenForms.Item(i).WindowState = FormWindowState.Minimized
            End If
        Next i
    End Sub

2. Apanhas então o nome do rapazote que está aberto:

Private Sub checkName()
        For i As Integer = My.Application.OpenForms.Count - 1 To 0 Step -1
            If My.Application.OpenForms.Item(i).IsMdiChild = True Then
                If My.Application.OpenForms.Item(i).WindowState = FormWindowState.Normal Then
                    ToolStripStatusLabel1.Text = My.Application.OpenForms.Item(i).Name
                End If
            End If
        Next i
    End Sub

3. Para utilizares o código:

     

        stateMinimized()
        Dim form2 As New Form2
        form2.MdiParent = Me
        form2.Show()
        checkName()

Share this post


Link to post
Share on other sites
nelgaio

Aquilo, se for o que estou a pensar, é uma StatusStrip.

Bem, pega lá algo robusto e a partir daqui desenvolve como por bem achares.

Adicionas uma ToolStripStatusLabel1 na StatusStrip e fazes o seguinte:

1. Sempre que abres um novo Form, colocas os outros como minimized:

   

Private Sub stateMinimized()
        For i As Integer = My.Application.OpenForms.Count - 1 To 0 Step -1
            If My.Application.OpenForms.Item(i).IsMdiChild = True Then
                My.Application.OpenForms.Item(i).WindowState = FormWindowState.Minimized
            End If
        Next i
    End Sub

2. Apanhas então o nome do rapazote que está aberto:

Private Sub checkName()
        For i As Integer = My.Application.OpenForms.Count - 1 To 0 Step -1
            If My.Application.OpenForms.Item(i).IsMdiChild = True Then
                If My.Application.OpenForms.Item(i).WindowState = FormWindowState.Normal Then
                    ToolStripStatusLabel1.Text = My.Application.OpenForms.Item(i).Name
                End If
            End If
        Next i
    End Sub

3. Para utilizares o código:

     

        stateMinimized()
        Dim form2 As New Form2
        form2.MdiParent = Me
        form2.Show()
        checkName()

stateMinimized()
        Dim form2 As New Form2
        form2.MdiParent = Me
        form2.Show()
        checkName()

No As New coloquei Form, mas depois dá erro.

E se tiver um Button na ToolStrip e depois quando a janela estiver minimizada eu carregar e ela abrir?

Share this post


Link to post
Share on other sites
Bartude

Eu acho que esta te a dar esse erro pk no formulário onde estas a por esse código chama-se Form.

Tenta por outro nome qualquer :thumbsup:

Share this post


Link to post
Share on other sites
Caça

O objectivo do MDI é chamar forms filho para dentro do pai, não é chamar o pai para dentro do pai...

O Form2 é o teu MDI, por isso não o podes colocar como filho


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
nelgaio

O objectivo do MDI é chamar forms filho para dentro do pai, não é chamar o pai para dentro do pai...

O Form2 é o teu MDI, por isso não o podes colocar como filho

Confundiste-me :D

stateMinimized()
Dim form2 As New Form
form2.MdiParent = Me
form2.Show()
checkName()

Não pode ser isto, certo?

Share this post


Link to post
Share on other sites
bioshock

Hunf...Porque é que não experimentas tal e qual eu coloquei? :wallbash:

Share this post


Link to post
Share on other sites
bioshock

Normal, só podes conter um MDI Pai. Isto é a mesma coisa que uma árvore genealógica.

Colocas o Form onde abres os MDI Filhos como MDI Container, o resto, não mexes.

Se dá essa mensagem, é porque não tens o Form2..não te parece? Trocas pelo Form que queres chamar.

Edit: Não convém apagares posts.

Share this post


Link to post
Share on other sites
nelgaio

Mas a ideia não era abrir uma form em concreto e colocar o nome dela na toolstrip, mas sim abrir uma qualquer form. Por isso se meter lá uma form, só vai abrir aquela.

Share this post


Link to post
Share on other sites
nelgaio

Não me devo estar a explicar bem. Dá maneira que está iria abrir a Form2, certo?

Mas o que queria era as Forms que eu abrisse a partir de botões, etc, aparecesse o nome delas na ToolStrip.

Share this post


Link to post
Share on other sites
bioshock

Geez christ.. 😡

Abrir Form 1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        stateMinimized()
        Dim form1 As New Form1
        form1.MdiParent = Me
        form1.Show()
        checkName()
    End Sub

Abrir Form 2:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        stateMinimized()
        Dim form2 As New Form2
        form2.MdiParent = Me
        form2.Show()
        checkName()
    End Sub

Share this post


Link to post
Share on other sites
nelgaio

Geez christ.. 😡

Abrir Form 1:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        stateMinimized()
        Dim form1 As New Form1
        form1.MdiParent = Me
        form1.Show()
        checkName()
    End Sub

Abrir Form 2:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        stateMinimized()
        Dim form2 As New Form2
        form2.MdiParent = Me
        form2.Show()
        checkName()
    End Sub

Pensava que só um código dava para todas :D

Já percebi, obrigado :D

Share this post


Link to post
Share on other sites
nelgaio

Quando entro numa form, depois deveria criar um button automaticamente na toolstrip. Porque estar a definir uma button para cada form depois deve dar mal.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.