Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: E N T E R 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:
(http://img824.imageshack.us/img824/5318/focusrectlistview.png)
Hay alguna forma de hacer esta clase de selección:
(http://img52.imageshack.us/img52/14/comoeste.png)
-
Private Declare Function SetWindowTheme Lib "uxtheme.dll" (ByVal hWnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
SetWindowTheme (http://msdn.microsoft.com/en-us/library/bb759827%28v=vs.85%29.aspx)(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 (http://www.leandroascierto.com.ar/foro/index.php?topic=621.0) que incluye esa caracteristica
-
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.
-
Private Declare Function SetWindowTheme Lib "uxtheme.dll" (ByVal hWnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
SetWindowTheme (http://msdn.microsoft.com/en-us/library/bb759827%28v=vs.85%29.aspx)(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 (http://www.leandroascierto.com.ar/foro/index.php?topic=621.0) 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
(http://img832.imageshack.us/img832/1039/listviewtheme.png)
Lastima que con este control no se puede usar FullRowSellect, GridLines, etc, etc
-
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...
-
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!
-
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.
(http://img694.imageshack.us/img694/1746/cuadritodentropicturebo.jpg)
Yo encontré un método para sacar del ListView cuanto se selecciona pero este le saca completamente la mascara.
(http://img842.imageshack.us/img842/3905/listviewselectmodific.jpg)
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 (http://www.mediafire.com/?r3am0s7aa6a6m3s)
-
Hola, te tiro otra alternativa
para la versión 5 hay otra manera más
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
(http://www.mylab.jp/diary/images/20050523_1.png)
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;
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.
-
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.
(http://img15.imageshack.us/img15/3158/listviewicononormal.png)
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.
(http://img197.imageshack.us/img197/2032/listviewepscioentreicon.png)
-
:o Entonces ya me pongo a ponerlo para la proxima version ::)
Aunque si queres experimentar vos tambien, tenes que jugar con LVM_SETICONSPACING (http://msdn.microsoft.com/en-us/library/bb761176%28v=vs.85%29.aspx)
-
jejeje noo eso dejo a tu cargo amigo yo no entiendo tanto todavía el tema de los APIs :'(
-
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)
-
@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 (http://www.google.com.ar/#hl=es&source=hp&biw=1680&bih=883&q=Manifest+en+vb&aq=f&aqi=&aql=&oq=&fp=c2393ccf762ff229)