Un ejemplo de como hacer nuestros cuadros de textos con indicios.

* TextBoxes con Hints o "Indicios"
WITH CREATEOBJECT("xForm")
.SHOW(1)
ENDWITH
RETURN
DEFINE CLASS xForm AS FORM
HEIGHT = 170
WIDTH = 250
ADD OBJECT txt1 AS HintTextBox WITH LEFT = 10, TOP = 10 , HintText = "Nombre de usuario", VALUE = "Usuario"
ADD OBJECT txt2 AS HintTextBox WITH LEFT = 10, TOP = 40 , HintText = "Contraseña anterior"
ADD OBJECT txt3 AS HintTextBox WITH LEFT = 10, TOP = 70 , HintText = "Nueva contraseña"
ADD OBJECT txt4 AS HintTextBox WITH LEFT = 10, TOP = 100, HintText = "Confirmar la contraseña"
ADD OBJECT cmdExit AS COMMANDBUTTON WITH LEFT = 70, TOP = 130, HEIGHT = 30, CANCEL = .T., CAPTION = "Salir"
PROCEDURE cmdExit.CLICK
THISFORM.HIDE()
ENDPROC
ENDDEFINE
DEFINE CLASS HintTextBox AS TEXTBOX
LabelName = ""
HintText = ""
KeyPressed = .F.
WIDTH = 200
SELECTONENTRY = .T.
PROCEDURE INIT
LOCAL sName
WITH THISFORM
sName = SYS(2015)
.ADDOBJECT(sName, "HintLabel", THIS.HintText)
THIS.LabelName = sName
WITH .&sName
.TextBoxName = THIS.NAME
.BACKCOLOR = THIS.BACKCOLOR
.MOVE(THIS.LEFT + THIS.MARGIN + 1, THIS.TOP + THIS.MARGIN + 1)
.WIDTH = THIS.WIDTH - THIS.MARGIN * 2
ENDWITH
ENDWITH
ENDPROC
PROCEDURE REFRESH
WITH THIS
.UpdateHint()
ENDWITH
ENDPROC
PROCEDURE GOTFOCUS
WITH THIS
.UpdateHint()
ENDWITH
ENDPROC
PROCEDURE LOSTFOCUS
WITH THIS
.KeyPressed = .F.
.UpdateHint()
ENDWITH
ENDPROC
PROCEDURE UpdateHint
WITH EVALUATE([ThisForm.] + THIS.LabelName)
.VISIBLE = EMPTY(THIS.VALUE) AND ! THIS.KeyPressed
ENDWITH
RETURN
PROCEDURE INTERACTIVECHANGE
WITH THIS
.KeyPressed = .T.
.UpdateHint()
ENDWITH
ENDPROC
ENDDEFINE
DEFINE CLASS HintLabel AS LABEL
FORECOLOR = RGB(100, 100, 100)
BACKSTYLE = 1
TextBoxName = ""
PROCEDURE INIT (sCaption)
IF PCOUNT() > 0
THIS.CAPTION = sCaption
ENDIF
ENDPROC
* Hago al label "transparente" a los clicks
PROCEDURE CLICK
WITH EVALUATE([ThisForm.] + THIS.TextBoxName)
.KeyPressed = .T.
.UpdateHint()
.SETFOCUS()
ENDWITH
ENDPROC
ENDDEFINE
*---
Mario López
Excelente aporte. Lo he incluido en mis proyectos y ha quedado muy resultón
ResponderBorrarLo he incorporado en mi proyecto y ha quedado muy aparente. Le da otro aire a los formularios
ResponderBorrarSi lo bueno es simple, doblemente bueno.
ResponderBorrar