Autor Tema: Cambiar tipo de Selección el ListView (Focus Rect)  (Leído 9426 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Cambiar tipo de Selección el ListView (Focus Rect)
« en: Febrero 10, 2011, 07:09:47 pm »
Hola amigos del foro este es mi primer post, estoy creando un programita para restaurant y estoy usando el control ListView con imagenes de 100x100 pero no me esta gustando como queda la seleccion. Al seleccionar el artículo queda muy oculto.
Acá dejo una pequeña muestra de mi programa:



Hay alguna forma de hacer esta clase de selección:

« última modificación: Febrero 13, 2011, 03:40:09 am por xkiz ™ »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #1 en: Febrero 11, 2011, 07:44:57 am »
Private Declare Function SetWindowTheme Lib "uxtheme.dll" (ByVal hWnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
SetWindowTheme(Listview.hwnd, StrPtr("Explorer"), 0)

Ese codigo antes de que se muestre el listview, y la aplicacion debe contar con estilos XP (con InitCommonControls y un manifest :))

:P Puedes usar Mi modificacion del ucListView que incluye esa caracteristica

wolf_kof

  • Visitante
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #2 en: Febrero 11, 2011, 11:59:42 am »
Creo que nuestro colega enterariel esta usando Windows7 mmmmm te aconsejo que utilices los controles del Codejock ese problema lo puedes resolver facilmente con el listview del codejock ya que te da la opción de que puedas elejir en diferectes aspectos.
« última modificación: Febrero 11, 2011, 02:10:04 pm por xkiz ™ »

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #3 en: Febrero 11, 2011, 02:09:32 pm »
Private Declare Function SetWindowTheme Lib "uxtheme.dll" (ByVal hWnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
SetWindowTheme(Listview.hwnd, StrPtr("Explorer"), 0)

Ese codigo antes de que se muestre el listview, y la aplicacion debe contar con estilos XP (con InitCommonControls y un manifest :))

:P Puedes usar Mi modificacion del ucListView que incluye esa caracteristica

Probe el metodo que me dijiste funciona perfecto como quiero,pero hay un problemita solo funciona con el Microsoft Common controls 5.0 (SP2)

mirana que perfecto es xD



Lastima que con este control no se puede usar FullRowSellect, GridLines, etc, etc
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #4 en: Febrero 11, 2011, 02:14:15 pm »
yo te recomiendo que utilces el UserControl que te dice @raul338, asi te sacas de encima la referencia a Microsoft Common controls 5.0 (SP2), mientras menos dependencias tengas, mejor...

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #5 en: Febrero 11, 2011, 09:11:53 pm »
La version 6 esta estaticamente linkeada con el archivo de temas (o sea, como que tiene una copia dentro de si de la version windows 98 xD) y la version 5 esta dinamicamente linkeada (o sea, si no existe el archivo explota, ovibamente en win98 para adelante siempre existe, teoricamente)

Si ya haces uso intensivo del ListView, pues no te queda otra que reempezar con el ucListView.

Y si, hay apis para usar los gridlines y fullrow select para aplicar al ListView 5.0  y estan en este mismo foro!

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #6 en: Febrero 12, 2011, 10:47:04 am »
Como puedo dibujar dentro de un PictureBox esta clase de cuadritos y darle el color que quiera o dibujar un marco pero sin pasar el tamaña 100x100 al seleccionar el control ListView lo que hace es ponerle una mascara sobre el objeto seleccionado aca dejo un ejemplo.


Yo encontré un método para sacar del ListView cuanto se selecciona pero este le saca completamente la mascara.



Acá en esta muestra le saca una parte de la mascara por que no agrande el picture a 100x100, Mi idea es cargarle dentro del picture la imagen que se selecciona en el listview y encima dibujar una mascara mas clara o dibujarle una marco mas lindo.

Aca dejo el proyecto que le saca la mascara.

http://www.mediafire.com/?r3am0s7aa6a6m3s
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #7 en: Febrero 12, 2011, 03:07:05 pm »
Hola, te tiro otra alternativa
para la versión 5 hay otra manera más

Código: [Seleccionar]
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Const LVM_FIRST As Long = &H1000
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 54)
Private Const LVS_EX_BORDERSELECT As Long = &H8000&

Private Sub Form_Load()
    SendMessage ListView1.hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_BORDERSELECT, LVS_EX_BORDERSELECT
End Sub

la seleción te quedaria algo asi



pero esto no funciona con la 6

no esta nada mal el metodo que utilizaste, lo que si se puede mejorar sin utilizar el PictureBox, mira;
Código: [Seleccionar]
Private Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Dim hDClistView         As Long
    Dim nScaleMode          As Integer

    WndProc = CallWindowProc(mpOldWndProc, hWnd, uMsg, wParam, lParam)
   
    If (uMsg = WM_PAINT) Then
       
        With mpListView
           
            If (Not .SelectedItem Is Nothing) Then
                hDClistView = GetDC(.hWnd)
                mpForm.ImageList1.ListImages(.SelectedItem.Icon).Draw hDClistView, .SelectedItem.Left, .SelectedItem.Top, &H1
                ReleaseDC hWnd, hDClistView
            End If
           
        End With
       
    End If
   
End Function

Saludos.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #8 en: Febrero 12, 2011, 03:45:51 pm »
LeandroA esta perfecto eso amigo, pero el tema por que no uso el  Versión 5, y el ocx de raul338 es por que con estos no puedo darle espacio entre los iconos.

Mira este es lo normal al cargar un ListView.



Este es un método que tengo para darle menos espacio entre los iconos así entra mas artículos en el área de vista del control ListView.



CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #9 en: Febrero 12, 2011, 04:19:55 pm »
:o Entonces ya me pongo a ponerlo para la proxima version  ::)

Aunque si queres experimentar vos tambien, tenes que jugar con LVM_SETICONSPACING

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #10 en: Febrero 12, 2011, 05:47:02 pm »
jejeje noo eso dejo a tu cargo amigo yo no entiendo tanto todavía el tema de los APIs  :'(
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

wolf_kof

  • Visitante
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #11 en: Febrero 24, 2011, 04:31:53 pm »
alguien me podria explicar por favor lo del initcommandcontrol y lo del manifest? por que nunca he utilizado eso y no encuentro mucha información en el internet(san google)

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Cambiar tipo de Selección el ListView (Focus Rect)
« Respuesta #12 en: Febrero 24, 2011, 08:05:12 pm »
@wolf_kof: te quise mandar esta respuesta por MP para no desviar el hilo de este post, pero bue, me bloqueaste los Mensajes personales, asi que te contesto por aqui: Google search: Manifest en vb