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

Visual Basic 2005: Listbox con Word Wrap

Estas en el tema de Visual Basic 2005: Listbox con Word Wrap en el foro de Visual Basic clásico en Foros del Web. Hola amigos del foro. Tengo un listbox con información pero ocupo tenerlo con 2 columnas, además que no existan los scrolls horizontales, por eso pregunto ...
  #1 (permalink)  
Antiguo 04/09/2008, 07:10
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Visual Basic 2005: Dudas con Listbox

Hola amigos del foro.

Tengo un listbox con información pero ocupo tenerlo con 2 columnas, además que no existan los scrolls horizontales, por eso pregunto si se puede hacer que el listbox sea Word Wrap.

En propiedades puedo elegir "Multicolumns" pero no se declarar las columnas y ponerle nombre a cada una.

Les agradezco su ayuda. Gracias!

Última edición por moradazo; 05/09/2008 a las 13:54
  #2 (permalink)  
Antiguo 04/09/2008, 23:48
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Respuesta: Visual Basic 2005: Listbox con Word Wrap

Si no me equivoco.... múltiples columnas de un listbox es solamente que la continuación del listbox se realiza a través de columnas y no generando un scroll... me explico:

sin multiplecolumns, la lista sería así (suponiendo que tengo espacio para ver 4 lineas)

1
2
3
4
5
(a partir de aquí navegable a través del scroll del control)
6
7
8
9
10

en cambio si lo tienes que multiplecolumns sería:

1 6
2 7
3 8
4 9
5 10
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #3 (permalink)  
Antiguo 04/09/2008, 23:50
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 6 meses
Puntos: 2
Respuesta: Visual Basic 2005: Listbox con Word Wrap

...en el anterior, se supone que tienes espacio para ver 5 lineas y no 4 como puse (es que la edición del mensaje da errores...)
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #4 (permalink)  
Antiguo 05/09/2008, 06:39
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: Listbox con Word Wrap

ah ok entiendo Laforge, muchas gracias por tu respuesta, ya entendí como funciona el multicolumns del listbox.

Y hay alguna forma de que el Word Wrap funcione en un listview? Para que sirve la propiedad label wrap del listview? Gracias!
  #5 (permalink)  
Antiguo 05/09/2008, 07:44
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: Listbox con Word Wrap

Una pregunta:

Tengo dos listbox, como puedo hacer que cuando escojo una fila del listbox1, se seleccione tambien en la misma fila del listbox2?

Gracias!

Última edición por moradazo; 05/09/2008 a las 07:52
  #6 (permalink)  
Antiguo 05/09/2008, 07:55
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: Listbox con Word Wrap

Puedes usar el evento SelectedIndexChanged del ListBox.
http://msdn.microsoft.com/es-es/libr...ed(VS.80).aspx
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 05/09/2008, 08:26
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: Listbox con Word Wrap

Muchas gracias nuevamente David

Obtuve este código en esa página

Código:
  Dim curItem As String = ListBox2.SelectedItem.ToString()
        ' Find the string in ListBox2.
        Dim index As Integer = ListBox1.FindString(curItem)
        ' If the item was not found in ListBox 2 display a message box, otherwise select it in ListBox2.
        If index = -1 Then
            MessageBox.Show("Item is not available in ListBox1")
        Else
            ListBox1.SetSelected(index, True)
        End If
Como ves, este código funciona para buscar ítems idénticos, o sea que en la fila 4 de ambos listbox si son iguales esta bien, si no, avisa que son diferentes.

Lo que necesito es solo que me seleccione el mismo número de fila del primer listbox que seleccioné en el otro listbox. Probe cambiando FindString por Selecteditem, SelectedValue, SelectedIndex, SelectedIndice, pero siempre me da error.

Gracias por la ayuda!!!
  #8 (permalink)  
Antiguo 05/09/2008, 08:31
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: Listbox con Word Wrap

Ya lo resolvi!!!

Código PHP:
Private Sub listBox2_SelectedIndexChanged(ByVal sender As ObjectByVal e As System.EventArgsHandles ListBox2.SelectedIndexChanged
        Dim numero 
As Integer
        numero 
ListBox2.SelectedIndices.Item(0'Obtiene el número de fila'
        
ListBox1.SetSelected(imparTrue)
End Sub 
Espero le pueda servir a alguien más! Nos vemos.
  #9 (permalink)  
Antiguo 05/09/2008, 13:56
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Duda con Listbox

Alguien sabe como ponerle color a una linea de texto de un listbox?

Gracias.
  #10 (permalink)  
Antiguo 08/09/2008, 14:48
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: Listbox con Word Wrap

Ayuda!

Ocupo seleccionar unas lineas de un listbox por medio de las flechas del teclado (arriba y abajo), tengo este codigo:

Código PHP:
 If Asc(e.KeyChar) = 72 Or Asc(e.KeyChar) = 80 Then 
No se por que no me funciona, el evento que uso es Keypress, he intentado con otros numeros, como 38 y 40, 5 y 24, pero no me han servido, sera en algo que me estoy equivocando? Gracias.
  #11 (permalink)  
Antiguo 08/09/2008, 14:52
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: Listbox con Word Wrap

Creo que el KeyPress no captura esas teclas, prueba con KeyDown.

También, para saber el número exacto, haz un MsgBox en el evento o ejecuta paso a paso.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 08/09/2008, 15:13
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: Listbox con Word Wrap

Gracias David.

El KeyDown no reconoce a keychar, me dice que no es miembro de keyevents.

Y perdona, como es que hago el MsgBox? O sea, que indicación le doy para que me indique el número de las flechas.

Gracias
  #13 (permalink)  
Antiguo 08/09/2008, 15: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
De acuerdo Respuesta: Visual Basic 2005: Listbox con Word Wrap

En el evento KeyDown coloca esto:
Código PHP:
MsgBox(e.KeyCode
Y pulsa las teclas que quieres saber el código.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 08/09/2008, 15:26
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: Listbox con Word Wrap

Gracias nuevamente David.

No se por que no me funciona, este es mi codigo:

Código PHP:
  Private Sub listbox_KeyDown(ByVal sender As System.ObjectByVal e As System.Windows.Forms.KeyEventArgsHandles listbox.KeyDown
        listbox1
.Items.Clear()
        If 
Asc(e.KeyCode) = 38 Or Asc(e.KeyCode) = 40 Then
            Dim impar 
As Integer
                listbox1
.SetSelected(variableTrue)
            
End If
        
End If
    
End Sub 
Lo que quiero hacer es que cuando se desplace por medio de flecha arriba y flecha abajo en el listbox, haga el evento que tiene dentro de la condición que declaré, pero no lo hace, paso las flechas y no lo hace, no se por que.

Cual será mi error?

PD: hice lo del msgbox y me funciono, por eso puse los numeros 38 y 40. graciass!
  #15 (permalink)  
Antiguo 08/09/2008, 15:28
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: Listbox con Word Wrap

¿Hiciste el MsgBox y te salieron esos números?. Quita el Asc, ya que solo sirve cuando el dato es texto, lo que hace es devolver su código ASCII, quita y nos cuentas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 08/09/2008, 15:31
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: Listbox con Word Wrap

EXCELENTE!!! Otra vez David, muchas gracias!!!

Te deberian pasar a Moderador!
  #17 (permalink)  
Antiguo 08/09/2008, 15:48
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: Listbox con Word Wrap

Y volviendo a este tema,

Alguien sabe como ponerle color a una linea de texto de un listbox?

Muchas gracias!
  #18 (permalink)  
Antiguo 09/09/2008, 09:21
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: Listbox con Word Wrap

Aca pude elaborar este codigo:

Código PHP:
LBcomments.Items.Item(e.Index).ToString 'Indice de cadenas'

'Ahora cada "Case" es una línea, lo que ocupo es declarar que todos los números'
'pares sean Brushes.blue y que los impares sean Brushes.black. En este caso'
'lógicamente solo la fila 1 se pintará de azul y lo demás negro, entonces intenté'
'con un FOR (For i=0 to 10 then) declarando i como variable para cada "Case"'
'y solo pintaba en azul la fila 10. Entonces como puedo hacer para que pinte de'
'2 en 2?'

            
Select Case (e.Index)
                Case 
1
                    myBrush 
Brushes.Blue
                
Case Else
                    
myBrush Brushes.Black
            End Select 
Muchas gracias!
  #19 (permalink)  
Antiguo 09/09/2008, 10: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
Respuesta: Visual Basic 2005: Listbox con Word Wrap

Prueba dentro del bucle For hacer un Mod (resto) para saber si es par o impar:
Código PHP:
Select Case (e.Index Mod 2)
   Case 
0
          
'Es par'
   
Case 1
          
'Es impar'
End Select 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 09/09/2008, 10:41
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: Listbox con Word Wrap

Que bien David muchas gracias, aca me dice el Karma que tengo que agradecer a otro usuario antes de repetirte, pero aun asi te agradezco, buenas soluciones me traes!

Tengo ahora un gran problema! Resulta que tengo dos listbox, al darle clic en un item del listbox2, se selecciona el mismo numero de item del listbox1, todo bien hasta ahi.

Lo que pasa es que en el listbox1 hay muchos campos vacíos, por lo que si por ejemplo un item del listbox2, digamos (4), se seleccionará el item (4) del listbox1 pero anda vacío entonces quiero que se haga una condición diciendo que si ese campo es "" entonces devuélvase una línea hasta encontrar una línea que no sea "". Se me ocurre lo siguiente:

Código PHP:
If listbox1.SelectedIndices.Item(IndiceDeListBox) = "" Then
                listbox1
.SetSelected(IndiceDeListBox 1True)
            
End If 
Intenté con un Do While pero me cuelga el programa, si me pudieran asistir donde estoy cometiendo el error? Gracias.
  #21 (permalink)  
Antiguo 09/09/2008, 10: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: Listbox con Word Wrap

ya lo arreglé:

Código PHP:
Do While listbox.Items(IndiceDelListbox) = ""
                
IndiceDelListbox IndiceDelListbox 1
                listbox
.SetSelected(IndiceDelListboxTrue)
            
Loop 
  #22 (permalink)  
Antiguo 09/09/2008, 12:00
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: Listbox con Word Wrap

Hola amigos, una consulta:

Se puede hacer un tipo Grid en un listbox? o sea, no la propiedad como la del listview (ojalá) hasta donde se hay que hacerlo manual. Si alguien me pudiera ayudar con este tema les agradezco mucho!!!
  #23 (permalink)  
Antiguo 09/09/2008, 14:53
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: Listbox con Word Wrap

Pude descubrir la solución jeje para agregar lineas como un grid en un LISTBOX.

Código PHP:
 Private Sub listbox_DrawItem(ByVal sender As ObjectByVal e As _
         System
.Windows.Forms.DrawItemEventArgsHandles listbox.DrawItem
        Dim g 
As Graphics e.Graphics
        Dim br 
As SolidBrush
        Dim s 
As String
        Dim myBrush 
As Brush

        
Try
            
listbox.Items.Item(e.Index).ToString

            
'Se necesita agregar un color cada dos lineas'
            
Select Case (e.Index Mod 2)
                Case 
0
                    myBrush 
Brushes.Blue
                
Case 1
                    myBrush 
Brushes.Black
            End Select
            
        
Catch ex As Exception
            Trace
.WriteLine(ex.ToString)
            
"error"
        
End Try

        
'Colorea el fondo de la linea'
        
g.FillRectangle(Brushes.AliceBluee.Bounds)

        
'Dibuja lineas como un grid en el listbox y despues le colorea el fondo'
        
Select Case (e.Index Mod 2)
            Case 
0
                g
.FillRectangle(Brushes.AliceBluee.Bounds)
                
g.DrawRectangle(Pens.Blacke.Bounds)
            Case 
1
                g
.FillRectangle(Brushes.Whitee.Bounds)
                
g.DrawRectangle(Pens.Blacke.Bounds)
        
End Select

        
'Cuando esta seleccionado, dibuja las lineas del grid mas el color de seleccion'
        
If CBool(e.State And DrawItemState.SelectedThen
            g
.DrawRectangle(Pens.Blacke.Bounds)
            
g.FillRectangle(Brushes.Golde.Bounds)
            
g.DrawRectangle(Pens.Blacke.Bounds)

        
End If
        
br = New SolidBrush(Color.Black)
        
g.DrawString(slistbox.FontmyBrushRectangleF.op_Implicit(e.Bounds))
        
br.Dispose()
    
End Sub 
Espero le puedan servir.
  #24 (permalink)  
Antiguo 23/09/2008, 15:05
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: Listbox con Word Wrap

Hola que tal a todos:

Resulta que tengo un problema diria yo "grafico" ya que se me distorcionan unos cuantos textos de un ListBox.

Esto pasa cuando la ventana esta restaurada o en su tamaño por defecto:



A la hora de maximizar la ventana o solo cambiarle el tamaño de las esquinas de la ventana ya me distorciona las letras como se ve a continuacion en el ovalo rojo:



La forma para que se arregle es oprimiendo el boton que llena ese listbox, entonces mi pregunta es:

Existe la forma para que cuando la ventana este cambiando de tamaño se pueda estar oprimiendo ese boton para que no me deforme los textos? 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 09:38.