_GUICtrlRichEdit.... no funciona bien

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
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

_GUICtrlRichEdit.... no funciona bien

Mensaje por ms999 »

Hola a todos, soy nuevo en esto y como 3er proyecto estoy haciendo una calculadora, con botones. Recien hice la GUI nomas y mi primer problema es que no puedo ponerle el style $ES_NUMBER a la input, dejo el codigo para que vean. Aclaro que use el richedit porque me parecia lo mas adecuado para este caso, porque tiene metodos sencillos de agregar caracteres segun donde este el cursor. Mi segundo pregunta es, ¿como hago para que el foco solamente este en el input y no pase a los botones o al form?
El resto del proyecto lo ire resolviendo, creo que hare las siguientes variables, una que tome lo que esta escrito en el input y lo guarde cuando se haga presione una tecla de operacion y otra que tome el siguiente conjunto de numeros, y bueno, la funcion = que haga la operación; quiza necesite otra variable mas, pero creo que voy en buen rumbo

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiRichEdit.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Calculadora X monoscout999", 367, 327, 192, 118)
$Button1 = GUICtrlCreateButton("1", 8, 256, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("2", 80, 256, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("3", 152, 256, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button4 = GUICtrlCreateButton("0", 224, 256, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button5 = GUICtrlCreateButton("5", 80, 184, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button6 = GUICtrlCreateButton("6", 152, 184, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button7 = GUICtrlCreateButton("+", 224, 184, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button8 = GUICtrlCreateButton("8", 80, 112, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button9 = GUICtrlCreateButton("9", 152, 112, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button10 = GUICtrlCreateButton("*", 224, 112, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button11 = GUICtrlCreateButton("=", 296, 256, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button12 = GUICtrlCreateButton("-", 296, 184, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button13 = GUICtrlCreateButton("/", 296, 112, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button14 = GUICtrlCreateButton("4", 8, 184, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Button15 = GUICtrlCreateButton("7", 8, 112, 65, 65, $WS_GROUP)
GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
$Input1 = _GUICtrlRichEdit_Create($form1,"0", 8, 32, 353, 40, BitOR($ES_RIGHT,$ES_NUMBER))
GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

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

Re: _GUICtrlRichEdit.... no funciona bien

Mensaje por Chefito »

Bienvenido al foro.
ms999 escribió:mi primer problema es que no puedo ponerle el style $ES_NUMBER a la input, dejo el codigo para que vean. Aclaro que use el richedit porque me parecia lo mas adecuado para este caso, porque tiene metodos sencillos de agregar caracteres segun donde este el cursor
Pues he probado la propiedad en win7 64 bits y no funciona. Supongo que funcione en el xp.
Puede que hayan cambiado los valores de algunos estilos. Sería cuestión de intentar buscar.

Otra forma con la que puedes hacerlo es con la udf GuiEdit.au3. Busca en la ayuda las funciones que empiezan por _GUICtrlEdit_ .

También puedes intentar anular todas las teclas menos las númericas con hook. Es un poco dificil de entender y de hacer pero puedes intentarlo. Aquí te dejo el resultado de una búsqueda en el foro con las palabras "anular teclas": http://www.emesn.com/autoitforum/search ... ular+tecla
Podrías hacer que revisase la pulsación de las teclas cuando el richedit tuviese el foco, y ponerle una condición de anulación de teclas con una condición (if...then...) para saber si la tecla pulsada es un número o no (y punto si quieres decimales, signos, lo que sea. Para estas cosas incluso tendrías que poner más condiciones). Mira la función isnumber.

También puedes intentarlo con algún control gratuito.
También puedes buscar algún control o alguna udf en el foro de habla inglesa.
ms999 escribió:Mi segundo pregunta es, ¿como hago para que el foco solamente este en el input y no pase a los botones o al form?
Te refieres a que siempre que le des a otro control o a la ventana devuelva inmediatamente el foco al richedit???

Lo más facil sería meter en el evento click de todos los controles (el resultado de GUIGetMsg) un código que devolviese el foco al richedit. Mira la función controlfocus.

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 ;).
Avatar de Usuario
ms999
Hacker del Foro
Mensajes: 116
Registrado: 26 Ene 2011, 06:13

Re: _GUICtrlRichEdit.... no funciona bien

Mensaje por ms999 »

muchas gracias, lo voy a probar y te digo como me fue
Responder