Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Visual Basic 2005 - Botones y path por parámetro

Estas en el tema de Visual Basic 2005 - Botones y path por parámetro en el foro de Visual Basic clásico en Foros del Web. Hola a todos los del foro. Venía a traerles una inquietud. Debo diseñar un programa que pueda ser cambiado en su diseño después de ejecutado, ...
  #1 (permalink)  
Antiguo 29/07/2008, 22:20
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
De acuerdo Visual Basic 2005 - Botones y path por parámetro

Hola a todos los del foro.
Venía a traerles una inquietud.

Debo diseñar un programa que pueda ser cambiado en su diseño después de ejecutado, por ejemplo, agregar botones al formulario sin entrar al código fuente, a esto se le llaman botones por parámetro

Aqui les muestro la reseña:


Cada [nivel_1] es un botón que tiene de texto lo que dice "data" entonces cuando yo entre a este archivo .txt y le agrego digitando otro [nivel_1] junto con sus otras líneas, el programa debe ser capaz de agregar un nuevo botón.

Si esto es sencillo por favor les suplico me puedan ayudar, no saben cuanto estoy investigando en este caso, si el tema existe por favor háganmelo saber, aunque no encontré usando el buscador.

Muchas gracias!

Última edición por moradazo; 29/07/2008 a las 22:35
  #2 (permalink)  
Antiguo 30/07/2008, 07:05
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Yo hize algo parecido, pero con el menú y usando datos en una BD que es practicamente lo mismo (sorry, eso fue hace años y no tengo las fuentes) pero en VB6.0 quizas lo puedas como referencia para el Visual Basic 2005

http://www.forosenperu.com/foro-de-p...e-objetos.html

Quizas te sirva este Documento, en donde se puede "clonar Botones" que basicamente es un Array de Botones, que se va agregando elementos segun sea necesario
__________________
*en construccion*
  #3 (permalink)  
Antiguo 30/07/2008, 08:37
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Jhonnyf muchisimas gracias ire a visitar esta web, si supuse que es un array de botones, te agradezco mucho. Apenas pueda leer bien el documento escribo lo que me parecio, gracias.
  #4 (permalink)  
Antiguo 31/07/2008, 09:55
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

En realidad no es lo que busco, clonar es otra cosa. Lo que ocupo es parametrizar en un txt la forma de crear un boton con su informacion, como lo muestro en la parte de arriba, si alguien sabe como hacerlo le agradezco mucho
  #5 (permalink)  
Antiguo 31/07/2008, 10:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Visual Basic 2005 - Botones y path por parámetro

Creo que era algo así como esto para crear botones:
Código:
Dim Boton As New CommandButton
Ahora, para programarle eventos ya es otra historia.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 31/07/2008, 13:27
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Cita:
Iniciado por David el Grande Ver Mensaje
Creo que era algo así como esto para crear botones:
Código:
Dim Boton As New CommandButton
Ahora, para programarle eventos ya es otra historia.
Que tal David.

CommandButton creo que es una palabra reservada de VB 6, en el VB2005 no me funciona. He leido por ahi que se debe crear un vector para los botones que deseo agregar, incluso crear un arbol que si me suena logico para lo que necesito hacer.

Investigue este codigo para crear botones, pero parece que es de VB 6, yo nunca lo use por lo que los comandos al VB 2005 no los conozco.

Código:
Dim LS(6) As PowerPacks.LineShape

    Dim SC As New PowerPacks.ShapeContainer



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For I As Integer = 0 To 6

            LS(I) = New PowerPacks.LineShape

            With LS(I)

                .X1 = 10 : .Y1 = 10 * I

                .X2 = 60 : .Y2 = .Y1

                SC.Shapes.Add(LS(I))

                AddHandler .Click, AddressOf LS_click

            End With

        Next

        Me.Controls.Add(SC)

    End Sub

Private Sub LS_click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        DirectCast(sender, PowerPacks.LineShape).Focus()

    End Sub
Todo lo que esta marcado en rojo es lo que el VB2005 no reconoce, les agradezco su colaboracion, gracias!
  #7 (permalink)  
Antiguo 31/07/2008, 13:31
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Hola!

No me he peleado aún con VB2005, pero en 6.0, es igual que dice David, agregando la claúsula WithEvents (a nivel de formulario, eso sí):

Código:
Dim WithEvents Boton As New CommandButton
Los eventos se programan igual que si el botón se hubiera colocado en tiempo de diseño, y creo que incluso se pueden elegir desde las comboboxes que hay sobre el código en el editor.

Pero no sirve para hacer arrays... tuve muchos problemas con eso

Lo más inmediato (te sigo hablando en VB6, en 2005 imagino que no habrá muchas diferencias), es crear un botón en tiempo de diseño con las propiedades Index=0 y Visible=False; cada vez que quieras agregar un botón, añades uno a la colección con un código como este:

Código:
' Suponemos que el botón que has puesto se llama "cmdUsuario"
Dim Index As Long

    Index = Ubound(cmdUsuario)
    Load cmdUsuario(Index)
    With cmdUsuario(Index)
        .Caption = "Botón #" & Index
        .Top = ...  ' Coordenada horizontal
        .Left = ...  ' Coordenada vertical
        <sigue definiendo las propiedades que necesites>
        .Visible = True
    End With

    ' Preparamos otro botón oculto, por si seguimos añadiendo cosas
    Load cmdUsuario(Index + 1)
    cmdUsuario(Index + 1).Visible = False
Esto te sirve como base. Para lo que quieres hacer, necesitarás mantener también un array o una colección con el valor de "data" para cada botón.
__________________
wile sona li mute e sona
  #8 (permalink)  
Antiguo 01/08/2008, 09:27
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Gracias pero bueno aun me da errores al marcar cmdUsuario como nombre del boton, por que mas adelante donde se repite esta variable ya el programa no lo reconoce, o sera que ando cometiendo un error?
  #9 (permalink)  
Antiguo 01/08/2008, 10:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Visual Basic 2005 - Botones y path por parámetro

El código que te puso Txoco es para VB6, según tengo entendido, VB.net no permite indexado de controles, así que no te va a funcionar.
Lo que me extraña que no te funcione es definirlo como New CommandButton, ya que leí por ahí que sí funciona en VB.net.

Y para los eventos sería Addhandler.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 01/08/2008, 10:06
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Mira, te pongo un pequeño ejemplo que crea, en tiempo de ejecución, tres controles Button en el Form (es lo que en VB6 se llama array de controles)

Código:
Private TxtPoint As New Point(10, 50)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i As Integer = 0 To 2
            Dim Boton As New Button
            Boton.Name = "Button" + i.ToString()
            Boton.Text = "Boton" & i.ToString()
            Boton.Height = 40
            Boton.Width = 130
            Boton.Location = New Point(TxtPoint.X + 10, TxtPoint.Y)
            TxtPoint.Y += Boton.Height + 15
            Controls.Add(Boton)
        Next i
    End Sub
Intenta adaptarlo a tus necesidades.

  #11 (permalink)  
Antiguo 01/08/2008, 10:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Visual Basic 2005 - Botones y path por parámetro

Ah¡ es que era Button y no CommandButton. Gracias Avellaneda por aclararlo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 01/08/2008, 10:42
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Hola,

esa ya lo había dicho moradazo anteriormente:

"CommandButton creo que es una palabra reservada de VB 6, en el VB2005 no me funciona." (sic)
  #13 (permalink)  
Antiguo 01/08/2008, 10:43
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Hola,

esa ya lo había dicho moradazo anteriormente:

"CommandButton creo que es una palabra reservada de VB 6, en el VB2005 no me funciona." (sic)


Perdón, se repitió el mensaje.


Última edición por Avellaneda; 01/08/2008 a las 10:49 Razón: Repetición
  #14 (permalink)  
Antiguo 01/08/2008, 12:03
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Este Avellaneda es un maestro!

Oye tu eres ya profesional o algo de mas jerarquia! En todo me has ayudado, gracias de verdad, tambien a David que siempre escribe conceptos bien definidos.

Lastima no hay boton de agradecimiento en el foro, ustedes son muy amables, y como decimos en Costa Rica, "son unos verdes programando"
  #15 (permalink)  
Antiguo 01/08/2008, 12:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Visual Basic 2005 - Botones y path por parámetro

Jeje, de nada, quien se lleva el crédito es Avellaneda.

P.S.: Por cierto, para agradecer usamos el karma (). Ese ícono está en cada mensaje.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 01/08/2008, 13:10
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Cita:
Iniciado por moradazo Ver Mensaje
Este Avellaneda es un maestro!

Oye tu eres ya profesional o algo de mas jerarquia! En todo me has ayudado, gracias de verdad, tambien a David que siempre escribe conceptos bien definidos.

Lastima no hay boton de agradecimiento en el foro, ustedes son muy amables, y como decimos en Costa Rica, "son unos verdes programando"
Jajaja, pues aquí en España es justamente lo contrario, uno que está verde es que no conoce la materia.

Bueno, buen finde para todos. Hoy es viernes y me voy de marcha con los colegas.
  #17 (permalink)  
Antiguo 01/08/2008, 13:20
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Cita:
Iniciado por Avellaneda Ver Mensaje
Hola,

esa ya lo había dicho moradazo anteriormente:

"CommandButton creo que es una palabra reservada de VB 6, en el VB2005 no me funciona." (sic)
Una ultima consulta Avellaneda:

Donde puedo colocar lo que va hacer cada boton, o sea que digamos el boton #5 que se agregue, tenga cierta instruccion para agregar un texto y mostrar en un listview o textbox. Gracias.

Código:
Dim Boton As New Button
            Boton.Name = "Button" + i.ToString()
            Boton.Text = "Boton" & i.ToString()
            Boton.Height = 40
            Boton.Width = 130
            Boton.Location = New Point(TxtPoint.X + 10, TxtPoint.Y)
            TxtPoint.Y += Boton.Height + 15
            Controls.Add(Boton)
  #18 (permalink)  
Antiguo 01/08/2008, 14:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Visual Basic 2005 - Botones y path por parámetro

Supongo que con AddHandler.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 02/08/2008, 02:44
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Efectivamente, como dice David, tienes que utilizar la instrucción AddHandler.

Antes de la línea Controls.Add(Boton) le pones:

AddHandler Boton.Click, AddressOf xClick

y creas un procedimiento cómo este (aquí al pulsar en el boton #5 mostrará un mensaje con el nombre, pero puedes poner cualquier otra instrucción)

Código:
Private Sub xClick(ByVal sender As Object, ByVal e As EventArgs)
        If sender.text = "Boton5" Then
            MsgBox(CType(sender, Button).Name)
        End If
    End Sub
  #20 (permalink)  
Antiguo 02/08/2008, 09:38
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Excelente! muchas gracias nuevamente Avellaneda veo que me falta mucho por aprender si quiero programar como lo haces tu.

Te cuento que ayer fui a consultar varias dudas que tengo para dejar descansar el foro por mis insistencia en mis preguntas jeje, fui a donde mi profesor que me dio la clase de Visual Basic 2005. Yo le pregunté que si era posible llevar por parámetro la creación de botones con un formato de texto que no puedo cambiar, ya lo había escrito antes

[level_1]
caption="GENERAL COMMENTS"
data="General Comments"
[level_2]
caption="NO SPECIFIC COMMENTS NEEDED"
data="No specific comments needed"
[level_3]
caption="Tratamiento realizado/modificado de acuerdo a sus instrucciones."
data="Treatment done/modified per your instructions"

Como puedes ver cada level_1 es un botón que contiene un título (level_2) y el comentario de ese título (level_3). Cada level_1 puede tener N cantidad de level_2 y level_3, y en el .txt hay N cantidad de level_1

El profesor me dijo que no era posible hacerlo directamente de un txt con un formulario de visual basic, que para hacerlo mejor era crear una tabla de access donde lleva estos valores y de esa tabla llevárlos por parámetro al formulario de visual basic. Lo malo es que en el trabajo me indicaron que no puedo hacer ningún otro archivo como auxiliar para traer esos valores por parámetro, y créeme si lo estoy logrando con estas ayudas tuyas, pero creo que el profesor anda un poco equivocado o no?

Gracias
  #21 (permalink)  
Antiguo 02/08/2008, 12:40
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Bueno, no voy a entrar en discusiones con tu profesor, pero sí te puedo decir que un archivo de texto se puede utilizar como un conjunto de registros si lo abres para acceso aleatorio o mejor para acceso binario.

De hecho hay varios gestores de datos. que utilizan este tipo de ficheros para su gestión, eso sí codíficados y comprimidos bajo otras extensiones como .dat o cualquier otra, un buen ejemplo es Velneo (Visual Velazquez) y te puedo asegurar que la lectura de datos es bastante superior a una tabla de Access o SQL.

Lo único que se necesita es crear un tipo de datos propio mediante la instrucción Type, este es un ejemplo en acceso aleatorio:
Código:
Type MisDatos
    ID As Integer
    Nombre As String * 25
    Nota As Single
End Type
y después ya podemos declarar una variable que nos devolverá los registros:

Dim Datos AS MisDatos

para leer, grabar o modificar el archivo

Ahora, cuando decía "mejor para acceso binario" es porque en el acceso aleatorio cada registro ocupa 312 bytes, independientemente del contenido del mismo y en el binario no es necesario indicar la longitud del registro pues almacenará sólo el número de bytes requeridos (esto presenta el problema de que se necesita más código, ya que tenemos que conocer la longitud de cada registro) pero en cambio ahorramos espacio en disco y en velocidad de ejecución.
  #22 (permalink)  
Antiguo 02/08/2008, 20:17
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Visual Basic 2005 - Botones y path por parámetro

Muchas gracias por la respuesta Avellaneda.

Me puse a investigar sobre el Velneo, me pareció interesante cuando lo leí, y he leído en la web solo comentarios positivos, ahora lo bajaré y lo instalaré. Por ahí escuché que es como un híbrido entre Visual Basic y Access.

Ahora con lo de mi pregunta, gracias por aclararlo, si tienes razón no hay nada que haga más fácil la ejecución de un sistema de registros como lo hace el acceso binario, si requiere un poco más de código como bien señalas pero la efectividad es lo que evaluamos al final.

Tengo 3 dudas aún. Ahi están en los otros temas

Gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:34.