VB6 MULTI DUVIDAS

PEDROPIO23 24/11/2011 02:54:36
#389907
Obs: São 2 Forms. Em um Tenho varias text box no meu programa cada uma é multiplicada por um numero pre estipulado. Um Cmd Button faz o evento das operações e mostra em um Label.

Form 2:

[txt-color=#0000f0]Private Sub[/txt-color] cmdcalcular_Click()
lblpont = (txtrb.Text * 1.7) - (txtfc.Text * 0.5) - (txtpe.Text * 0.3) - (txtgc * 6) +....
[txt-color=#0000f0]End Sub[/txt-color]

1: Estou tendo problemas como: nao quero que numeros negativos, com virgulas ou pontos(0.2 ; 2,6) e nem letras sejam aceitos.

2: Alguns Textbox somente digitar um numero (0 ou 1).

3: No 2º Form (Startup Form) Tem um checkbox para se estiver selecionado modificar o Startup Form de Lugar e Iniciar o 2º.

Se alguem tiver alguma Solução para os problemas sera de muita ajuda.
PEDROPIO23 24/11/2011 04:19:15
#389908
Atualizando: Resolvi a 3ª parte com if/then/else e Left/Top


[txt-color=#0000f0]Private Sub[/txt-color] Command1_Click()
If Abertura.Check1.DataChanged = [txt-color=#0000f0]True Then[/txt-color]
Abertura.Top = [Ô]7165[Ô]
Abertura.Left = [Ô]10060[Ô]
Load frm2
frm2.Visible = [txt-color=#0000f0]True
Else[/txt-color]
Load frm2
Unload Me
frm2.Visible = True
[txt-color=#0000f0]End If
End Sub[/txt-color]

Nesse meio tempo percebi um erro no tempo de execuçao que quando o campo esta vazio o programa não sabe por que numero multiplicar. Então voltando com uma 3ª duvida: Fazer com que nenhum textbox possa ficar em branco.
GANDA.NICK 24/11/2011 05:34:55
#389909
Resposta escolhida
Olá, veja se isto o ajuda:


1:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
MsgBox [Ô]Só é permitido numeros[Ô], vbCritical, [Ô]Mensagem de erro[Ô]
KeyAscii = 0
End If
End Sub


2:
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Len(Text2) = 1 And KeyAscii <> 8 Then
MsgBox [Ô]Só é permitido um Caracter[Ô], vbCritical, [Ô]Mensagem de erro[Ô]
KeyAscii = 0
ElseIf (KeyAscii < 48 Or KeyAscii > 49) And KeyAscii <> 8 Then
MsgBox [Ô]Só é permitido 0 (Zero) ou 1 (Um)[Ô], vbCritical, [Ô]Mensagem de erro[Ô]
KeyAscii = 0
End If
End Sub


O KeyAscii [Ô]8[Ô] é o BackSpace

Citação:

3: No 2º Form (Startup Form) Tem um checkbox para se estiver selecionado modificar o Startup Form de Lugar e Iniciar o 2º.



Parece-me que vc se está contradizendo... mas veja a solução do PedroPiu23, pode ser que o ajude..

Té +
PEDROPIO23 24/11/2011 06:20:06
#389910
Citação:

:

Parece-me que vc se está contradizendo... mas veja a solução do PedroPiu23, pode ser que o ajude..

Té +



humm bem notado amigo na realidade o checkbox fica no 1º form e não no 2ºcomo dito antes. Essa parte ja esta resolvida.(3ª)


Quanto a somente numeros ficou bom +... quando deixo em branco ele me da erro 13 (deve ser por nao aceitar o tipo de dado inserido no caso [txt-color=#e80000][Ô][Ô][/txt-color]). Será que não resolveria se eu tirasse da lista de teclas possiveis de digitar o del e o backspace(acho que vc falou isso + nao entendi mto bem)

Já a questão do 0 ou 1 não poderia ter ficado melhor. Perfeito.
PEDROPIO23 24/11/2011 07:13:51
#389912
Fiz o seguinte para os textbox em branco

[txt-color=#007100][ô]Evento para não haver campos em branco[/txt-color]
[txt-color=#0000f0]If[/txt-color] text1.Text = [Ô][Ô] [txt-color=#0000f0]Then[/txt-color]
MsgBox [Ô]Digite um Numero[Ô], vbCritical, [Ô]Erro[Ô]
text1.Text = [Ô]0[Ô]
[txt-color=#0000f0]End If[/txt-color]
OMAR2011 24/11/2011 08:20:16
#389920
Peguei isto em outro local.

Function SoNumeros(Key As Integer) As String
[ô]selecione os caracteres que desejar
[txt-color=#e80000] [ô]Const Números$ = [Ô]0123456789,.[Ô]
Const Números$ = [Ô],.01[Ô] [ô] Aqui você coloca os números que desejar[/txt-color]
SoNumeros = Key
If Key <> 8 Then [ô]conferindo se é backspace
[ô]vê se é um caracter permitido
If InStr(Números$, Chr(Key)) = 0 Then
SoNumeros = 0
End If
End If
End Function


Private Sub Text1_KeyPress(KeyAscii As Integer)
[txt-color=#007100]KeyAscii = SoNumeros(KeyAscii)[/txt-color]End Sub
GANDA.NICK 25/11/2011 01:09:19
#390013
Citação:

quando deixo em branco ele me da erro 13 (deve ser por nao aceitar o tipo de dado inserido no caso [Ô][Ô]).



é o que vc falou, vc terá de criar uma rotina para verificar se os TextBox[ô]s contem algo, essa rotina ficará dentro do seu botão [Ô]CmdCalcular[Ô] antes de fazer sua operação.

Se vc quiser deixar alguma TextBox em branco, terá que lhe atribuir algum valor dentro dessa rotina para verificar, 0 (zero) ou 1 (um) dependo do tipo de operação que vc está fazendo...

No caso de querer todos os TextBox[ô]s com valores, terá que avisar o usuario que nem todos os TextBox[ô]s não estão preenchidos e não deixar fazer sua operação...


Se precisar de um exemplo avisa ae!!!
ANDPAG 25/11/2011 06:34:21
#390014
Para digitar apenas numeros coloca no keypress do textbox esse codigo

If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then KeyAscii = 0

e para nao deixar o textbox sem nenhum nro inicie ele ja com 0, e coloque no change dele o codigo

If Len(Text1.Text) = 0 Then Text1.Text = [Ô]0[Ô]

abs
PEDROPIO23 20/12/2012 11:57:33
#416243
Uma tremenda falta de educação da minha parte não agradecer a voces.
O programa ficou otimo muito obrigado pela ajuda Segue o Link
Tópico encerrado , respostas não são mais permitidas