Validar varios textfield

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

  1. Cambia el “Super” de uno TextField para “txtTextRequired”

  2. 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