CONTROLE UPDOWN?

TAMANINI 13/05/2004 14:44:40
#24500
Mais uma dúvida.

Como faço para controlar quatro textbox com apenas um updown?
Estava fazendo assim, mas gera erro!

'Está função é para 2 texbox de minuto
Private Sub txtTm1_GotFocus(Index As Integer)
UpDownT1.Enabled = True
UpDownT1.BuddyControl = txtTm1(Index)
End Sub

'Está outra é para 2 textbox de hora
Private Sub txtTh1_GotFocus(Index As Integer)
'UpDownT1.Enabled = True
'UpDownT1.BuddyControl = txtTh1(Index)
End Sub

Toda vez que o updownT1.buddycontrol recebe outro controle para poder controlar, o controle updownT1 sai do lugar, ele vai para a posição ao lado de cada textbox.
Não tem como apenas um controle updown controlar 4 textbox?
Alguém pode me ajudar?
USUARIO.EXCLUIDOS 13/05/2004 15:21:41
#24510
Resposta escolhida
Por favor colegas: não vão me bater, e se bater, batam devagar.

O que vou mostrar embaixo não é nem um pouco elegante, mas funciona !!!!!:

Tamanini.

O controle Updown não só "gruda" no textbox, como também torna o Width do textbox igual ao seu. Coisas da Microsoft. Salve as posiçoes e o widht antes e depois restaure:

Dim pos1 As Integer
Dim pos2 As Integer
Dim pos3 As Integer
Dim pos4 As Integer
Dim pos5 As Integer

Private Sub Form_Load()
pos1 = Text1.Width
pos2 = Text2.Width
pos3 = Text3.Width
pos4 = Text4.Width
pos5 = UpDown1.Left
End Sub

Private Sub Text1_GotFocus()
UpDown1.BuddyControl = Text1
Text1.Width = pos1
Text2.Width = pos2
Text3.Width = pos3
Text4.Width = pos4
UpDown1.Left = pos5
End Sub

Private Sub Text2_GotFocus()
UpDown1.BuddyControl = Text2
Text1.Width = pos1
Text2.Width = pos2
Text3.Width = pos3
Text4.Width = pos4
UpDown1.Left = pos5
End Sub

Private Sub Text3_GotFocus()
UpDown1.BuddyControl = Text3
Text1.Width = pos1
Text2.Width = pos2
Text3.Width = pos3
Text4.Width = pos4
UpDown1.Left = pos5
End Sub

Private Sub Text4_GotFocus()
UpDown1.BuddyControl = Text4
Text1.Width = pos1
Text2.Width = pos2
Text3.Width = pos3
Text4.Width = pos4
UpDown1.Left = pos5
End Sub


USUARIO.EXCLUIDOS 13/05/2004 15:23:03
#24511
Tamanini:

Ainda não fiz aquela OCX por absoluta falta de tempo. Vou ver se dá pra fazer no fim de semana.
USUARIO.EXCLUIDOS 13/05/2004 15:27:37
#24513
Simplificando um pouquinho:

Dim pos1 As Integer
Dim pos2 As Integer
Dim pos3 As Integer
Dim pos4 As Integer
Dim pos5 As Integer

Private Sub Form_Load()
pos1 = Text1.Width
pos2 = Text2.Width
pos3 = Text3.Width
pos4 = Text4.Width
pos5 = UpDown1.Left
End Sub

Private Sub Text1_GotFocus()
UpDown1.BuddyControl = Text1
Text1.Width = pos1
pDown1.Left = pos5
End Sub

Private Sub Text2_GotFocus()
UpDown1.BuddyControl = Text2
Text2.Width = pos2
UpDown1.Left = pos5
End Sub

Private Sub Text3_GotFocus()
UpDown1.BuddyControl = Text3
Text3.Width = pos3
UpDown1.Left = pos5
End Sub

Private Sub Text4_GotFocus()
UpDown1.BuddyControl = Text4
Text4.Width = pos4
UpDown1.Left = pos5
End Sub
USUARIO.EXCLUIDOS 14/05/2004 09:00:27
#24642
Tamanini.

Comigo funcionou beleza. Estou mandando para vc. os fontes em que eu testei, mas que na verdade nada mais são que os códigos postados, com um form com 4 textbox (text1, text2, text3, text4 e um updown (updown1).

Sim. Do jeito que vc mencionou:

textbox1.text = updown1.value
ou
updown1.value = textbox1.text

com certeza vai funcionar, mas vc terá que testar sempre os valores digitados no textbox, para saber se são numéricos, nulos, estão dentro do range (Min, Max), etc.
USUARIO.EXCLUIDOS 14/05/2004 09:13:57
#24645
Tamanini:

Já enviei. Use a versão não simplificada em que ele restaura o Width de "todos" os TextBox.
USUARIO.EXCLUIDOS 14/05/2004 10:59:39
#24666
Tamanini:

O format é no Textbox:

Private Sub Text1_Change()
Text1 = Format(Text1, "00")
End Sub

Faça isto em todas textbox.

O BuddyControl faz exatamente o que vc está querendo fazer "na mão". Quando vc altera o textbox altera também o updown1.Value e Vice Versa.
USUARIO.EXCLUIDOS 14/05/2004 14:47:36
#24714
Tamanini.

O correto é:

UpDownT1.BuddyProperty = "Text" - entre aspas.

Mas não precisa fazer por código. Coloque na página de propriedades.
USUARIO.EXCLUIDOS 14/05/2004 16:24:01
#24746
Sim. Faça conforme o exemplo. aqui funcionou beleza. os controles não se mexem 1 mm.
Tópico encerrado , respostas não são mais permitidas