Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Controles Dinamicos Duda
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Controles Dinamicos Duda 
 
hola a todos. tengo una duda que no he podido solventar:

por ejemplo supongamos que que tengo un control label con ciertas propiedades
luego con un boton hago otro label igual al anterior pero con un indice mayor para poder controlarlo luego ademas lapropiedad topse incrementa para quedar bajo el label anterior.

como podria hacer eso??

intente lo siguiente:
Código: [Descargar] [Ocultar]
  1. PUBLIC SUB Button3_Click()
      
  2.  
      
  3.  DIM xlvariable AS NEW Label
      
  4.   xlvariable = NEW Label AS "variable"
      
  5.  WITH xlvariable
      
  6.     .top = LVariable.Top + 10
      
  7.     .Visible = TRUE
      
  8.     .Text = "variable"
      
  9.  END WITH
      
  10.  
  11. END
      
  12.  


si hago:

Código: [Descargar] [Ocultar]
  1. DIM xlvariable AS NEW Label
      
  2. xlvariable = NEW Label AS "variable"
      
  3. xlvariable = LVariable
      
  4.  


hace una copia referencial apuntando a LVariable
y solo quiero que tenga las mismas propiedades pero que sea una nueva label!

quizas estoy demaciado perdido. cualquier ayuda bienvenida.
gracias
 



 
zaratustraw00f - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controles Dinamicos Duda 
 
De momento lo que veo es que estás instanciando dos veces el mismo objeto con NEW.

Si creas el nuevo objeto en la declaración, pon también su manejador.

Si no, no pongas NEW en la declaración.

  
  DIM xlvariable AS  Label
  xlvariable = NEW Label AS "variable"
 


o bien:

DIM xlvariable AS NEW Label AS "variable"


Pero tengo dudas si funcionará el incremento a la referencia del manejador del evento correspondiente a cada nueva label.

¿Cómo piensas escribir su manejador?

Piensa que para que eso funcione tiene que existir este código (para el label creado anteriormente con el evento Click(), por ejemplo...):

PRIVATE SUB variable_Click()
'lo que sea
END


Saludos
 




===================
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: Controles Dinamicos Duda 
 
claro tieneas toda la razon se me fue eso de new
en todo caso
habria que hacer uso de la propiedad tag ????

o crear un array de objetos y luego añadir ??
de esta forma tendria indices incremetales????


ayuda de mas ideas
gracias

PD:

hice lo siguiente:
DIM xlvariable AS NEW Label AS "variable" pero me señala error en tiempo de ejecucion: not enough arguments
 



 
última edición por zaratustraw00f el Viernes, 05 Febrero 2010, 22:13; editado 1 vez 
zaratustraw00f - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controles Dinamicos Duda 
 
Creo que lo que tu quieres hacer es un array de controles tal como se hacía en VB poniendo el mismo nombre y jugando con la propiedad index.

Aquí eso se hace de otra forma mucho mas potente. Los controles tienen una propiedad group. Todos los controles que tengan la misma propiedad group son del mismo array de controles. No tienes index, pero tienes el tag para organizarlos como quieras (no necesariamente con números) y puedes tener en el mismo array controles de clases distintas (por ejemplo label y textbox). Además dispones del palabro LAST que te devuelve siempre el último control utilizado (el activo).

Arrays de controles en Gambas

Para crearlos de forma dinámica indicas el manejador (la propiedad group) de esta forma
Dim X as new label(manejador)

Osea que estas creando X y poniéndola dentro del manejador y que sería lo mismo que pintar el control X y asignarle la propiedad group="manejador". A partir de ahí los eventos serán del tipo manejador_click()

Un saludo
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controles Dinamicos Duda 
 
este es el codigo que utilizo para crear todos los label que quiero en tiempo de ejecucion en un drawingarea. los label se crean al apretar un boton . Si aprieto el boton cinco veces, se crean cinco label.

  
etique = NEW Label(DrawingArea1) AS "label1"
  etique.Caption = LAST.Caption & " " & "etiqueta"
  etique.Name = "label1"
  etique.AutoResize = TRUE
  etique.BackColor = &H00FFAF5F&
  etique.Border = 1


luego , para poder controlar un label (de los que se crearon en el drawingarea) uso la propiedad last

PUBLIC SUB [label1_MouseMove()
  IF Mouse.Left AND (drawarea.Mouse = Mouse.Default) THEN
    'desplazamos el boton de acuerdo con la variacion de X e Y
    LAST.MOVE(LAST.x - px + Mouse.x, LAST.y - py + Mouse.Y)
  ENDIF
 
  IF Mouse.Left AND (drawarea.Mouse = Mouse.SizeW) THEN
       LAST.Width = Mouse.x
  ENDIF

  IF Mouse.Left AND (drawarea.Mouse = Mouse.SizeN) THEN
       LAST.Height = Mouse.y
  ENDIF
END

 



 
última edición por nrcefe el Sabado, 06 Febrero 2010, 17:42; editado 3 veces 
nrcefe - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controles Dinamicos Duda 
 
gracias.

para lo que queria al final tuve que hacer lo siguiente.


PUBLIC SUB Button3_Click()
DIM etique AS Label
  etique = NEW Label(Frame2) AS "labelx"
  etique.Caption = "etiqueta " & il
  etique.Name = "labelx" & il
  etique.AutoResize = TRUE
  etique.Tag = il
  etique.Left = Labelx0.Left
  etique.top = Labelx0.top + Labelx0.Height * il
  il = il + 1
 
END
 


la variable il es public de tipo entero y la inicializo en 1
en realidad se me acomodaria mas trabajar como en vb6 usando index osea como array
trate de crear
public obj as object[]

y luego poner:
obj.add(etique)
pero me daba error !!!

bueno eso saludos
y nuevamente gracias
 



 
última edición por zaratustraw00f el Sabado, 06 Febrero 2010, 18:20; editado 1 vez 
zaratustraw00f - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Controles Dinamicos Duda 
 
Pues perdona, pero ya me dirás cual es la diferencia con que a cada control le pongas el mismo grupo y luego le pongas el tag que te de la gana.

Porque con las diferencias que yo veo es que luego tienes en tu caso 'il' manejadores de código y yo uno. Que yo he necesitado una sola orden y tu has hecho como cinco y has usado una variable pública.

Yo creo que simplemente no has entendido como funcionan los arrays de controles en gambas porque es un sistema mucho mas potente y simple.

Dim label1 as new label(arraycontroles)
dim label2 as new label8arraycontroles)
label1.tag=1
label2.tag=2

Eso es todo. A partir de ahí los eventos para cualquiera de los elementos de ese array de controles son como este:
private sub arraycontroles_gotfocus()
...
end

Y en ellos para diferenciar uno de otro puedes consultar su tag y para conocer el activo sabes que sea cual sea está en LAST.

private sub arraycontroles_gotfocus()
select case last.tag 'consultar el tag del control activo
   case 1
      ...
   case 2
      ...
end select
end
 

Pero bueno. Son tus programas. Haz lo que quieras.
 
 



 
soplo - 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 Duda eliezer Controles/Librerías/Componentes 2 Miercoles, 09 Diciembre 2009, 13:26 Ver último mensaje
shordi
No hay nuevos mensajes ComboBox Dinamicos Y Anidxados (solucionado) Luthien_Tinu Bases de Datos 5 Viernes, 29 Octobre 2010, 14:03 Ver último mensaje
Luthien_Tinu
No hay nuevos mensajes Duda Con Whoami LalaLalines General 2 Martes, 12 Febrero 2013, 18:24 Ver último mensaje
shordi
No hay nuevos mensajes Duda Con Un Array Guizans General 7 Jueves, 25 Julio 2019, 23:56 Ver último mensaje
Guizans
 

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