Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis456

#421
Cita de: EleKtro H@cker en 11 Diciembre 2013, 17:39 PM
Hola

No tuve ningún error en el ejemplo que te dí, es imposible que salga ese tipo de excepcion, ¿que habrás echo? xD

De todas formas el ejemplo de arriba es solo eso, un ejemplo, no te lo tomes al pie de la letra, la idea es que tu no deberías crear el ListBox en tiempo de ejecución... usa el diseñador de formulario (que para algo está), arrastras un ListBox al formulario y ahí le modificas las propiedades en el menú de propiedades del Control, no es necesario crear el control usando código.

así queda el listbox del ejemplo:


Saludos




Ya lo se, pero no se si es mi version de V.net 2010 ya que en  propiedades los valores que pones veo solo el de  size

.MultiColumn = True, <<<<<<<<<<< no sale
        .ColumnWidth = 10,<<<<<<<<<<<<<no sale
        .Size = New Size(300, 20)<<<<<<<<<<si sale


Luis







#422
Bueno me da estos errores ? implemente el lis y bien tambien para prueba declare las variables pero cuando lo integro al form salen estos problemillas


' Lo añado al formulario.
Me.Controls.Add(LB) <-------------error de sintaxis

    ' Añado los elementos del primer Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr1).ToArray)  <<------se esperaba una declaracion

    ' Añado dos elements vacíos que simulen un "separador".
LB.Items.AddRange(ArrayList.Adapter({String.Empty, String.Empty}).ToArray)

    ' Añado los elementos del segundo Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr2).ToArray)




Luis
#423
Cita de: EleKtro H@cker en 10 Diciembre 2013, 18:45 PM
Supongo que estás usando un Winforms asi que la manera sería esta:

Código (vbnet) [Seleccionar]
' Establezco un par de arrays numéricos.
Dim arr1 As Integer() = {1, 2, 3, 4}
Dim arr2 As Integer() = {5, 6, 7, 8}

' Instancio un ListBox con las siguientes propiedades:
Dim LB As New ListBox With
   {
       .MultiColumn = True,
       .ColumnWidth = 10,
       .Size = New Size(300, 20)
   }

' Lo añado al formulario.
Me.Controls.Add(LB)

' Añado los elementos del primer Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr1).ToArray)

' Añado dos elements vacíos que simulen un "separador".
LB.Items.AddRange(ArrayList.Adapter({String.Empty, String.Empty}).ToArray)

' Añado los elementos del segundo Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr2).ToArray)


Nota: Si quieres hacer un ListBox más grande y que siga siendo horizontal, también tendrás que agrandar la fuente de texto del control y ajustar el ancho de la columna.

Saludos


:) Corro a probarlo jejej, lo que habia hecho hasta ahora era el prosaico metodo de juntar varios listbox y meterle a cada uno un array jejej

aaa el codigo es el de siempre :)


Gracias
Luis


#424
Cita de: EleKtro H@cker en 10 Diciembre 2013, 02:35 AM
La verdad es que un ListBox reduciría bastante el espacio que ocupan 30 textboxes xD




Eso lo entiendo, pero esto no:

¿Que intentas conseguir ahí?, quiero decir ¿porque usas el evento Leave para añadir el texto al ListBox?.

¿Si quieres reemplazar los textbox por un ListBox porque usas ese Evento?,
¿Has probado a añadir los resultados diréctamente en el ListBox sin intervenir con ningún TextBox? (eso sería lo coherente xD)

Algo como esto:
Código (vbnet) [Seleccionar]
Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any

  Case False ' El número no está repetido en ninguna "linea"
      ' Así que colocamos el número en el ListBox
      ListBox1.Items.Add(CStr(Results(X)))

  Case True ' El número está repetido en alguna de las "lineas"
      ' Así que escribimos el número "máximo" en el ListBox
      ListBox1.Items.Add(CStr(maximum))

End Select


¿Es eso a lo que te refieres?.

Saludos!

Esto mismo era, salvo que como hago para evitar que los resultados salgan todos hacia abajo recuerda que formo columnas de 4 números y que deberían de estar los cuatro array uno al lado del otro


en esta posicion

1 2 3 4
1 2 3 4
1 2 3 4


donde siendo los unos el primer array ,los dos el segundo arrays y haci hasta el cuarto array en ese orden,¿espero me entiendas jejeje


Gracias
Luis










#425
Trasteando un poco por la red y super aburrido con los texboxes he probado a ver si en ves de estar mostrando los resultados en los texboxes los muestro en un listbox ?

quiero mostrar el resultado de   Result1 ,Result2, Result3 lo unico que logro es cuando introdusco en los primeros texboxes

Private Sub TextBox_Leave(ByVal sender As System.Object, ByVal e As  _
System.EventArgs) Handles TextBox7.Leave, TextBox8.Leave, TextBox9.Leave
        ListBox1.Items.Add(sender.text)
    End Sub



Luis


#426
Cita de: EleKtro H@cker en  6 Diciembre 2013, 14:17 PM

Todo eso me sacó de quizio.
jejjejje

Ya esta funcionando gracias Elektro pero no creas te dejare tranquilo seguro algo se me ocurrira :)

Luis

#427
Cita de: EleKtro H@cker en  5 Diciembre 2013, 19:53 PM
En el método sumar, la variable TextBoxCount empieza a contar desde 1, 1 es el segundo elemento, por eso se salta el TextBox5.

Para corregirlo, borra esta linea del principio del bloque del For, y ponla al final del bloque:
EDITO:
O bien otra manera de solucionarlo puedes modificar esto:Por esto otro:
Código (vbnet) [Seleccionar]
TextBoxCount = -1 ' Reseteo el valor a -1
Pero eso resulta algo confuso, mejor coloca la linea que te dije donde debe ir colocada.

saludos



Sigo en lo mismo :)

Código (VBNET) [Seleccionar]
Public Class Form1

   Dim maximum As Short = 99
   Dim x As Integer = 0
   Dim Número As Double
   Private TextBoxes As TextBox() = {Nothing}
   Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32()
   Private _textBox As Object

   Private Property Calcular As Object

   Private Property TextBox(ByVal TextBoxCount As Short) As Object
       Get
           Return _textBox
       End Get
       Set(ByVal value As Object)
           _textBox = value
       End Set
   End Property
   
   Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
       ' evitar letras
       If Char.IsDigit(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsControl(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsSeparator(e.KeyChar) Then
           e.Handled = False
       Else
           e.Handled = True
       End If

   End Sub

 
   ReadOnly Property Num1 As Int32
       Get
           Return CInt(TextBox1.Text)
       End Get
   End Property

   ReadOnly Property Num2 As Int32
       Get
           Return CInt(TextBox2.Text)
       End Get
   End Property
   ReadOnly Property Num3 As Int32
       Get
           Return CInt(TextBox3.Text)
       End Get
   End Property
   ReadOnly Property Num4 As Int32
       Get
           Return CInt(TextBox4.Text)
       End Get
   End Property

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



       Dim TextBoxCount As Short = -1

       TextBoxes = {TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24}

       Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _
                 .Distinct().ToArray ' Elimino duplicados



       Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)
       Array.Sort(Result4)   ' Ordeno los Items

       TextBoxCount = -1 ' Reseteo el valor a cero <------cambie como dijiste y nada

       Dim Results As IEnumerable(Of Integer) =
           Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays

       If Results.Count > TextBoxes.Count Then
           Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes")
       End If

       For X As Integer = 0 To Results.Count - 1

           'TextBoxCount += 1 '  <------cambie  y nada tambien lo cambie de sitio

           TextBoxCount += 0 '  <------cambie  y nada

           Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any

               Case False ' El número no está repetido en ninguna "linea"
                   ' Así que colocamos el número en el Textbox
                   Try
                       TextBoxes(TextBoxCount).Text = CStr(Results(X))
                   Catch ex As Exception
                       Throw New Exception(ex.Message & ex.StackTrace)
                   End Try

               Case True ' El número está repetido en alguna de las "lineas"
                   ' Así que escribimos el número "máximo" en el textbox
                   TextBoxes(TextBoxCount).Text = -CStr(maximum)

           End Select


       Next X

   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub
End Class


Luis



#428
Hola de nuevo :)

Bueno funciona salvo que el texbox5 que seria el primero en recibir resultados se queda en blanco probe a eliminarlo y el siquiente le pasa lo mismo ???


Luis
#429
Yo creo que sigo mañana  :-( ya son muchas horas despierto me levanto a las 5 de la mañana a ver que hago con este vicio jejej a las 7 me marcho a currar de mecánico menos mal que ahora son 8 horas de continuo (hasta el mes pasado  10 horas  al dia y por supuesto con  bajada de sueldo) bueno estoy cansado gracias por todo ya mañana sera otra ves que " ATACO " jeje

Gracias

Luis
#430
No da error pero no hace nada se ejecuta pero no me muestra resultados he limpiado un poco el codigo lo deje a si pero ya me mareo

Código (vbnet) [Seleccionar]
Public Class Form1

   Dim maximum As Short = 99
   Dim x As Integer = 0
   Dim Número As Double
   Private TextBoxes As TextBox() = {Nothing}
   Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32()
   Private _textBox As Object

   Private Property Calcular As Object

   Private Property TextBox(ByVal TextBoxCount As Short) As Object
       Get
           Return _textBox
       End Get
       Set(ByVal value As Object)
           _textBox = value
       End Set
   End Property
   
   Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
       ' evitar letras
       If Char.IsDigit(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsControl(e.KeyChar) Then
           e.Handled = False
       ElseIf Char.IsSeparator(e.KeyChar) Then
           e.Handled = False
       Else
           e.Handled = True
       End If

   End Sub

   Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
       Me.ControlBox = False ' Elimino todos los controles del formulario
   End Sub
   ReadOnly Property Num1 As Int32
       Get
           Return CInt(TextBox1.Text)
       End Get
   End Property

   ReadOnly Property Num2 As Int32
       Get
           Return CInt(TextBox2.Text)
       End Get
   End Property
   ReadOnly Property Num3 As Int32
       Get
           Return CInt(TextBox3.Text)
       End Get
   End Property
   ReadOnly Property Num4 As Int32
       Get
           Return CInt(TextBox4.Text)
       End Get
   End Property

   Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs)



       Dim TextBoxCount As Short = -1

       TextBoxes = {TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24}

       Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                 .Distinct().ToArray ' Elimino duplicados

       Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _
                 .Distinct().ToArray ' Elimino duplicados



       Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)
       Array.Sort(Result4)   ' Ordeno los Items

       TextBoxCount = 0 ' Reseteo el valor a cero

       Dim Results As IEnumerable(Of Integer) =
           Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays

       If Results.Count > TextBoxes.Count Then
           Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes")
       End If

       For X As Integer = 0 To Results.Count - 1

           TextBoxCount += 1

           Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any

               Case False ' El número no está repetido en ninguna "linea"
                   ' Así que colocamos el número en el Textbox
                   Try
                       TextBoxes(TextBoxCount).Text = CStr(Results(X))
                   Catch ex As Exception
                       Throw New Exception(ex.Message & ex.StackTrace)
                   End Try

               Case True ' El número está repetido en alguna de las "lineas"
                   ' Así que escribimos el número "máximo" en el textbox
                   TextBoxes(TextBoxCount).Text = -CStr(maximum)

           End Select

       Next X

   End Sub
End Class