Con el siguiente código en el MAIN, se define el color de los GET al tomar el foco y al perderlo
Code: Select all | Expand
TGet():lClrFocus := (.T.)
TGet():nClrFocus := nRGB( 213, 219, 255 )
Saludos
Code: Select all | Expand
TGet():lClrFocus := (.T.)
TGet():nClrFocus := nRGB( 213, 219, 255 )
Code: Select all | Expand
// C:\FWH..\SAMPLES\CORGET2.PRG
// http://forums.fivetechsupport.com/viewtopic.php?f=3&t=42551&sid=3bfb222ce4809ed3dd5509ea234429ea
#include "fivewin.ch"
#Define CLR_SOFTYELLOW nRGB( 255, 251, 225 ) //-> Amerelo Soft.
FUNCTION Main()
LOCAL aColors := { CLR_WHITE, CLR_YELLOW, CLR_HGREEN }
LOCAL oDlg, oFont, oGet, oMemo, n, oBtnCal, oBtnCan
LOCAL nColor := 1
LOCAL CText := "This is some" + CRLF + "text"
SetGetColorFocus()
tGet():lDisColors := .F.
tGet():nClrTextDis := CLR_HBLUE
tGet():nClrPaneDis := CLR_WHITE
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -18 BOLD
DEFINE DIALOG oDlg SIZE 300,350 PIXEL TRUEPIXEL FONT oFont ;
COLORS CLR_BLACK, CLR_WHITE TRANSPARENT
oDlg:lHelpIcon := .F.
/*
@ 20,20 SAY "Color Code : " GET nColor SIZE 200,24 PIXEL PICTURE "9" ;
OF oDlg VALID ( ;
n := aColors[ ( ( nColor - 1 ) % 3 ) + 1 ], ;
oMemo:SetColor( CLR_BLACK, n ), ;
.t. )
*/
@ 20, 20 SAY "Cambiar Color: " SIZE 200,24 PIXEL OF oDlg UPDATE TRANSPARENT
@ 60, 20 GET oMemo VAR cText MEMO SIZE 260,220 PIXEL OF oDlg /* ;
COLORS CLR_BLACK, aColors[ nColor ] */
@ 300, 100 BTNBMP oBtnCal FILENAME "..\bitmaps\16x16\floppy.bmp" ;
FLAT SIZE 20, 14 PIXEL OF oDlg NOBORDER ;
ACTION SET_COLOR( oMemo, nColor )
@ 300, 150 BTNBMP oBtnCan FILENAME "..\bitmaps\16x16\Exit.bmp" ;
FLAT SIZE 20, 14 PIXEL OF oDlg NOBORDER ;
ACTION( oDlg:End() )
oBtnCan:lCancel := .T.
ACTIVATE DIALOG oDlg CENTERED ON INIT oMemo:SetFocus()
oFont:End()
RETURN NIL
FUNCTION SET_COLOR( oMemo, nColor )
LOCAL oIni, oBrush, oBmp
LOCAL nTipo, cStyle, cFile, cLogo, nRow, nCol, lSelect
nColor := ChooseColor()
oMemo:SetColor( nColor, CLR_WHITE )
oMemo:Refresh()
RETURN( nColor )
// FIN / END
Code: Select all | Expand
// C:\FWH..\SAMPLES\CORMEMO.PRG
***************************************************
* Multi SAY/GET testing in 32 bit Xbase++ mode....*
* Jon Berg 10-8-99 *
***************************************************
#include "FiveWin.ch"
*********************
#Define CLR_ORANGE nRGB( 255, 165, 000 ) //-> Orange - Laranja
static oWnd, lCambiaColor := .T.
//----------------------------------------------------------------------------//
function Main()
DEFINE WINDOW oWnd FROM 1, 1 TO 30, 70 ;
TITLE "Testing Says/Gets and Get Pictures and Foreground/Background Colors" ;
MENU BuildMenu()
SET MESSAGE OF oWnd TO "FiveWin++"
ACTIVATE WINDOW oWnd MAXIMIZED
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Say/Get Testing"
MENU
MENUITEM "&Build Multi GET Dialog1 with PICTs " ACTION (BldDlg1())
MENUITEM "Item &2" ACTION MsgInfo("Test Menu Item2")
MENUITEM "Item &3" ACTION MsgInfo("Test Menu Item3")
SEPARATOR
MENUITEM "Exit" ACTION oWnd:End()
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function BldDlg1()
local oDlg, oArial, oFont, oMemo, oGroup
local cName1 := "ONE "
local cName2 := "two "
local cName3 := "3 "
local cName4 := "4 "
local cName5 := "5 "
local cName6 := "54321 "
local cName7 := "567890 "
local lRESERVE := .F.
local cPROV_TYPE:= SPACE(20)
local cPHONE := SPACE(18)
local dCERT_DATE:= CTOD(' / / ')
local nPROC_DAYS:= 9876
local cTEXT := "Use Tab or Shift Tab to move to next get."+SPACE(256)
LOCAL aGet := ARRAY(5)
SET EPOCH TO 1920
SET CENTURY ON
DEFINE DIALOG oDlg FROM 1, 1 TO 600, 800 ;
TITLE "Hello Gets!" ;
STYLE nOr(WS_POPUP, ;
WS_VISIBLE, ;
WS_CAPTION, ;
WS_THICKFRAME, ;
WS_SYSMENU, ;
WS_MINIMIZEBOX, ;
WS_MAXIMIZEBOX) ;
PIXEL OF oWnd && Defined by Pixels
DEFINE FONT oFont NAME "FIXEDSYS" SIZE 10, -10 && Use a Nonproportional font
SET FONT OF oDlg TO oFont && so characters line up in Says
@ 00, 03 SAY "Showing how to do SAY/GETs from source code. No DLLs or RC files. " OF oDlg COLORS CLR_BLACK,CLR_YELLOW BORDER SIZE 300,10
@ 01, 03 SAY "Navigation Keys to traverse gets are Ret, Arrows, Tab and Shift Tab....ESC to close this Dialog" OF oDlg COLORS CLR_WHITE,CLR_BLUE BORDER SIZE 380,10
@ 02, 03 SAY "Testing Say with different colors and a border. " OF oDlg COLORS CLR_HRED ,CLR_WHITE BORDER SIZE 200,10
//@ 03, 03 SAY "Testing Say with different colors and no border." OF oDlg COLORS CLR_HBLUE ,CLR_WHITE SIZE 200,10
// COLOR IN GROUP BOX.
@ 3.95, 2.96 SAY "" OF oDlg COLORS CLR_BLACK, CLR_YELLOW BORDER ;
SIZE 192, 45 UPDATE
@ 04, 2.50 GROUP oGroup TO 7.50, 30 LABEL "GROUP BOX COLOR" OF oDlg ;
TRANSPARENT COLOR CLR_ORANGE, CLR_WHITE
// @ 163, 2 GROUP oGroup TO 192, 200 LABEL "RECOMENDACIONES" OF oDlg pixel TRANSPARENT
@ 05, 19 SAY "Field length" OF oDlg SIZE 65,10 && Use normal colors
@ 06, 19 SAY " | " OF oDlg SIZE 65,10
@ 07, 03 SAY "1 Chr No PICT 13" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 08, 03 SAY "2 Chr No PICT 11" OF oDlg COLORS CLR_BLUE ,CLR_HCYAN BORDER SIZE 195,10
@ 09, 03 SAY "3 Chr No PICT 9" OF oDlg COLORS CLR_RED ,CLR_HCYAN BORDER SIZE 195,10
@ 10, 03 SAY "4 Chr PICT 'NNNNNNNN' 8" OF oDlg COLORS CLR_HRED ,CLR_HCYAN BORDER SIZE 195,10
@ 11, 03 SAY "5 Chr PICT 'AAAAAAAAA' 9" OF oDlg COLORS CLR_HGREEN,CLR_HCYAN BORDER SIZE 195,10
@ 12, 03 SAY "6 Chr PICT '9999999999' 13" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 13, 03 SAY "7 Chr PICT '@K@!@S10' 24" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 14, 03 SAY " Logic 'T/F or Y/N' 1" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 15, 03 SAY " Chr PICT '@S5'and !EMPTY() 20" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 16, 03 SAY " Chr PICT '(999)A99-9!99-9999' 18" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 17, 03 SAY " Date !> comp date or empty 8" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 16.8, 35 SAY "Set Century is on." OF oDlg SIZE 195,10
@ 17.3, 35 SAY "Set Epoch is set to 1919." OF oDlg SIZE 195,10
@ 18, 03 SAY " Num PICT '99' !>10 10" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 19, 03 SAY " Memo No PICT 256" OF oDlg COLORS CLR_BLACK ,CLR_HCYAN BORDER SIZE 195,10
@ 07, 28 GET cName1 OF oDlg COLORS "B/BG" SIZE 20,10
@ 08, 28 GET cName2 OF oDlg COLORS CLR_BLACK,CLR_HCYAN
@ 09, 28 GET cName3 OF oDlg COLORS CLR_BLACK,CLR_YELLOW
@ 10, 28 GET cName4 OF oDlg PICTURE "NNNNNNNN"
@ 11, 28 GET cName5 OF oDlg PICTURE "AAAAAAAAA"
@ 12, 28 GET cName6 OF oDlg PICTURE "9999999999"
@ 13, 28 GET cName7 OF oDlg PICTURE "@K@!@S10"
@ 14, 28 GET lRESERVE OF oDlg PICTURE "Y" MESSAGE "Please type in a Y or N "
@ 15, 28 GET cPROV_TYPE OF oDlg PICTURE "@S5" VALID IF(EMPTY(cPROV_TYPE),(MSGINFO("You have to enter at least 1 Character"),.F.),.T.)
@ 16, 28 GET cPHONE OF oDlg PICTURE "(999)A99-9!99-9999"
@ 17, 28 GET dCERT_DATE OF oDlg SIZE 50,10 VALID (IF(dCERT_DATE>DATE(),(MSGINFO("Certification Date must not be greater than Computer Date or blank!"),.F.),.T.)) MESSAGE "Please type in the Certification Date"
@ 18, 28 GET nPROC_DAYS OF oDlg PICTURE "99" VALID (IF(nPROC_DAYS>10,(MSGINFO("Processing Days Must be less that 11 or Empty"),.F.),.T.)) MESSAGE "Please type in the Number of days it took to process"
//@ 19, 28 GET cText MEMO OF oDlg SIZE 140,46
@ 19, 28 GET aGet[1] VAR cText MEMO OF oDlg SIZE 140,46 ;
ON CHANGE( SET_COLOR( aGet ) )
aGet[1]:bGotFocus := {|| aGet[1]:SetColor(RGB(0,0,0),RGB(197,205,255)),aGet[1]:Refresh()}
aGet[1]:bLostFocus := {|| aGet[1]:SetColor(RGB(0,0,0),RGB(255,255,255)),aGet[1]:Refresh()}
ACTIVATE DIALOG oDlg CENTERED ;
ON LEFT CLICK nMsgBox( "Incredible!" )
lCambiaColor := .T.
return nil
FUNCTION SET_COLOR( aGet ) // mas o menos esto, cambia a tu gosto.
LOCAL nCor
IF lCambiaColor // cambia color solo una viez
aGet[1]:SetColor( aGet[1]:nClrText, nCor := ChooseColor( aGet[1]:nClrPane ) )
aGet[1]:Refresh()
aGet[1]:SetFocus()
ENDIF
lCambiaColor := .F.
RETURN NIL
Code: Select all | Expand
TMultiGet():bColorBlock := { |oGet| If( oGet:lFocused, { CLR_WHITE, CLR_GREEN },;
If( ! oGet:lActive, { CLR_RED, CLR_YELLOW }, { CLR_BLACK, CLR_WHITE } ) ) }