ayuda leer txt para combobox

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
vladhampir
Mensajes: 19
Registrado: 02 Dic 2010, 07:32

ayuda leer txt para combobox

Mensaje por vladhampir »

hola de nuevo aqui con dudas respecto a lo siguiente
que cuando seleccione una opcion del combo 1
solo cargue los datos que corresponden a dicha empresa
osea que una vez que lea "empresa.txt" solo cargue esos archivos en "corte.txt"
y como reescribir el GUICtrlCreateListView para que no siga escribiendo hacia abajo
espero poder explicarme con los datos del scrip

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Goliath", 365, 369, 241, 118)
$Guardar = GUICtrlCreateButton("Guardar", 32, 304, 107, 49, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 24, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 24, 80, 121, 21)
$Input3 = GUICtrlCreateInput("", 24, 128, 121, 21)
$Input4 = GUICtrlCreateInput("", 24, 176, 121, 21)
$Input5 = GUICtrlCreateInput("", 24, 272, 121, 21)
$calcular = GUICtrlCreateButton("calcular", 40, 208, 89, 33, $WS_GROUP)
$corte = GUICtrlCreateLabel("Corte", 24, 56, 41, 17)
$Tiempo = GUICtrlCreateLabel("Tiempo", 24, 104, 39, 17)
$Costo = GUICtrlCreateLabel("Costo", 24, 152, 31, 17)
$Total = GUICtrlCreateLabel("Total", 24, 248, 28, 17)
$Empresa = GUICtrlCreateLabel("Empresa", 24, 8, 53, 17)
$cargar = GUICtrlCreateButton("Cargar", 208, 256, 107, 33, $WS_GROUP)
$listview = GUICtrlCreateListView("Concepto|Datos", 192, 124, 144, 118)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 70)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)

$fil = FileOpen("empresa.txt", 0)
$line = FileRead($fil,1000000)
 FileClose($fil)

 $fil2 = FileOpen("corte.txt", 0)
$line2 = FileRead($fil2,1000000)
 FileClose($fil2)

$Combo1 = GUICtrlCreateCombo("", 192, 32, 145, 25)
GUICtrlSetData(-1, $line)
$Combo2 = GUICtrlCreateCombo("", 192, 80, 145, 25)
GUICtrlSetData(-1, $line2)
$SELEMPRESA = GUICtrlCreateLabel("EMPRESA", 192, 8, 73, 17)
$SELCORTE = GUICtrlCreateLabel("CORTE", 192, 56, 53, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

		Case $Guardar

			$readempresa = GUICtrlRead($Input1)
			$read2 = GUICtrlRead($Input2)
			$read3 = GUICtrlRead($Input3)
			$read4 = GUICtrlRead($Input4)
			$read5 = GUICtrlRead($Input5)

			IniWrite($readempresa & ".ini", GUICtrlRead($Input2), "Tiempo", ($read3))
			IniWrite($readempresa & ".ini", GUICtrlRead($Input2), "Costo", ($read4))
			IniWrite($readempresa & ".ini", GUICtrlRead($Input2), "Total", ($read5) & @CRLF)


			$file = FileOpen("empresa.txt", 1)
            FileWrite($file, $readempresa & "|"& @CR)
            FileClose($file)

			$file2 = FileOpen("corte.txt", 1)
            FileWrite($file2, $read2 & "|"& @CR)
            FileClose($file2)




		Case $calcular
			$read3 = GUICtrlRead($Input3)
			$read4 = GUICtrlRead($Input4)

			$Z = ($read3 * $read4)
			GUICtrlSetData($Input5, $Z)

		Case $cargar
			$1 = IniRead(GUICtrlRead($Combo1) & ".ini", GUICtrlRead($Combo2), "Tiempo", "")
			$2 = IniRead(GUICtrlRead($Combo1) & ".ini", GUICtrlRead($Combo2), "Costo", "")
			$3 = IniRead(GUICtrlRead($Combo1)& ".ini", GUICtrlRead($Combo2), "Total", "")

			$item1 = GUICtrlCreateListViewItem("TIEMPO|" & $1, $listview)
			$item2 = GUICtrlCreateListViewItem("COSTO|" & $2, $listview)
			$item3 = GUICtrlCreateListViewItem("TOTAL|" & $3, $listview)

		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
de antemano muchas gracias
Última edición por vladhampir el 27 Mar 2011, 02:46, editado 3 veces en total.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Saber el elemento seleccionado de un combo y limpiar listvie

Mensaje por Chefito »

Pues para que se carga uno u otro archivo según el elemento que selecciones en el combo, puedes hacerlo mirando y comparando el texto del combo. Para mirar esto utiliza la función $textocombo1=guictrlread($combo1). Luego comparas el resultado, y según si es uno u otro cargas un archivo u otro. Ejemplo a groso modo:

Código: Seleccionar todo

$textocombo1=guictrlread($combo1)
switch $textocombo1
case "empresa 1"
;carga archivo de la empresa 1.
case "empresa 2"
;carga archivo de la empresa 2.
case "empresa 3"
;carga archivo de la empresa 3.
endswitch
Para limpiar la lista cada vez que la quieras rellenar, utiliza justo antes de rellenarla la función _GUICtrlListView_DeleteAllItems. Mirala en la ayuda.

Por cierto, que tienen que ver tus dudas con el título del post? :smt017 . Anda, cambialo que vas a confundir a la gente :smt021 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
vladhampir
Mensajes: 19
Registrado: 02 Dic 2010, 07:32

Re: Saber el elemento seleccionado de un combo y limpiar lis

Mensaje por vladhampir »

grcias Chefito pido disculpas no supe expresarme

disculpa ya probe tus comentarios bueno solo uno la duda es con el siguiente

Código: Seleccionar todo

$textocombo1=guictrlread($combo1)
switch $textocombo1
case "empresa 1"
;carga archivo de la empresa 1.
case "empresa 2"
;carga archivo de la empresa 2.
case "empresa 3"
;carga archivo de la empresa 3.
endswitch
este no entendi mucho busque en la ayuda pero no entendi si alguien me pudiera explicar

publico el codigo ya que hice un cambio para ver si alguien mas pudiera ayudarme ya que no entiendo, pero trato de entender

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#Region ### START Koda GUI section ### Form=


$Form1 = GUICreate("Goliath", 366, 321, 241, 118)

$fil = FileOpen("empresa.txt", 0)
$line = FileRead($fil,1000000)
 FileClose($fil)

$fil2 = FileOpen("corte.txt", 0)
$line2 = FileRead($fil2,1000000)
 FileClose($fil2)

$Combo1 = GUICtrlCreateCombo("", 24, 32, 145, 25)
GUICtrlSetData(-1, $line)
$Combo2 = GUICtrlCreateCombo("", 24, 80, 145, 25)
GUICtrlSetData(-1, $line2)

$Input3 = GUICtrlCreateInput("", 24, 128, 121, 21)
$Input4 = GUICtrlCreateInput("", 24, 176, 121, 21)
$calcular = GUICtrlCreateButton("calcular", 40, 208, 89, 33, $WS_GROUP)
$Input5 = GUICtrlCreateInput("", 24, 272, 121, 21)
$Guardar = GUICtrlCreateButton("Guardar", 200, 240, 107, 49, $WS_GROUP)
$corte = GUICtrlCreateLabel("Corte", 24, 56, 145, 17)
$Tiempo = GUICtrlCreateLabel("Tiempo", 24, 104, 119, 17)
$Costo = GUICtrlCreateLabel("Costo", 24, 152, 119, 17)
$Total = GUICtrlCreateLabel("Total", 24, 248, 28, 17)
$Empresa = GUICtrlCreateLabel("Empresa", 24, 8, 61, 17)
$cargar = GUICtrlCreateButton("Cargar", 200, 176, 107, 33, $WS_GROUP)
$listview = GUICtrlCreateListView("Concepto|Datos", 184, 36, 144, 118)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
GUISetState(@SW_SHOW)


#EndRegion ### END Koda GUI section ###


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

			Case $Guardar

			$readempresa = GUICtrlRead($Combo1)
			$read2 = GUICtrlRead($Combo2)
			$read3 = GUICtrlRead($Input3)
			$read4 = GUICtrlRead($Input4)
			$read5 = GUICtrlRead($Input5)

			IniWrite($readempresa & ".ini", GUICtrlRead($Combo2), "Tiempo", ($read3))
			IniWrite($readempresa & ".ini", GUICtrlRead($Combo2), "Costo", ($read4))
			IniWrite($readempresa & ".ini", GUICtrlRead($Combo2), "Total", ($read5) & @CRLF)


            $file = FileOpen("empresa.txt", 1)
            FileWrite($file, $readempresa &"|")
            FileClose($file)

            $file2 = FileOpen($readempresa & "corte.txt", 1)
            FileWrite($file2, $read2 & "|")
            FileClose($file2)

		Case $calcular

			$read3 = GUICtrlRead($Input3)
			$read4 = GUICtrlRead($Input4)

			$Z = ($read3 * $read4)
			GUICtrlSetData($Input5, $Z)

		Case $cargar
			_GUICtrlListView_DeleteAllItems($listview)

			$1 = IniRead(GUICtrlRead($Combo1) & ".ini", GUICtrlRead($Combo2), "Tiempo", "")
			$2 = IniRead(GUICtrlRead($Combo1) & ".ini", GUICtrlRead($Combo2), "Costo", "")
			$3 = IniRead(GUICtrlRead($Combo1)& ".ini", GUICtrlRead($Combo2), "Total", "")

			$item1 = GUICtrlCreateListViewItem("TIEMPO|" & $1, $listview)
			$item2 = GUICtrlCreateListViewItem("COSTO|" & $2, $listview)
			$item3 = GUICtrlCreateListViewItem("TOTAL|" & $3, $listview)

		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
la idea es que guarde los datos lo que seria corte mas el nombre de la empresa
FileOpen($readempresa & "corte.txt", 1)algo asi
y que despues el combo box me lo lea
algo asi
$fil2 = FileOpen($combo1 &"corte.txt", 0)

pero no lee nada
tambien si me pudieran decir como evitar que se graben archivos repetidos es decir que si guardo
aaaa| y despues vuelvo a poner aaaa| no me lo ponga dos veces osea que si existe lo reescriba o no guarde para que no me quede aaaa|aaaa| asi y no me proyecte doble "aaaa" en el combobox


de antemano muchisimas gracias
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: ayuda leer txt para combobox

Mensaje por Chefito »

vladhampir escribió:este no entendi mucho busque en la ayuda pero no entendi si alguien me pudiera explicar
No se que no entiendes. Ya te lo explico en el post anterior. Es simplemente un ejemplo general. Tú tienes que rellenar lo que iría en los case, que en tu caso sería el código del fichero adecuado según la opción del combo que seleccionases. Yo lo que haría es poner dentro de los cases una variable con el path y nombre del archivo de texto a cargar, y luego, al salir del switch, cargaría el archivo de texto que hay almacenado en la variable. Muy facil :smt002 .

Respecto a las demás cuestiones, si quieres guardar el archivo con el texto nuevo y machacar el anterior, pon en la función fileopen, el 2º parámetro (mode) el valor 2 en vez de el 1. El valor 1 suma el nuevo archivo al anterior. Mira los valores de este parámetro en la ayuda. No estoy seguro que quieras saber esto, pero nunca está de más.
vladhampir escribió:tambien si me pudieran decir como evitar que se graben archivos repetidos es decir que si guardoaaaa| y despues vuelvo a poner aaaa| no me lo ponga dos veces osea que si existe lo reescriba o no guarde para que no me quede aaaa|aaaa| asi y no me proyecte doble "aaaa" en el combobox
Tienes que comparar con un if...then.... el texto que quieres introducir con todos los items de la lista a ver si están. Si están, no introduces el texto, si no están, lo introduces. Esto lo puedes hacer de varias formas. Puede que la más rápida sea utilizando la función _GUICtrlListView_FindText. Mirala en la ayuda.
También puedes hacerlo directamente desde el texto que recoges del archivo con funciones como stringinstr.
vladhampir escribió:la idea es que guarde los datos lo que seria corte mas el nombre de la empresaFileOpen($readempresa & "corte.txt", 1)algo asiy que despues el combo box me lo lea algo asi$fil2 = FileOpen($combo1 &"corte.txt", 0)
Respecto a esto, recuerda que si no pones path el archivo te lo graba en el mismo path donde se encuentra el script. Respecto a $fil2 = FileOpen($combo1 &"corte.txt", 0) no creo que sea eso lo que quieres :smt003 . Quedrás sumar al nombre del archivo el valor del texto seleccionado en el combo. Esto se consigue con guictrlread($combo1) (ya te lo puse anteriormente). Quedaría $fil2 = FileOpen(guictrlread($combo1) &"corte.txt", 0).

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder