Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Referencia De Controles Por Nombre
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Referencia De Controles Por Nombre 
 
¿Alguien sabe cómo referenciar un control de un formulario por su nombre? Me explico:

Tengo una función que rellena los datos de un formulario (o un panel o cualquier otro contenedor) con los de una consulta sql.
Supongamos que queremos rellenar el .text de una label que se llama "firma" con el usuario y la hora en que se modificó el registro
bien, pues no encuentro la manera de evitar éste código:

FOR EACH o IN oContenedor.Children
    IF o.Name = "firma" THEN
        o.text = "Última modificación realizada por " & usuario & " el " & fechamod
        BREAK
    ENDIF  
NEXT
 


Enemigo como soy de formularios con demasiadas "cosas", el código es casi instantáneo (20 ó 30 bucles hasta encontrar la firma), pero no me parece elegante ni rápido.
¿No se podría hacer algo así como : oContenedor.Children["firma"].text= "Última modificación etc.... "  ?

Sólo encuentro referencias por el número de índice. Pero como desconozco la posición de la firma en el contenedor, pues como que no me libro de recorrer toda la colección Children para encontrarlo.

¿Alguna idea?... Si es que me he explicado, que tiendo a ser demasiado oscuro, me temo.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia De Controles Por Nombre 
 
Te entiendo muy bien shordi, pero lamentablemente no puedo ayudarte.

Yo tuve el mismo problema en el fondo que es el de conocer el array de objetos cuando no conoces el índice. Una variante del mismo problema es ser capaz de obtener una instancia precisa de las muchas que puedas tener de un formulario. Lógicamente en ese array de objetos todos los formularios se llaman igual y no fuí capaz de encontrar la forma de identificar inequívocamente uno concreto.

Tengo mucho interes en ello. En su día probé con la object, con la clase info, ..., etc todo lo que se me ocurrió. No se si es que no se puede o que yo aún sabiendo que conozco poco gambas resulta que aun conozco menos de lo que me creo.

Una vez vi algo curioso que hizo benoit en nabble con una colección de objetos que me dije "esto lo tengo que ver mejor" y luego no fuí capaz de encontrarlo.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia De Controles Por Nombre 
 
no existe una funcion eval() ????

digo como para poner  eval( "campo.text="& strvariable & "de " & strOtraVarible )


¿?¿?¿?¿?¿?
 



 
chaskux - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia De Controles Por Nombre 
 
No entiendo muy bien por qué quieres acceder al control por su nombre en lugar de hacerlo directamente... ¿estás llamando a la función que setea su texto desde otro formulario o clase?

Si es así, puedes crear un procedimiento público en el form donde está el Label para llamarlo desde cualquier parte de tu proyecto:

PUBLIC SUB SetLabelFirma(txt AS String)

     LabelFirma.Text = txt

END


También se puede acceder así desde otro formulario:

FMain.Controls["LabelFirma"].Text


Independientemente de su ancestro directo.

Eso evitaría tener que recorrer la jerarquía de controles.

Si es otro tu objetivo, pues no lo entendí bien  
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Referencia De Controles Por Nombre 
 
El tema es, Jesús, conseguir una serie de funciones que permitan la estandarización de las acciones normales de cualquier formulario. En concreto estoy haciendo un módulo que permita:
-Cargar los datos de la base de datos en el contenedor
-Rellenar los combos y listas, si los hay, con las tablas relacionadas mostrando los campos alternativos, si eso es lo que deseamos.
-grabar los datos en la tabla / tablas, si se ha producido algún cambio en ellos y no hacer nada si no se ha producido ningún cambio.
-limpiar los campos caso de querer un registro nuevo o un cambio de registro
 
Símplemente llamando a las funciones estándar. Ejemplo:
Tenemos el módulo "formularios" con las funciones (y otro "comun" con una serie de funciones más genericas, pero eso es otra historia)
Para rellenar un formulario con el contenido de un registro cuyo dni tenemos en la variable privada key sólo hace falta este código:

  dim res as result
  res = comun.consultar("personas", "dni", key, "exec") 'donde personas es la tabla, dni el campo clave, key el valor que buscamos y exec el tipo de consulta
  formularios.llenaCampos(res, ME.Panel5) 'panel5 contiene todos los campos de la tabla dentro del formulario
  formularios.llenalista(provincia, "provincias", "denominacion") 'donde provincia es un comboBox, provincias una tabla y denominación el campo del combo
  dirty = FALSE  ' indica que no se ha modificado nada aún.
 


Este código es casi estándar en todos los formularios y mucho más simple de mantener. Dejamos el código de la clase del formulario para cosas específicas, como validaciones y demás.
Dentro de este esquema de funcionamiento, hay que recorrer los distintos campos del contenedor y de la base, etc. etc. y no sabemos en qué posición irá cada uno. De ahí la necesidad de acceder por nombre.
Si os interesa adjuntaré el módulo... pero no está perfeccionado aún.
 




===================
No podemos regresar
 
última edición por shordi el Martes, 17 Noviembre 2009, 21:19; editado 3 veces 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Variable Por Referencia campanillas General 8 Lunes, 02 Noviembre 2009, 14:46 Ver último mensaje
campanillas
No hay nuevos mensajes Objetos: Guardar Y Recuperar Referencia jsbsan General 4 Viernes, 08 Junio 2012, 16:31 Ver último mensaje
jsbsan
No hay nuevos mensajes Referencia A Objeto Con El Nombre En Una C... pantitas General 15 Martes, 07 Julio 2015, 18:10 Ver último mensaje
vuott
No hay nuevos mensajes Me Sale Nombre Autor Con Nombre Paquete En... v3ctor General 1 Martes, 28 Junio 2016, 14:41 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron