Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Como Acceder A Un Control Creado En Tiempo De Ejecución.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Acceder A Un Control Creado En Tiempo De Ejecución. 
 
Hola a todos!

Feliz diciembre.

Bien, entrando en materia...  Tengo casi listo un editor de texto como cualquier otro salvo por el hecho de que este te ayuda a programar en html. Ya está trabajando de forma estable, aunque tiene muchos detalles y eso es solo lo que yo veo. La idea es que sirva para desarrollar las páginas de ayuda para sistemas tanto on-line, como en modo local. Incluso permite que un programador no dedicado a html, pero con conocimientos muy básicos, pueda crear y usar sus propias hojas de estilo css3, tiene un visor sencillo para evitar al programador tener que cargar sus pruebas en mozilla, chromium. opera o cualquier otro.

Para hacer una demostración de sus resultados en un acto de poca modestia, decidí escribir un juego de ahorcado, colgado, como se llame.

Porque teóricamente es algo sencillo donde podría hacer otras cosas, como afianzar mas aquello de los settings, algo mas sobre procesos en lotes de SQLite3 y bingo....
me ha estallado la gracia en la cara...

Public Sub Cajas(l As Integer)
  Dim i, baseX, BaseY As Integer

' l es el numero de cajas a crear
' Caja es obviamente un control label creado en tiempo de ejecución
' lo demas son medidas, posiciones y otras bobadas

  baseX = (279 - ((21 * l))) / 2
  baseY = 148
  
  For i = 1 To l
    Caja = New Label(FMain.TP1.Current) As "Caja"
    Caja.X = baseX
    Caja.W = 21
    Caja.H = 21
    Caja.Tag = i
    Caja.Border = 1
    Caja.Alignment = 3
    Caja.Y = baseY
    baseX = BaseX + Caja.W + 2
  Next

End

Public Sub Asigna_letras(p As String)
Dim i As Integer = 1
Dim hijo As Control

' Como la propiedad Children retorna una colección de controles en su contenedor
' solo pregunto por el nombre del hijo con la esperanza de que asigne en orden de
' aparición en la propiedad text, la letra que correspondería a esa posición
'
' Lamentablemente solo coloca correctamente la última letra en el último label
'

  
 For Each hijo In FMain.TP1.Children
  If hijo.name = "Caja" Then
    Caja.Text = Mid(p, i, 1)
    i = i + 1
  Endif
 Next
End
 


Ahora bien, tengo una lista de preguntas.
1.- ¿como puedo acceder a una de las cajas, cualquiera de ellas directamente, me refiero a usando código?
2.- ¿como elimino esas cajas cuando el juego vuelva a iniciar, sin haber cerrado.?(*)
3.- mi forma de juego es poco conservadora, tiene 3 niveles de dificultad, 1 fácil con igual número de intentos que letras y disminuyendo 1 intento por cada nivel de dificultad. Pero deseo hacer el reto mas interesante haciendo que se juegue contra reloj en una cuarta modalidad. ¿Se puede hacer eso? es decir, ¿estar jugando y un timer corriendo al mismo tiempo?(**)

En estas "sub-rutinas" solo se crean los controles label, que bien podrían ser de otro tipo, y se le asigna una letra a cada label (eso no funciona como esperaba).

Disculpen lo largo de la explicación...  De antemano gracias por su tiempo...

(*) existe un botón jugar que inicia el juego.
(**) esto no es muy importante, solo es curiosidad, ya que al no existir hilos en gambas, se enreda todo.
 



 
última edición por viejito el Viernes, 11 Diciembre 2015, 09:49; editado 2 veces 
viejito - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Acceder A Un Control Creado En Tiempo De Ejecución. 
 
una posible solución a mi problema básico podría ser usando un gridview ( acabo de imaginarlo ), solo que me dá la sensación que estar matando mosquitos a cañonazos..

Ahh...  conseguí unas páginas con listas de palabras que intentaré incluir en la base de datos...  Internet es un tiro....


Saludos
 



 
viejito - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Acceder A Un Control Creado En Tiempo De Ejecución. 
 
viejito escribió: [Ver mensaje]
1.- ¿como puedo acceder a una de las cajas

Siendo ellas children de la ventana principal, tienes que usar la propiedad .Children .

Se asigna cada variable de tipo Label creada (que es un Children del Form principal) a una variable de tipo Object.
La distinción entre las Label es efectuada con propiedades, como por ejemplo .Name o .Tag, de la variable de tipo Object .
Private lb As Label


Public Sub Form_Open()

  Dim b As Byte
  
  For b = 1 To 4
    With lb = New Label(Me) As "lb"
      .X = b * 30
      .Y = 50
      .W = 20
      .H = 10
      .Border = Border.Plain
      .Background = Color.Red
      .Name = CStr(b)
    End With
  Next
  
End


' Vamos a cambiar el color de la tercera (.Name = 3) Label:
Public Sub Button1_Click()

    Dim ob As Object

  For Each ob In Me.Children
    If ob.Name = "3" Then ob.Background = Color.Yellow
  Next

End



o detectando la Label con el indice de la propiedad .Children:
Private lb As Label


Public Sub Form_Open()

  Dim b As Byte
  
  For b = 1 To 4
    With lb = New Label(Me) As "lb"
      .X = b * 30
      .Y = 50
      .W = 20
      .H = 10
      .Border = Border.Plain
      .Background = Color.Red
      .Name = CStr(b)
    End With
  Next
  
End


' Vamos a cambiar el color de la tercera (indice 2) Label:
Public Sub Button1_Click()

  Me.Children[2].Background = Color.Yellow

End


Si, pero, tu quieres detectar una especifica Label haciendo clic en ella, puedes usar la palabra Last:
Private lb As Label


Public Sub Form_Open()

  Dim b As Byte
  
  For b = 1 To 4
    With lb = New Label(Me) As "lb"
      .X = b * 30
      .Y = 50
      .W = 20
      .H = 10
      .Border = Border.Plain
      .Background = Color.Red
      .Name = CStr(b)
    End With
  Next
  
End


' Vamos a cambiar el color de una Label haciendo clic en aquella:
Public Sub lb_MouseDown()

  Last.Background = Color.Yellow

End

 



 
última edición por vuott el Viernes, 11 Diciembre 2015, 13:53; editado 5 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Acceder A Un Control Creado En Tiempo De Ejecución. 
 
Voutt....   Muchas gracias.  lo adapté con gran facilidad y ya funciona.

Ahora solo me queda solucionar el reinicio del juego sin cerrar la ventana.

Será posible???
 



 
viejito - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Acceder A Un Control Creado En Tiempo De Ejecución. 
 
viejito escribió: [Ver mensaje]
... el reinicio del juego sin cerrar la ventana.

...es decir una cosa como esta ?
Public Sub Form_Open()

  Me.Show

  Initiumioci()

End


Private Procedure Initiumioci()
  
  Print "Estoy jugandoooo !!!"
  
  Wait 0.5
  
' LLama de nuevo la sub-routina 'ad infinitum':
  Initiumioci()
  
End



...o si te gusta más.....  
Public Sub Form_Open()

  Me.Show

  With ToggleButton1
    .Background = Color.Green
    .Value = True
  End With

  Initiumioci()

  Me.Close

End


Private Procedure Initiumioci()
  
  Print "Estoy jugandoooo !!!"
  
  Wait 0.3
  
' Si el 'ToggleButton' está presionado, el programa vuelve a la routina 'Initiumioci()':
  If ToggleButton1.Value Then Initiumioci()
  
End

 



 
última edición por vuott el Viernes, 11 Diciembre 2015, 16:45; editado 2 veces 
vuott - 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 ¿formularios En Tiempo De Ejecución O En... jsoto61 General 1 Jueves, 10 Diciembre 2009, 00:54 Ver último mensaje
fabianfv
No hay nuevos mensajes Agregar Código En Tiempo De Ejecución Ayortano General 0 Lunes, 03 May 2010, 22:07 Ver último mensaje
Invitado
No hay nuevos mensajes Crear Controles En Tiempo De Ejecución... ariel Controles/Librerías/Componentes 19 Jueves, 28 Marzo 2013, 16:09 Ver último mensaje
aratar79
No hay nuevos mensajes Cambiar De Gb.qt4 A Gb.qtk En Tiempo De Ej... jsbsan General 1 Domingo, 14 Julio 2013, 21:46 Ver último mensaje
jguardon
 

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