Página 1 de 1

_GUICtrlRichEdit.... no funciona bien

Publicado: 26 Ene 2011, 20:42
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

Re: _GUICtrlRichEdit.... no funciona bien

Publicado: 28 Ene 2011, 00:17
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.

Re: _GUICtrlRichEdit.... no funciona bien

Publicado: 28 Ene 2011, 05:17
por ms999
muchas gracias, lo voy a probar y te digo como me fue