Hola tengo el siguiente duda, tengo varias textfield, y quiero validar que ningun textfield este vacio, si esta vacio activa un canvas con una flecha avisando que debe llenar ese campo, como son varios textfield lo estoy haciendo uno por uno, hay alguna otra forma mas simple que el codigo que hice yo? gracias de antemano!
if textfield1.text = “” then
canvas1.Visible = true
else
canvas1.Visible = false
end
if textfield2.text = “” then
canvas1.Visible = true
else
canvas1.Visible = false
end
if textfield3.text = “” then
canvas1.Visible = true
else
canvas1.Visible = false
end
He creado un mtodo “ValidaCampos”, que devuelve un valor lgico, con el resultado de la validacin. En el mtodo, camino todos los campos del formulario, as:
//----- Valida o preenchimento dos campos obrigatrios
Dim i As integer
Dim fieldname, fieldLabel, fieldcontents as String
For i = 0 to form.ControlCount-1 //number of controls in window
If form.control(i) IsA txtTextRequired then
if txtTextRequired(form.Control(i)).Requerido then
fieldname = txtTextRequired(form.control(i)).Name
fieldcontents = txtTextRequired(form.control(i)).text
fieldLabel = txtTextRequired(form.Control(i)).label
if fieldContents = "" then
MsgBox "Campo [" + fieldLabel + "] obrigatrio"
txtTextRequired(form.control(i)).SetFocus
return false
end if
end if
end if
next
return true
reemplazar txtTextRequired, que es un textField objeto extendido para campo de texto, e ignorar las propiedades especficas. Utilice slo la propiedad de texto para comprobar.
El mtodo debe tomar como parmetro una ventana o ContainerControl …
Adelar gracias! Lo probare.
Hola Mike
Mira este ejemplo, los TextField se ajustan según los dimensiones en tiempo de diseño. Además puedes elegir otra imagen si lo deseas, en este caso la que cargué esta codificada como texto para garantizar integridad del proyecto, pero puedes agregarle una imagen directamente.
Captura

Código fuente
Espero te sea de ayuda
Hola Javier, el ejemplo es excelente, pero tengo una duda, ya que mis textfield no estan incluidos en un container, entonces a la hora de ejecutar una linea por ejemplo de update o delete de mysql, como debo llamar a dicho textfield que esta dentro del container, no se si me explico bien.
Adelar por lo que veo tu tienes el plugin de MBS, cosa que yo no tengo…no pude correr tu codigo.Gracias igualmente
No, no tiengo el plugin… Por qu piensas eso?
No logro hacerlo funcionar con tu cdigo y buscando por la red me tope con http://www.monkeybreadsoftware.eu/listarchive-realbasic-nug/2005-03-16-19.shtml , es un ejemplo como el que tu me has pasado o yo entonces estoy haciendo algo mal…
En el ejemplo que he pasado, estoy usando un control que cre, derivado de TextField. En este control, cre la propiedad “Requerido”, que es booleano, “Etiqueta”, que tiene el nombre de la etiqueta en la pantalla … As que el validador funciona automticamente y slo devuelve el error de los controles que tiene la propiedad “Requerido” como verdadero.
Tengo campos del formulario que puede estar en blanco, y otros no.
El uso de un TextField normal, sera as:
//----- Valida o preenchimento dos campos obrigatrios
Dim i As integer
For i = 0 to form.ControlCount-1 //number of controls in window
If form.control(i) IsA TextField then
if TextField(form.control(i)).Text = "" then
MsgBox "Campo obrigatrio"
TextField(form.control(i)).SetFocus
return false
end if
end if
next
return true
Pero de esta manera, no se puede poner en el mensaje de que es el campo que est en un error … pero puede centrarse en ella, de la misma manera …
Lo siento por el “Portunhol” terrible…
Jajajajaja tu “Portunhol” no es terrible, menos cuando me estas dando una ayuda, gracias!
Se quieres, baja de mi dropbox el controlo…
txtTextRequired
!) arrastre el archivo a su proyecto
-
Cambia el “Super” de uno TextField para “txtTextRequired”
-
Guarda
Despus de eso, haciendo clic en el campo, las nuevas propiedades aparecen en el inspector…
As, puede utilizar el primer ejemplo, o el ltimo.
Mike
Nombrecontainer + objeto.propiedad
Ejemplo.
ctTextFieldCheck1.TextField1.Text = Nuevo valor según update
Hola! gracias Javier y Adelar, las dos opciones me funcionan de maravilla!
Hola
Puedes crear una subclase de clase textfield.
Aadir un metodo
EnsenaCanvasSiVacio (MiCanvas as Canvas)
y dentro
If me.text="" Then
MiCanvas.Visible=true
Else
MiCanvas.visible=false
End if
Substituye todos textfield por subclase y llama la funcin pasando su canvas correspondiente como parmetro
Debera funcionar
un saludo
Krzysztof