Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Seabra

Criar caixa de texto movel com o rato em runtime

Recommended Posts

Seabra

Necessitava de criar uma TextBox associada a um Label e que, em runtime, quando eu a mover com o rato ela se mova juntamente com o Label e que pertença a um Array para que eu possa criar vários conjuntos.

Alguém tem ideia como posso fazer isso?

Desde já obrigado a quem se disponibilizar a ajudar.

Cump

Share this post


Link to post
Share on other sites
Seabra

Agradeço a uma alma que me possa dar uma ajuda  ;).

No fundo o que pretendo é criar em runtime várias caixas de texto e movelas com o rato.

Obrigado

Share this post


Link to post
Share on other sites
bioshock
'Declaração das variáveis;
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            TextBox1.Capture = False
            Dim msg As Message = _
                Message.Create(TextBox1.Handle, WM_NCLBUTTONDOWN, _
                    New IntPtr(HTCAPTION), IntPtr.Zero)
            Me.DefWndProc(msg)
        End If
    End Sub

Share this post


Link to post
Share on other sites
Seabra

bioshock Obrigado pela tua ajuda.

Já testei, funciona e era mesmo isto.

Já agora, e para criar mais TextBoxs iguais a esta em Run-time e poder também movelos para a posição que eu quiser?

Tem que ter um index.

Seabra

Share this post


Link to post
Share on other sites
bioshock

Mover para a posição que quiseres? Sem ser pelo rato?

Se tens várias Textboxs e queres fazer o mesmo com todas, fazes um ciclo For Each.

Share this post


Link to post
Share on other sites
Seabra

Imagina que  tenho uma form com o mapa da cidade no fundo.

Em runtime clico numa tecla que vai adicionar  uma Textbox e movo-a para uma zona do mapa clico na mesma tecla e cria-me outra textbox e movo-a para outro ponto.

Cada textbox vai mostrar um valor que está num array pela ordem que são criadas.

Será necessário também um botão para apagar a ultima textbox, caso se pretenda.

Cumprimentos

Seabra

Share this post


Link to post
Share on other sites
bioshock

Tens de procurar por loops e aprender um pouco deles.

Deixo-te aqui um exemplo, é algo robusto, não sei se funciona na totalidade, agora não tenho oportunidade de testar, mesmo que esteja mal, deve-te dar uma ideia.

'Declaras as variáveis;
Dim novaText As New Textbox
Dim i As Integer

'Preenches as propriedades da nova Textbox;
With novaText
            .Text = "oie"
            .Location = New Point(+20, +3)
            .Size = New Size(75, 23)
        End With

'Fazes este ciclo no botão;
For i = 0 To 10
Me.Controls.Add(novaText)
Next 

Share this post


Link to post
Share on other sites
Seabra

Tentei correr este código mas não funciona. Deve faltar qualquer coisa que eu não consigo perceber.

Clico no botão e não aparece nenhuma caixa de texto, nem dá qualquer erro.

Se poderes testar, ou alguém com mais experiência que eu o possa fazer  agradeço.

bioshock mais uma vez obrigado pela tua colaboração.

Seabra

Share this post


Link to post
Share on other sites
bioshock

Por acaso comigo funcionou. Mas não adiciona mais do que uma Textbox..

Tenta procurar no google por "Creating multiples buttons vb.net" ou algo do género e depois adaptas às textboxs.

Ou procura mesmo por: "Me.controls.add vb.net".

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  

×

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.