none
Objeto con iguales propiedades de otro objeto RRS feed

  • Pregunta

  • Hola 

    Como puedo hacer para que un objeto creado en tiempo de ejecución tenga las mismas (TODAS) propiedades que un objeto existente (creado durante el diseño) sin necesidad de nombrarlas una por una?

    Gracias

    miércoles, 14 de junio de 2017 12:50

Todas las respuestas

  • Saludos:

    Ese es el proposito de la Herencia en la programacion. Basicamente es asi:

    ' Creas el Nuevo objeto con todas las caracteristicas de
    ' un TextBox
    Dim myTextbox As New TextBox
    
    ' Despues accedes a sus propiedades
    With myTextBox
      .Name = "TextBox1"
      .Text = "Hello, World"
      .ForeColor = Color.Navy
    End With
    
    ' Lo agregas a tu form
    Me.Form1.Controls.Add(myTextBox)
    
    
    

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    sábado, 17 de junio de 2017 15:32
  • Como puedo hacer para que un objeto creado en tiempo de ejecución tenga las mismas (TODAS) propiedades [...]

    La pregunta es un poco ambigua, porque no se puede "crear" un objeto en tiempo de ejecución, lo que se hace es "instanciar" un objeto de una clase. Y las propiedades no están en el objeto, sino en la clase. Y la clase tiene que existir en tiempo de compilación (salvo que uses generación de código y acceso por reflexión). Así que tendrías que matizar con mayor rigor qué es lo que tratas de hacer, porque no queda claro en la pregunta.
    sábado, 17 de junio de 2017 15:47
  • Alberto: Perdón por la tardanza en la respuesta.

    Lo que intento es desarrollar un tablero de un juego basado en varios labels (20 x 20, es decir 400). Estos labels son "creados" (instanciados ??) en tiempo de ejecucion. Con el siguiente código:

      Public Sub ConLabel()
            Dim Cartel As New Label
            Dim x, y As Integer
            Dim AnchoTotal As Integer = ((AnchoCelda + Separacion) * CantidadX) - AnchoCelda
            Dim AltoTotal As Integer = ((AltoCelda + Separacion) * CantidadY) - AltoCelda
             x = 1
            y = 1
            For N As Integer = XVertice To AnchoTotal Step AnchoCelda + Separacion
                For L As Integer = YVertice To AltoTotal Step AltoCelda + Separacion
                    Cartel.Width = AnchoCelda
                    Cartel.Height = AltoCelda
                    Cartel.BorderThickness = molde.BorderThickness
                    Cartel.BorderBrush = molde.BorderBrush
                    Cartel.FontWeight = molde.FontWeight
                    Cartel.FontFamily = molde.FontFamily
                    Cartel.HorizontalAlignment = molde.HorizontalAlignment
                    Cartel.FontSize = molde.FontSize
                    Dim aux As String = "x" & Trim(Str(y))
                    aux = aux & "y" & Trim(Str(x))
                    Cartel.Name = aux
                    y = y + 1
                    If y > CantidadY Then
                        y = 1
                        x = x + 1
                    End If
                    Cartel.Content = ""
                    Cartel.Margin = New Thickness(N, L, 0, 0)
                    canInicio.Children.Add(Cartel)
                    Cartel = New Label
                Next
            Next

    En donde "molde" es un label que construyo en tiempo de diseño y luego oculto y canIncio es el canvas que los contiene. Se me ocurrió esto por que a medida que avanzaba el diseño me aparecian necesidad de modificar alguna propiedad de los labels. Para ello modificaba dicha propiedad en "molde", y "veia" como quedaba sin necesidad de correr toda la aplicación. Pero luego tenia que teclear una nueva linea de código para "traspasar" dicho cambio a los labels a utilizar en la aplicación. Entonces la pregunta es ; ¿Hay alguna manera de traspasar todas las propiedades de "molde" a los label instanciados en tiempo de ejecución sin necesidad de hacerlo uno  por uno? Espero se entienda. Gracias


    Pedro

    lunes, 3 de julio de 2017 12:31