Ordenar ListView de acuerdo al subItem 1

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Ordenar ListView de acuerdo al subItem 1

Mensaje por yasmany »

Hola a todos una vez mas... tengo un problema en un pequeño detalle dentro de mi soft.
Sucede que no he podido realizar el orden de la lista dentro del ListView, he querido ordenarlo de acuerdo al subItem 1 (es decir basandome en el valor de en medio de la lista) en forma ascendente, Habrá la posibilidad de lograr aquello?
Espero atiendan mi ayuda, de antemano muchas gracias

Código: Seleccionar todo

#NoTrayIcon
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=icono.ico
#AutoIt3Wrapper_Outfile=Avy.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#AutoIt3Wrapper_Res_Comment=Software gratuito [email protected]
#AutoIt3Wrapper_Res_Description=Avy
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <UpdownConstants.au3>
#include <GuiTab.au3>
#include <GuiListView.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <ListviewConstants.au3>


_Singleton("AVY1991") ; NO REPETIR INSTANCIA DE EJECUCION junto con  #include <Misc.au3>
Global $btnDesinfectar, $unidad, $ed
Dim $aArray[21], $Array[4]

#cs
$GUI_WS_EX_PARENTDRAG 0x00100000
Permite a un control de etiqueta o imagen ser empleado como la barra de título para arrastrar al conjunto de la ventana padre
#ce

; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1  , $ws_ex_acceptfiles)
;$interfaz = GUICreate("Avy", 620, 405, -1, -1,$WS_OVERLAPPEDWINDOW, BitOR($WS_EX_CONTROLPARENT,-1) , $ws_ex_acceptfiles)
GUICtrlCreatePic(@AppDataDir & "\banner.jpg", 0, 0, 620, 50)

$iconointerfaz = GUISetIcon("icono.ico", 0)
$ch_desplazar = GUICtrlCreateCheckbox("Desplazar lista", 15, 355, 100, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
$ch_aplicaciones = GUICtrlCreateCheckbox("Eliminar Aplicaciones", 120, 355, 120, 25)
GUICtrlSetState($ch_aplicaciones, $GUI_HIDE)

;MENUS
$menuArchivo = GUICtrlCreateMenu("&Archivo")
$menuAbrirUnidad = GUICtrlCreateMenuItem("Abrir unidad", $menuArchivo)

;GUICtrlSetState(-1, $GUI_DEFBUTTON);PARA PONERLO EN NEGRITA
$menuCerrar = GUICtrlCreateMenuItem("Cerrar programa", $menuArchivo)

$menuInformacion = GUICtrlCreateMenu("&Informacion")
$menuOpcionesSistema = GUICtrlCreateMenu("&Windows", $menuInformacion)
$menuHerramientasTipoSistema = GUICtrlCreateMenuItem("Version", $menuOpcionesSistema)
$menuHerramientasDetalles = GUICtrlCreateMenuItem("Detalles", $menuOpcionesSistema)
$menuInformacionAcercaAvy = GUICtrlCreateMenuItem("Acerca de Avy", $menuInformacion)

;BOTONES
$btnAnalizar = GUICtrlCreateButton("&Analizar", 369, 355, 60, 25)
GUICtrlSetTip($btnAnalizar, "Analizar unidad seleccionada")

$btnDesinfectar = GUICtrlCreateButton("&Desinfectar", 429, 355, 120, 25)
GUICtrlSetTip(-1, "Analize y desinfecte la unidad")

$btnSalir = GUICtrlCreateButton("&Salir", 550, 355, 60, 25)
GUICtrlSetTip(-1, "Cerrar programa")

;ETIQUETAS DE INFORMACION
$lblNombre = GUICtrlCreateLabel("", 278, 75, 80, 15)
$lblSerial = GUICtrlCreateLabel("", 278, 90, 75, 15)
$lblSize = GUICtrlCreateLabel("", 410, 75, 185, 15)
$lblTipo = GUICtrlCreateLabel("", 410, 90, 185, 15)

GUICtrlCreateLabel("Nombre:", 235, 75, 40, 15)
GUICtrlCreateLabel("Serial:", 235, 90, 40, 15)
GUICtrlCreateLabel("Tamaño:", 365, 75, 43, 15)
GUICtrlCreateLabel("Tipo:", 365, 90, 23, 15)

;UNIDADES
$cbUnidades = GUICtrlCreateCombo("BUSCAR UNIDAD...", 10, 60, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
GUICtrlSetColor($cbUnidades, 0xff0000)


GUICtrlSetState($cbUnidades, $GUI_FOCUS)
$gruposucesos = GUICtrlCreateGroup("Informacion de unidad", 230, 55, 375, 60)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
;boton_prueba
$btn_actualizar = GUICtrlCreateButton("+", 205, 59, 17, 22)
GUICtrlSetTip($btn_actualizar, "Actualizar lista de unidades", "Avy", 1)

;///////////////////
; TAB ITEMS
;//////////////////////

;REGISTRO DE SUCESO ****************************************
$tab = GUICtrlCreateTab(10, 100, 600, 250, $WS_MAXIMIZEBOX, $WS_EX_APPWINDOW)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro de sucesos")
$gruposucesos = GUICtrlCreateGroup("Detalles", 15, 130, 590, 215)
GUICtrlSetState(-1, $GUI_SHOW); Mostrando la información detallada
$lista = GUICtrlCreateListView("Deteccion |Tipo |Estado ", 18, 150, 575, 190, -1, BitOR($LVS_EX_CHECKBOXES, $LVS_EX_FULLROWSELECT));;
GUICtrlSetState($lista, $GUI_SHOW)

;SEGURIDAD
GUICtrlCreateTabItem("Seguridad")
GUICtrlCreateGroup("Ociones de seguridad", 15, 130, 580, 215)
$ch_proteger = GUICtrlCreateCheckbox("Proteger unidad y antivirus", 20, 180, 250, 15)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
$nota_ch_proteger = GUICtrlCreateLabel("Ningun virus modficará la carpeta creada...Ver Ayuda", 35, 200, 300, 20)
$ch_remover = GUICtrlCreateCheckbox("Remover proteccion portable del antivirus", 20, 180, 290, 15)
GUICtrlSetFont(-1, 9, 600, 0, "MS Serif")
GUICtrlSetState($ch_remover, $GUI_HIDE)

$btn_eliminar = GUICtrlCreateButton("X", 240, 305, 40, 25)
$font = "Comic Sans MS"
GUICtrlSetFont(-1, 9, 600, 4, $font) ; muestra caracteres
GUICtrlSetTip(-1, "Eliminar")

$label2 = GUICtrlCreateLabel("Arrastre en el recuadro carpeta/archivo q desea eliminar", 35, 290, 270, 15)
$input1 = GUICtrlCreateInput("", 35, 305, 200, 25, -1, BitOR($ES_right, $es_multiline));Bitor se utiliza en controles antecediendo un -1,BitOR
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Para permitir arrastrar y soltar pero aplicando al crear la  GUI al final de la linea -1,$ws_ex_acceptfiles

$btnaplicar = GUICtrlCreateButton("Aplicar", 490, 300, 100, 40)

;AYUDA
$ayuda = GUICtrlCreateTabItem("Ayuda")

GUICtrlCreateListViewItem("Dato1  |Zabdam   |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato2  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato3  |mnopqr  |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato4  |stuvwxy |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato5  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato6  |Danep     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato7  |psd     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato8  |exe     |cbfdsf", $lista)

;ESTADO DE LA GUI
GUISetState(@SW_SHOW)

;CASOS
While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg

      Case $GUI_EVENT_CLOSE
         If $nMsg = $GUI_EVENT_CLOSE Then
            Exit
         EndIf
      Case $btnAnalizar
         
   EndSwitch

WEnd
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Ordenar ListView de acuerdo al subItem 1

Mensaje por Dany »

No entiendo. muestra masomenos el orden que deberia quedar.

me voy al estadio respondo ahora.

saludos :smt027
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Ordenar ListView de acuerdo al subItem 1

Mensaje por yasmany »

Asi está (ejemplo)

Código: Seleccionar todo

GUICtrlCreateListViewItem("Dato1  |Zabdam   |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato2  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato3  |mnopqr  |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato4  |stuvwxy |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato5  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato6  |Danep     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato7  |psd     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato8  |exe     |cbfdsf", $lista)
Basandome en el subItem1 quiero ordenarlos
esteno|enestesi|esteno
Basandome en el subItem de en medio ordeno la lista
Asi mas omenos he trato de que quede, espero hacerme entender

Código: Seleccionar todo

;----------------------------------------------|
;----------------------------------------------|
;----------------------------------------------|
;----------------------------------------------|
;----------------------------------------------|
;----------------------------------------------V
GUICtrlCreateListViewItem("Dato2  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato5  |Acceso Directo|nopqrst", $lista)
GUICtrlCreateListViewItem("Dato6  |Danep     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato8  |exe     |cbfdsf", $lista)
GUICtrlCreateListViewItem("Dato3  |mnopqr  |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato7  |psd     |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato4  |stuvwxy |nopqrst", $lista)
GUICtrlCreateListViewItem("Dato1  |Zabdam   |nopqrst", $lista)
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Ordenar ListView de acuerdo al subItem 1

Mensaje por Dany »

Hay una funciona para registrar un sort. pero lo podrias hacer desde un array que luego llenara el listview.

saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Ordenar ListView de acuerdo al subItem 1 [SOLUCIONADO]

Mensaje por yasmany »

Agradezco tu ayuda Dany en cierta forma me ha servido.
Por cierto con tres lineas de codigo lo he logrado y a funcionado genial, claro tambien le he puesto el estilo $LVS_SORTASCENDING al listview para que me muestra ordenado en primera instancia basado en la primera columna.
Y lo mas bueno que ha resultado es que al hacer clic en cualquier cabecera de columnas ordena toda la lista ascendente/descendente de acuerdo al contenido de la columna.

_GUICtrlListView_RegisterSortCallBack($listView)
_GUICtrlListView_SortItems($listView, GUICtrlGetState($listView))
_GUICtrlListView_UnRegisterSortCallBack($listView)

Código: Seleccionar todo

 _GUICtrlListView_RegisterSortCallBack($listView)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $hListView
                ; Kick off the sort callback
                _GUICtrlListView_SortItems($listView, GUICtrlGetState($listView))
        EndSwitch
    WEnd

    _GUICtrlListView_UnRegisterSortCallBack($listView)

NOTA: Lo he encontrado en la ayuda en ingles de autoit 3.3.10 puede que exista en las ayudas de versiones anteriores, esta estuvo mas a mano y la tomé.
Saludos :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Responder