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

Batista15

[Resolvido]Distribuir numeros

30 mensagens neste tópico

boas,

por exemplo tenho uma form para meter por exemplo o numero "5" depois clico numa seta e quero que noutra form distribuia "1" "2" "3" "4" "5" por as textboxs que tenho la! como fasso?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho uma textbox numa form! Insiro o numero "2" ao clicar numa seta ira aparecer outra form em que queria que aparecesse em duas texbox o numero 1 numa e o numero 2 noutra! fiz-me entender?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou seja dependendo do numero terias de destribuir o mumero de algarismos até esse digito??'

mesmo que seja com 1000???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou seja dependendo do numero terias de destribuir o mumero de algarismos até esse digito??'

mesmo que seja com 1000???

Sim até esse digito!

Lol até 1000 não mas até 85 sim!  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hum....

se fizeres um ciclo...

for each

penso que dá para resolver a situação...:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hum....

se fizeres um ciclo...

for each

penso que dá para resolver a situação...:)

Podes-me dar um exemplo?  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim numero As Integer
        numero = (nome da textbox onde inseres o numero)
        Dim i As Integer
        For i As Integer = 1 To numero
            'instrução para abrir o form e por mais um numero...
        Next

é simples...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ups...

esqueci-me de um pormenor....

a variavel i tem contar sempre mais um!

xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ups...

esqueci-me de um pormenor....

a variavel i tem contar sempre mais um!

xD

O ciclo FOR faz isso por ti. É para isso que ele serve, nestes propósitos.

@Batista15, e tu tens lá essas 85 textboxes?

Só por curiosidade, e quissá optimização, qual é o intuito desse formulário?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya....eu até mas esqueço!xD

loool

pois, no que toca a isso tb estou curioso...xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O ciclo FOR faz isso por ti. É para isso que ele serve, nestes propósitos.

@Batista15, e tu tens lá essas 85 textboxes?

Só por curiosidade, e quissá optimização, qual é o intuito desse formulário?

Sim tenho! E uma folha de obra!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas não devias ter. :dontgetit:

Era mais fácil se fossem adicionadas em runtime :)

Sendo assim, podes resolver o assunto aplicando este método:

- Dá nomes a todas as textboxes no seguinte formato: TXi, onde i é o número da textbox.

Por exemplo TX5, TX43, TX85, etc...

- Cria este Private Sub:

   Private Sub ProcuraEPreencheCaixaDeTexto(ByVal Numero As Integer)
        For Each C As Control In Me.Controls
            If C.Name = "TX" & Numero Then
                Dim EstaTX As TextBox = CType(C, TextBox)
                EstaTX.Text = Numero.ToString
            End If
        Next
    End Sub

Agora, para testares mete isto num botão, ou lá onde arrancas a funcionalidade:

        Dim NumeroMaximo As Integer = 3
        For i As Integer = 1 To NumeroMaximo
            ProcuraEPreencheCaixaDeTexto(i)
        Next

Nota que a variável NumeroMaximo representa o numero que tens lá na tal caixa de texto com o número.



Dim numero As Integer
        numero = (nome da textbox onde inseres o numero)
        Dim i As Integer
        For i As Integer = 1 To numero
            'instrução para abrir o form e por mais um numero...
        Next

é simples...

Só um reparo duduml, ao escreveres For i as Integer = 1, já a estás a declarar e até a inicializar. Não precisas do Dim i as Integer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim numero As Integer
        numero = (nome da textbox onde inseres o numero)
        Dim i As Integer
        For i As Integer = 1 To numero
            'instrução para abrir o form e por mais um numero...
        Next

é simples...

Isso e na seta! E agora na form onde quero que apareça os números distribuídos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse ciclo não te vai resolver nada... nothing personal duduml :biggrin:

Acabei de escrever e testar a solução que te dei.

Só não tinha reparado que era entre 2 forms, portanto aqui vai:

No form onde tens a tal seta para distribuir o numero, metes isto na seta:

(onde Form1 é substituído por o nome do form que tem as 85 textboxes)

        Dim NumeroMaximo As Integer = 2
        Dim F1 As New Form1
        F1.NumeroMax = NumeroMaximo
        F1.Show()

Na form das 85 textboxes:

(e não te esqueças de lhe dar nomes TX1, TX2, TX3, TX4, etc....)

    Private NumeroMaximo As Integer = 0

    Public WriteOnly Property NumeroMax()
        Set(ByVal value)
            NumeroMaximo = value
        End Set
    End Property

    Private Sub Distribuí()
        For i As Integer = 1 To NumeroMaximo
            ProcuraEPreencheCaixaDeTexto(i)
        Next
    End Sub

    Private Sub ProcuraEPreencheCaixaDeTexto(ByVal Numero As Integer)
        For Each C As Control In Me.Controls
            If C.Name = "TX" & Numero Then
                Dim EstaTX As TextBox = CType(C, TextBox)
                EstaTX.Text = Numero.ToString
            End If
        Next
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Distribuí()
    End Sub

A ideia é passar o numero a desmembrar através de uma propriedade e proceder ao preenchimento no arranque do form.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse ciclo não te vai resolver nada... nothing personal duduml :biggrin:

Acabei de escrever e testar a solução que te dei.

Só não tinha reparado que era entre 2 forms, portanto aqui vai:

No form onde tens a tal seta para distribuir o numero, metes isto na seta:

(onde Form1 é substituído por o nome do form que tem as 85 textboxes)

        Dim NumeroMaximo As Integer = 2
        Dim F1 As New Form1
        F1.NumeroMax = NumeroMaximo
        F1.Show()

Na form das 85 textboxes:

(e não te esqueças de lhe dar nomes TX1, TX2, TX3, TX4, etc....)

    Private NumeroMaximo As Integer = 0

    Public WriteOnly Property NumeroMax()
        Set(ByVal value)
            NumeroMaximo = value
        End Set
    End Property

    Private Sub Distribuí()
        For i As Integer = 1 To NumeroMaximo
            ProcuraEPreencheCaixaDeTexto(i)
        Next
    End Sub

    Private Sub ProcuraEPreencheCaixaDeTexto(ByVal Numero As Integer)
        For Each C As Control In Me.Controls
            If C.Name = "TX" & Numero Then
                Dim EstaTX As TextBox = CType(C, TextBox)
                EstaTX.Text = Numero.ToString
            End If
        Next
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Distribuí()
    End Sub

A ideia é passar o numero a desmembrar através de uma propriedade e proceder ao preenchimento no arranque do form.

O código esta todo correcto mas não esta a trabalhar! E não me esqueci dos "TX"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lool

eu tb fiz no momento, mas penso que tb daria...xD

CUMPS

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta algum bocado de codigo! Bem visto falta codigo onde esta a seta, que nem faz a verificação do numero que esta na textbox

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então testa-o duduml.

Sinceramente não estou a ver como resolves o problema dessa forma :)

Batista15, alguma coisa estás a fazer mal. Tenho-o à frente a funcionar.

Os nomes que deste têm de ser com letra grande. TX é diferente de Tx ou de tx e até de tX.

Verifica melhor, e se mesmo assim não conseguires, envio-te o projecto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então testa-o duduml.

Sinceramente não estou a ver como resolves o problema dessa forma :)

Batista15, alguma coisa estás a fazer mal. Tenho-o à frente a funcionar.

Os nomes que deste têm de ser com letra grande. TX é diferente de Tx ou de tx e até de tX.

Verifica melhor, e se mesmo assim não conseguires, envio-te o projecto.

Ja verifiquei todo! E ta mesmo tudo, não sei porque não está a fazer!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Falta algum bocado de codigo! Bem visto falta codigo onde esta a seta, que nem faz a verificação do numero que esta na textbox

F1.NumeroMax = NumeroMaximo

Substituí o NumeroMaximo por o tal sitio onde escreves o valor antes de carregar na seta.

Dei-te, obviamente, código para não dar erro. Terás sempre de fazer alterações.

Até porque não sei o que está por aí à volta...

Antes de te enviar o projecto, posta aqui todo o código que tens na seta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

F1.NumeroMax = NumeroMaximo

Substituí o NumeroMaximo por o tal sitio onde escreves o valor antes de carregar na seta.

Dei-te, obviamente, código para não dar erro. Terás sempre de fazer alterações.

Até porque não sei o que está por aí à volta...

Antes de te enviar o projecto, posta aqui todo o código que tens na seta.

Ate meti tambem no nome da minha numeromaximo mas nao esta a funcionar  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra lá o código todo da seta.

Dim NumeroMaximo As Integer = 2
        Dim F1 As New Form11
        F1.NumeroMax = NumeroMaximo
        F1.Show()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E dizes que deste o nome à textbox onde tens o número a distribuír, NumeroMaximo?

Se o fizeste, o que tens de fazer é:

        Dim F1 As New Form11
        F1.NumeroMax = CInt(NumeroMaximo.Text)
        F1.Show()

E já tens o resto do código todo lá no Form11 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora