OBTENER DIRECCION DE LISTA
Publicado: 28 Jun 2013, 02:04
Hola, buenas noches a todos,
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
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