[RESUELTO] Mover control Label en tiempo de ejecución

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Fdv
Mensajes: 126
Registrado: Lun Abr 05, 2010 6:19 pm

[RESUELTO] Mover control Label en tiempo de ejecución

Mensaje por Fdv »

Hola!!
Estoy construyéndome otra base de datos, en OpenOffice Base, casi todo el trabajo está realizado en Macros.

Se trata de una herramienta para elaborar Planing de trabajo. Rellenas el trabajo que realizas, se almacena y ofrece unos cálculos.

A la hora se rellenar el planing de un usuario mensual no hay problema, este es el aspecto:

Imagen

La entrada de datos se realiza al clickar en controles label y rellenar un Dialogo que aparece.

El problema viene con el nuevo formulario que estoy realizando. Ahora quiero que me aparezca todo el planing mensual de todos los usuarios en el formulario, imaginar algo así:

Imagen

Yo quisiera que al hacer click en la barra de scroll, se movieran los controles Label. Pero no lo he conseguido, he probado:

Código: Seleccionar todo

Sub Scroll(oEvent as object)
	dim oForm as object, oScroll as object
	oScroll=oEvent.source.model
	oForm=oScroll.parent
	
	dim mLabel as object, oLabel as object		
	dim x as long, y as long', width as long, height as long
	'y=oLabel.getPosSize.y 
	
	dim contador as long

	for contador=1 to 7
		mLabel=oForm.getbyname("d"+cStr(contador))
		oLabel=ThisComponent.getCurrentController().GetControl(mLabel)
		y=oLabel.getPosSize.y 
		
		oFigura=SeleccionaFigura("s"+cstr(contador),oForm)
		if oScroll.ScrollValue>contador then
			x=50
			Point.x=0
			else
			x=200+(50*(contador-oScroll.ScrollValue))
			Point.x=5200+(1500*(contador-oScroll.ScrollValue))
			endif
			
		oLabel.setVisible(False)
		oLabel.setPosSize(x,y,,,com.sun.star.awt.PosSize.POSSIZE)
		oLabel.setVisible(true)
		next
Y nada... tambien he probado con oLabel.PosSize.x , experimentado con oLabel.DesignMode=true y nada.... ¡ ME ESTOY VOLVIENDO LOCO!

Nota: El GridControl de los formulario no me sirve, por la forma en la que quiero mostrar los datos. Incluso el grid de los dialogos también me vendría corto, porque es mucha la información (estática en un lateral) que quiero mostrar en cada fila.

¿ Alguien sabe alguna forma de mover un control label en el formulario?
Adjuntos
mover controles.jpg
planing mensual.jpg
Última edición por Fdv el Lun Feb 29, 2016 9:30 am, editado 1 vez en total.
OOo 3.3 Corriendo en Windows 7
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Mover control Label en tiempo de ejecución

Mensaje por mauricio »

No es común usar Label con eventos, reitero, solo no es común...

Si agregas un sencillo archivo donde se vea lo que tienes y como quieres que quede, podemos ayudarte mejor, así no partimos de cero...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Fdv
Mensajes: 126
Registrado: Lun Abr 05, 2010 6:19 pm

Re: Mover control Label en tiempo de ejecución

Mensaje por Fdv »

Gracias por el interés!

bien, En el Zip podeis encontrar:

- Cuadrante.odb: es la base de datos que estoy creando. Simplemente es como curiosidad, por si queréis ver como he implementado el acceso a la Base de Datos mediante labels. Formulario: Cuadrante Individual.

- Prueba desplazamiento.odb: Es el problema que planteo (lo estoy realizando en este fichero aparte hasta que sepa como implementarlo).

En Prueba desplazamiento.odb veréis que el formulario tiene un control scroll, y al hacer click en él, se moverán los controles shapes de abajo (lunes martes miercoles...).

En realidad se deberían mover también los controles labels de arriba (lunes, martes, miercoles...).. pero... eso no consigo hacerlo :crazy: :D

Los controles shapes no me sirven para mi propósito, ya que no responden a eventos y se pueden editar con el formulario en ejecución (lo que queda feo :? ).

En realidad, estoy construyendo una especie de Grid, lo que pase que los controles grid no me sirven ya que yo quiero mostrar a la izquierda unos datos sobre usuario y contabilidad del mes, y a la derecha el cuadrante desplazable para navegar por todo el mes.

Los que inspeccionen Cuadrante.odb, verán raro como están dispuestos los días del mes.... pero es que en el régimen laboral que trata es así, semanas completas.

A ver si consigo ayuda.
Adjuntos
Pruebas.zip
(78.56 KiB) Descargado 168 veces
OOo 3.3 Corriendo en Windows 7
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
Fdv
Mensajes: 126
Registrado: Lun Abr 05, 2010 6:19 pm

Re: Mover control Label en tiempo de ejecución

Mensaje por Fdv »

Bueno... dándole vueltas al asunto lo he visto en otra perspectiva, y no voy a necesitar mover los labels :lol:

De todas formas sería interesante saber si se pueden mover o no en tiempo de ejecución.

El formulario, para hacer el efecto scroll, me voy a apoyar en matrices que contendrán el texto a mostrar y algún que otro dato. A movimiento de scroll se rellenarán los labels con los datos que correspondan de las matrices. Ya veréis el resultado cuando termine cuadrante.odb.

Es que he pensado, tal y como se mueven los shapes ... que cuando mueva muchos labels a la vez, se va a ver horrible ... osea, mala experiencia de usuario.

Un Saludo. No lo dejo como RESUELTO a la espera de que alguien averigüe como mover un control label en tiempo de ejecución.
OOo 3.3 Corriendo en Windows 7
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Mover control Label en tiempo de ejecución

Mensaje por fornelasa »

Solo como Ejemplo.

Saludos, Federico.
Adjuntos
Prueba desplazamiento.zip
Desplazar controles.
(11.51 KiB) Descargado 175 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Fdv
Mensajes: 126
Registrado: Lun Abr 05, 2010 6:19 pm

Re: Mover control Label en tiempo de ejecución

Mensaje por Fdv »

Muchas Gracias!!!

:bravo: :bravo: :bravo: :bravo:

No había imaginado que se podría seleccionar, en lugar del control, la figura en la que se dibuja el control. Al final no era tan complicado, dejo aquí el extracto principal del código porque no lo he visto en ningún otro lugar y ... quizás :? ... Pueda servir a alguien más.

Código: Seleccionar todo

Sub Scroll(oEvent as object)
	dim oForm as object, oScroll as object
	oScroll=oEvent.source.model
	oForm=oScroll.parent

        dim oFigura as object
        dim Point As New com.sun.star.awt.Point

   	Point.y = 12000
	dim contador as long
	for contador=1 to 7
		oFigura=SeleccionaFigura("sh"+cstr(contador),oForm)
		if oScroll.ScrollValue>contador then
			Point.x=50
			else
			Point.x=5200+(1500*(contador-oScroll.ScrollValue))
			endif
	       oFigura.Position = Point	
	      next
End Sub

Function SeleccionaFigura(oName as string,oForm as object) as object
	dim oDP as object, cantidad as long,c as long, oItem as object
	oDP=oForm.parent.parent.DrawPage
	cantidad=oDP.count
	for c=0 to cantidad-1
	    oItem = oDP.getByIndex(c)
   		If oItem.Name = oName then
			SeleccionaFigura=oItem			
			exit for
			end If
		next	
end Function


Yo ahora estoy probando a hacer su cometido con matrices de datos... luego quizás mire que es lo más efectivo.

RESUELTO.
OOo 3.3 Corriendo en Windows 7
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
Responder