GuiCtrlCreateInput ?

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
yeboya
Mensajes: 10
Registrado: 28 Nov 2006, 23:43
Ubicación: BCN- España

GuiCtrlCreateInput ?

Mensaje por yeboya »

Enhorabuena por el site!

Recien me inicio en esto y no tengo ni idea de lenguajes, ni programación...así que agradeceria algo de ayuda...

Pretendo hacer un registro de datos de texto y necesito saber con qué funcion puedo hacerlo . Con InputBox y mediante OpenFile, y FileWrite puedo copiar el valor de la variable en un .txt ; Pero si quiero copiar la variable introducida en GuiCtrlCreateInput no funciona.
Pues eso!...a ver si alguien me indica cómo puedo hacerlo...
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2099
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Mensaje por BasicOs »

Bienvenida al Autoit,

espero que sientas a gusto por aquí,

Ayudaría ver el código que tienes hecho, así vemos por donde vas.

Esto es muy sencillito, verás cuando lo entiendas, lo más importante es tener un poco de sentido común y adaptarlo a la programación, nada de sistemas cripticos, ni de claves ocultas.

Según me dices te funciona con InputBox bien como quieres, e intentas hacerlo más bonito, la manera mas eficaz y sencilla de hacer tu gui es así:

Tienes el Editor (Scite) instalado?, sino lo bajas de la web y después de instalarlo, le instalas el SciteUpdate(Actulizador)
Ahí tienes una herramienta que es el Koda(Font Designer) en el menú Tools, o bien con Alt+m, te sale como una plantilla Visual donde tu colocas los botones y textos donde quieras. Asi queda muy bien, puedes añadir imagenes, textos tipos de letras facilmente. Curiosamente cuando acabas le das a un simbolo como el play y te pasa el texto generado al editor.

En ese momento ya tienes todo hecho solo asignar en el Select/Case las acciones que quieres que haga cada botón.

:shock: Si no tienes el Koda aqui tienes el código que te genera el KODA con al asignación del botón:

Código: Seleccionar todo


#include <GUIConstants>
; == GUI generated with Koda ==
$formForm1 = GUICreate("Introduzca Datos", 234, 95, 192, 125)
$Button1 = GUICtrlCreateButton("&Aceptar", 64, 56, 97, 33, 0)
$txtTexto1 = GUICtrlCreateInput("", 16, 24, 193, 21)
GUISetState(@SW_SHOW)
While 1
	$msg = GuiGetMsg()
	Select
	Case $msg=$Button1
	Filewrite("Mifichero.txt",GUICtrlRead($txtTexto1))
;      ExitLoop  ;si activas esto cuando aceptas también sale del EScript
	Case $msg = $GUI_EVENT_CLOSE
		ExitLoop
	Case Else
		;;;;;;;
	EndSelect
WEnd
Exit
Otra manera más profesional trabajando con funciones,:roll: :

Código: Seleccionar todo

#include <GUIConstants>
	$sEntrada=CajaEntrada("Introduzca Datos")
	if $sEntrada then 
		if Filewrite("MiFichero.txt",$sEntrada) then
			msgbox(0,"Proceso de Grabación","Se grabó Correctamente "&$sEntrada)
		endif
	endif
Exit

Func CajaEntrada($Titulo) ;Author: Basicos de www.autoit.es
; == GUI generated with Koda ==
$formForm1 = GUICreate($Titulo, 234, 95, 192, 125)
$Button1 = GUICtrlCreateButton("&Aceptar", 64, 56, 97, 33, 0)
$txtTexto1 = GUICtrlCreateInput("", 16, 24, 193, 21)
GUISetState(@SW_SHOW)
While 1
	$msg = GuiGetMsg()
	Select
		Case $msg=$Button1
         return GUICtrlRead($txtTexto1)
	Case $msg = $GUI_EVENT_CLOSE
		ExitLoop
	Case Else
		;;;;;;;
	EndSelect
WEnd
return ""
EndFunc
¡Que pases un dia divertido!
yeboya
Mensajes: 10
Registrado: 28 Nov 2006, 23:43
Ubicación: BCN- España

Se resolvió (...creo!)

Mensaje por yeboya »

Gracias por la respuesta y bienhallado!!
Disculpa el retardo pero he cambiado de proveedor de internet y he estado una semana sin conexión...
Bien, posteo el código....seguro que me puedes hacer alguna sugerencia...
La intención es hacer un registro general de actividad y que no copie la actividad si es la misma, sólo si varia. Y que en función de "usuario" lo copie en un archivo con el nombre de usuario indicando fecha, actividad y lo que haya anotado en edit....creo que es sencillo pero ahí estoy.
Gracias por la info sobre el Koda....!la cosa cambia mucho! Yo me lo curré a mano...juas, juas, juas!

Código: Seleccionar todo

[color=green][/color]
#include <GuiConstants>
#include <Misc>
#include <File>
#include <GuiEdit>


$gui = GUICreate("",825,260,-1,-1,)
$font="Arial" 
GUICtrlSetFont (-1,9, 400, 2, $font)  
GUISetState(@SW_SHOW)

$file = FileOpen("C:\diari.txt", 1)
; DATE
$fecha = GuiCtrlCreateDate("", 20, 20, 230, 20)
GUICtrlSetFont (-1,9, 500, 0, $font)
$fecha1 = GUICtrlRead($fecha)
$fecha2 = FileWrite($file,$fecha1 & @CRLF)					
	
; Actividad
$act = GuiCtrlCreateInput("", 90, 80, 130, 20)
GUICtrlSetFont (-1,10, 500, 0, $font)
GuiCtrlCreateLabel("Actividad:", 25, 82, 50, 20)
GUICtrlSetFont (-1,9, 500, 0, $font)

; Usuario
$nom = GuiCtrlCreateInput("", 90, 120, 130, 20)
GUICtrlSetFont (-1,10, 500, 0, $font)
GuiCtrlCreateLabel("Usuario:", 25, 122, 50, 20)
GUICtrlSetFont (-1,9, 500, 0, $font)
;Editbox
$edit = GUICtrlCreateEdit("" & @CRLF, 260, 20, 550, 122, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_WANTRETURN)
GUICtrlSetFont (-1,10, 500, 0, $font)


$btn1 = GUICtrlCreateButton ("", 530,  155, 35, 40,$BS_ICON)
GUICtrlSetImage (-1,"C:\Archivos de programa\Windows Nt\Accesorios\wordpad.exe")
$btn2 = GUICtrlCreateButton ("Salir", 765,160,35,35,$BS_ICON)
GUICtrlSetImage (-1, "shell32.dll",27)

$btn4 = GUICtrlCreateButton ("diario", 340,155,40,40, $BS_ICON)
GUICtrlSetImage (-1, "shell32.dll",55)

 
While 1
    $msg = GUIGetMsg()
    Select
	Case $msg =  $GUI_EVENT_CLOSE  
		ExitLoop
		Case $msg = $btn1
			 $act1  = GUICtrlRead($act)
					
			If  $act1 <> $act  then
				$act2 = FileWrite($file,"-" & $act1 & @CRLF)
			EndIf
			
			$nom1  = GUICtrlRead($nom) 
			$nom2 = FileWrite($file,$nom1 & ":")

			$edit1 =  GUICtrlRead($edit) 
			$edit2 = FileWrite($file,$edit1)

			$cierrarchivo = FileClose("C:\diari.txt")

			GUICtrlSetData($nom, "")
            GUICtrlSetData($edit, "")
			$msg = $btn1
			
		Case $msg = $btn4
			RunWait("notepad \diari.txt")
		
					
    EndSelect
    
WEnd
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2099
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Mensaje por BasicOs »

Preliminares
Veo que es tu primer programa. Felicidades.
Creo que estas haciendo todo a pelo :smt015y es un monton más divertido con las herramientas, y evitas Bugs. Vaya además el Koda te guarda un ficherito con el form que puedos modificar si cambias los controles.
Mejor usar el Tidy y en syntaxChecker en el menu tools del Scite para comprobar el código, antes de postarlo, por que saltó algún pequeño error de sintaxis. :smt016
El Programa
Bueno son bastantes cosas las que hay, y antes que nada felicidades por haber llegado a realizar este programa, estás a punto de convertirlo en un gran programa.
La verdad es que en sí esta muy bien, seguro que quedará profesional.
  • Me imagino que no es un registro detallado de sucesos (Log), Sino lo que quieres hacer es almacenar simplemente un resumen de lo que pasa en cada actividad, y que se sobreescriba cada vez que cambia.
    Se puede usar bases de datos. Aunq el resultado es aceptable en la linea de archivos de texto organizados ini.
    Usa esto cuando Aprieten en el boton Grabar:

    Código: Seleccionar todo

    IniWrite("C:\carpeta\"&$nombredeusuario&".ini", "Ping Pong","20061206", "esto son los datos del Ctrl Edit")
  • Por otro lado en las actividades creo que es un error de concepto ya q en el If $act1 <> $act son datos no comparables ya que uno es el botón y el otro el contenido del botón.
    Usando ini te quedaría así para revisar si no se introdujo esa actividad para ese usuario:

    Código: Seleccionar todo

    If IniRead("C:\carpeta\"&$nombredeusuario&".ini", ,$act1,$fecha1,"No hay nada")="No hay nada" Then ; esto esta bien si quieres avisar que ya existe la activida y se van a reemplazar los datos
    En Cambio yo optaría por sobreescribirla directamente con el último cambio, ya que es un resumen, no haria falta comprobar ya que simplemente se borra lo anterior y se graba lo nuevo. :smt010
  • Otra cosa usa nombres un poco más descriptivos para los botones y textos como $txtAct para indicar que es un control de texto
    Por ejemplo en $act1 = GUICtrlRead($act)
    mejor: $sActividades = GUICtrlRead($txtActividades)
    Así puedes añadir nombres más faciles facilite que releas el programa en unos meses:smt018 . :smt008
  • Queda profesional añadir Tips de información a los botones así:
    $btn2 = GUICtrlCreateButton ("Salir", 765,160,35,35,$BS_ICON)
    GUICtrlSetTip(-1,"Salir del programa grabando")
  • Bueno te he dejado un poco a medias porqu son bastantes cosas, creo que con esto tienes para que te funcione. :smt020
  • Postea tu maravilla para ver como te quedó. :smt002
  • Si ves que el analisis no es el que pensabas.
    Pon un caso práctico de para que sirve esto y que objetivos quieres conseguir, ya que no explicaste lo que quieres hacer con el programa.
  • Tampoco dices como quieres recuperar los datos. Aunq el ini es un fichero de texto plano, pero más organizado que el txt.
yeboya
Mensajes: 10
Registrado: 28 Nov 2006, 23:43
Ubicación: BCN- España

Mensaje por yeboya »

BasicOs, gracias por las sugerencias....estoy en ellas...

Con el ini creo que sería suficiente para el archivo de usuario, aunque me interesaría que NO sobreescribiera los datos.
Explico un poco más el objetivo del programa:


No hay problema, con comprobar
1) un archivo de texto donde se registre de forma continu
a y diaria la actividad de un centro (fecha, actividad, usuario y observaciones) Pero la 'fecha' no se debe repetir en cada entrada, basta con una vez mientras no cambie; y lo mismo para 'actividad'.

2) que se cree un archivo con el nombre de usuario donde se refleje de forma continua su seguimiento; la fecha, la actividad y las observaciones. Y de la misma forma, que no grabe la fecha si es la misma.

Para el punto 1) bastaría cualquier editor, pero la idea es aprovechar la entrada de datos para conseguir el punto 2).

Saludos...
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2099
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Mensaje por BasicOs »

BasicOs, gracias por las sugerencias....estoy en ellas...

Con el ini creo que sería suficiente para el archivo de usuario, aunque me interesaría que NO sobreescribiera los datos.
Explico un poco más el objetivo del programa:
Lo puse en este tópico en el post anterior, debe ser que no lo entendiste, comentame el que: :smt001

Código: Seleccionar todo

If IniRead("C:\carpeta\"&$nombredeusuario&".ini", ,$act1,$fecha1,"No hay nada")="No hay nada" Then ; esto esta bien si quieres avisar que ya existe la activida y se van a reemplazar los datos
;lo que pones aqui solo se graba si no hay datos anteriores de actividad y fecha puedes usar la funcion FileLog también
endif
No hay problema, con comprobar
1) un archivo de texto donde se registre de forma continu
a y diaria la actividad de un centro (fecha, actividad, usuario y observaciones) Pero la 'fecha' no se debe repetir en cada entrada, basta con una vez mientras no cambie; y lo mismo para 'actividad'.
Tienes monton :smt005 de opciones con lo de almacenar, te comenté el ini porq es muy básica. Luego tendrías que hacer una función para pasar del ini a un formato separado por comas para abrirlo por ejemplo en excel, o cualquiera.

(el filewrite como que es mas incomodo de manejar, aunq puedes gestionarlo como si revisaras una variable, y grabarlo cada vez)

:smt006 Hay una opción específica para registrar actividades que es:

Código: Seleccionar todo

#include <file>
_FileWriteLog(@ScriptDir & "\mificheroDatos.txt","un montón de datos por aquí, el que quiera")
Lo que pasa que te grabaría todas las veces, con lo que tendrías que eliminar los datos repetidos de la misma fecha a posteriori. Te recomiendo que como es una línea facil, incluyela después de llamada al ini, para q te haga un registro de todas las veces que se usa y graba y lo tienes de backup y seguimiento para ver como están tu programa.
2) que se cree un archivo con el nombre de usuario donde se refleje de forma continua su seguimiento; la fecha, la actividad y las observaciones. Y de la misma forma, que no grabe la fecha si es la misma.
Lo del archivo está respondido arriba con lo de exportar los inis a formato tabla.
Para el punto 1) bastaría cualquier editor, pero la idea es aprovechar la entrada de datos para conseguir el punto 2).

Saludos...
Igual... :smt006
Responder