Tengo una duda, sucede que cada item de la lista tiene un cuadro de CHECKBOX pero deseo obtener todas las direcciones de la lista al presionar [Obtener], no solo la que muestro en el recuadro rojo.
aqui está el codigo
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#NoTrayIcon
#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>
Global $btnObtener, $unidad, $Checkbox1, $ed, $ListView1, $lista
Dim $aArray[21], $Array[4]
; GUI
$interfaz = GUICreate("Avy", 620, 405, -1, -1, -1, $ws_ex_acceptfiles)
;BOTONES
$btnEscanear = GUICtrlCreateButton("&Escanear", 369, 355, 60, 25)
$btnObtener = GUICtrlCreateButton("&Obtener", 429, 355, 120, 25)
$btnSalir = GUICtrlCreateButton("&Salir", 550, 355, 60, 25)
;UNIDADES
$Combo1 = GUICtrlCreateCombo("Seleccione la unidad", 10, 60, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
obtenerUnidades()
;REGISTRO DE SUCESOS
$tab = GUICtrlCreateTab(10, 100, 600, 250)
$itemRegistroDeSucesos = GUICtrlCreateTabItem("Registro de sucesos")
$gruposucesos = GUICtrlCreateGroup("Detalles", 15, 130, 590, 215)
$lista = GUICtrlCreateListView("Deteccion |Tipo |Estado ", 18, 150, 575, 190, -1, $LVS_EX_CHECKBOXES);
;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 $Combo1
Clic_combo()
Case $btnEscanear
Clic_Escanear()
Case $btnObtener
Clic_Obtener()
Case $btnSalir
Exit
EndSwitch
WEnd
;FUNCION COMBO
Func Clic_combo()
If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
Else
valordefinido()
$var = DriveStatus($unidad)
If StringInStr($var, "NOTREADY") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
ElseIf StringInStr($var, "INVALID") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
EndIf
EndIf
EndFunc ;==>Clic_combo
;FUNCION Obtener
Func Clic_Obtener(); Deseo obtener la direccion que me muestra en la lista por ejemplo H:\carpeta o H:\archivo.extension
$valor = GUICtrlRead($Lista)
MsgBox(-1,"message",""&$valor)
EndFunc ;==>Clic_Obtener
Func Clic_Escanear()
If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
GUICtrlSetState($Combo1, $GUI_FOCUS); Ubico el foco donde se elige la unidad
Else
unidadPrincipal() ;VERIFICANDO SI LA UNIDAD ESTÁ DISPONIBLE
If $ed == 1 Then
$etiqueta = DriveGetLabel($unidad)
_GUICtrlListView_DeleteAllItems($lista) ;AQUI BORRA TODO EL CONTENIDO DEL LISTVIEW POR Q VUELVE A Escanear
GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & ":" & @SEC & " Analizando... unidad ", $lista)
GUICtrlSetColor(-1, 0x0000ff) ; azul
GUICtrlCreateListViewItem("(" & $unidad & ") " & $etiqueta & "", $lista)
;BUSQUEDA
$search1 = FileFindFirstFile($unidad & "\*.*")
While 1
$file = FileFindNextFile($search1)
If @error Then ExitLoop
$ver = FileGetSize($unidad & "\" & $file) ; obtengo el tamaño
$res = $ver / 1024
If $res <= 266.240 Then
GUICtrlCreateListViewItem($unidad & "\" & $file & "|Directorio|Estable", $lista)
GUICtrlSetState(-1, $GUI_CHECKED);checkeo en la lista
EndIf
bajar(); PARA UBICAR EN LA ULTIMA FILA DEL LISTADO DE LA TABLA
WEnd
; CIERRA EL IDENTIFICADOR DE LA BUSQUEDA
FileClose($search1)
GUICtrlCreateListViewItem(@HOUR & ":" & @MIN & ":" & @SEC & " Analisis Finalizado", $lista)
EndIf
EndIf
EndFunc ;==>Clic_Escanear
Func bajar() ; PARA UBICAR EN LA ULTIMA FILA DEL LISTADO DE LA TABLA
$i = _GUICtrlListView_GetItemCount($lista)
_GUICtrlListView_ScrollItem($lista, $i)
EndFunc ;==>bajar
Func _GUICtrlListView_ScrollItem($ListView1, $iItemIndex = -1, $fPartialOK = True, $iIncrement = 16)
Local $iSuccess1, $iSuccess2
If $iItemIndex = -1 Then $iItemIndex = _GUICtrlListView_GetItemCount($ListView1) - 1
$iSuccess1 = _GUICtrlListView_Scroll($ListView1, 0, $iIncrement)
$iSuccess2 = _GUICtrlListView_EnsureVisible($ListView1, $iItemIndex, $fPartialOK)
Return $iSuccess1 And $iSuccess2
EndFunc ;==>_GUICtrlListView_ScrollItem
Func obtenerUnidades() ;esta función nos recorre todos los dispositivos conectados al pc
$var = DriveGetDrive("removable"); se alamcenan en est variable
If Not @error Then ; si no hay error continuamos
For $i = 1 To $var[0]
;meto un for, es decir un bucle que irá desde el valor 0 hasta $var[0], que es el número max de dispositivos que hay
;si suponemos que tenemos un total de 10 dispositivos, $var[0] valdrá 10
If DriveStatus($var[$i]) <> "READY" Then ; soluciona tu error, si el dispositivo no está listo, no lo muestra, así se acelera todo
Else
GUICtrlSetData($Combo1, DriveGetLabel($var[$i]) & " (" & $var[$i] & ")")
EndIf
Next
EndIf
EndFunc ;==>obtenerUnidades
Func valordefinido()
$contenidocombo1 = StringReplace(GUICtrlRead($Combo1), " (", "<unidad>")
$contenidocombo = StringReplace($contenidocombo1, ")", "</unidad>")
$unidad1 = StringRegExp($contenidocombo, "<(?i)unidad>(.*?)</(?i)unidad>", 1, 1)
$unidad = $unidad1[0]
EndFunc ;==>valordefinido
Func unidadPrincipal()
valordefinido()
$var = DriveStatus($unidad)
If StringInStr($var, "NOTREADY") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
Actualizar()
ElseIf StringInStr($var, "INVALID") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
Actualizar()
Else
$ed = 1
EndIf
EndFunc ;==>unidadPrincipal
Func Actualizar() ; esto aun no funciona
GUICtrlSetData($Combo1, "")
GUICtrlSetData($Combo1, "SELECCIONE LA UNIDAD")
obtenerUnidades();
EndFunc ;==>Actualizar
Func verificacionUnidad()
If GUICtrlRead($Combo1) = "Seleccione la unidad" Then
MsgBox(48, " Aviso", "Unidad no seleccionada")
Else
valordefinido()
$var = DriveStatus($unidad)
If StringInStr($var, "NOTREADY") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
ElseIf StringInStr($var, "INVALID") Then
MsgBox(48, " Aviso", "La unidad no está disponible")
Else
$ed = "1"
EndIf
EndIf
EndFunc ;==>verificacionUnidad