Programación General > Visual Basic para principiantes
Pregunta....
(1/1)
ferhn:
En un formulario tengo un txt llamado txtAA y quiero q al ingresar cualquier numero me lo muestre tambien en otro txt llamando txtA que esta dentro de una OCX q hice dentro del mismo formulario tengo lo siguiente:
--- Código: Text --- 'En el FormularioPrivate Sub txtAA_Change() ucFormula1.A = Me.txtAF.Text 'Para llamar a la ocx llamada ucFormula1End Sub 'En la OCXDim iA as StringPublic Property Get A() As String A = Val(iA)End Property Public Property Let A(ByVal vA As String) If IsNumeric(vA) Then If Val(vA) >= 0 And Val(vA) < 1000 Then iA = vA Else iA = 1 End If Else iA = 1 End IfEnd Property
Cuando modifico txtAA no me lo muestra en txtA, pero si modifico txtA si lo muestra en txtAA y debe ser en ambos lados igual otro problema que tengo es q dentro de txtAA debe ser un numero entre 0 y 1000 ahi estoy bien pero en txtA q esta en la Ocx debe ser entre 1 y 799 en la ocx tengo lo siguiente:
--- Código: Text --- Private Sub txtA_Change() If txtA.Text >= 0 And txtA.Text <= 799 Then iA = txtA.Text Else txtA.Text = Val(txtA.Text) End IfEnd Sub
No se cual es el problema, les agradeceria si ayudan a saber en que me estoy equivocando..... :wacko:
Nebire:
Ya te he respondido en el mensaje anterior... aquí sólo quría corregirte acerca de la propiedad...
En un OCX las propiedades si han cambiado deben anunciarse para que las rutinas Readproperty y writeproperty actualicen correctamente los datos.
Si tu propiedad era:
--- Código: Text ---Public Property Let A(ByVal vA As String) If IsNumeric(vA) Then If Val(vA) >= 0 And Val(vA) < 1000 Then iA = vA Else iA = 1 End If Else iA = 1 End IfEnd Property
Debe quedar algo así como:
--- Código: Text --- private p_ValorMax as integer ' almacena el valor de la propiedad ValorMaxPublic Property Let ValorMax(ByVal v As integer) if v>=0 and v<1000 then p_ValorMax=v PropertyChanged "ValorMax" else if p_ValorMax<>1 then p_ValorMax=1 PropertyChanged "ValorMax" else ' no cambia nada y por tanto no es necesaro anunciar cambio de valor en la propiedad end if end ifEnd Property
Otra cosa te indico si recibes un valor que ha de ser numérico el parámetro de la propiedad que sea numérico, si usan enteros pues un byte, integer ó long el que cubra el rango tolerado, y si es decimal un single o double, pero no un string, se pierde tiempo en convertir cadenas a valores luego a cadena lyuego otra vez a valores... deben hacerse las menos conversiones posibles... si tomas la propiedad de un control textbox, por ejemplo fíjate que ya la propiedad si su text no es numérico ya devuelve 0 salvo que que hagas un ValorMax=val(textbox1.text) y exista un texto que pueda valorarse numérico, como porejemplo ''299perro'' que tomaría 299... por tanto si te devuelve '0' ya no tienes que evaluar con la función isnumeric, sino sólo si está o no dentro del rango que tu querías mayor o igual a 1 y menor de 1000.
ferhn:
Bueno lo tomare en cuenta mañana lo revisare muchas gracias...
Navegación
Ir a la versión completa