Formularios


Objetivo: Formularios
Perdonad si estoy preguntando algo tonto...
Soy una principiante en esto de gambas, y tengo una dudilla...
Tengo en un formulario, un botón, que cuando se haga clic en el, se cambie el texto (o cualquier otra función) de un Label que tengo en otro formulario, ¿cómo lo podría hacer?

Gracias

Perfil MP  
BrunoIV
Objetivo: Re: Formularios
Proyecto --> Propiedades --> Opciones --> Los controles del formulario son públicos = "SI"

formulario.miLabel.Text = "hola"



EDICIÓN:
Si no quieres que todo sea público hay una propiedad que se llama "public" (me acabo de percatar)

Un abruzo

última edición por BrunoIV el Lunes, 24 Septiembre 2012, 19:19; editado 1 vez
Objetivo: Re: Formularios
LalaLalines_

Citar:
Perdonad si estoy preguntando algo tonto...

No hay preguntas tontas... haces bien en preguntar

Bienvenida al foro...

Saludos

Objetivo: Re: Formularios
Hola

En mi opinión, aunque no estemos usando el paradigma POO para programar, no es recomendable hacer públicos los controles de formulario, por el peligro de duplicar nombres de controles y generar problemas tontos a veces difíciles de resolver.

La forma correcta es hacer uso de las Propiedades para cambiar atributos de los controles en otros formularios. Como las propiedades son públicas por defecto, no es necesario nunca más hacer públicos los controles de formularios.

En el formulario donde quieres actuar:

Private $mivariable

Property mipropiedad as String


'El siguiente código lo genera el IDE automáticamente al declarar la propiedad
Private Function mipropiedad_Read() as String

Return $mivariable

End


Private Sub mipropiedad_Write(value as String)

value = $mivariable

End


En el otro formulario podrás acceder a la propiedad "mipropiedad" como a cualquier variable pública, como atributo del propio formulario, pero sin poner en peligro la integridad de los controles, es decir, sin romper el principio de encapsulamiento. Por ejemplo:

'para obtener y asignar su valor a una variable
unavariable = Otroformulario.mipropiedad

'para cambiar el valor de la propiedad

Otroformulario.mipropiedad = "un valor string, en este caso"


El ejemplo que he puesto usa una variable privada $mivariable para almacenar el valor temporal que puede tomar la propiedad, pero podría haber usado directamente una propiedad de un control real, como el .Text de un TextBox, por ejemplo. O hacerlo dentro de los métodos _Read y _Write sin usar esa variable.

Quien haya programado en VB6 se acordará de los getters y setters, que es básicamente lo mismo que he explicado.

A alguien le puede parecer tedioso o innecesario todo esto, pero realmente es la forma de proceder correcta.

Saludos

Perfil MP  
Objetivo: Re: Formularios
espero que hayas empezado leyendo el libro del gambas aun un poco anticuado pero te sirve de mucha ayuda

Perfil MP  

Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0846s (PHP: -29% SQL: 129%)
Consultas SQL: 24 - Debug off - GZIP Activado