Page 1 of 1
SetGetColorFocus
Posted: Wed Jul 16, 2014 10:02 am
by fergonm
Buenos días.
Intento cambiar el color de los GET,s al posicionar sobe ellos mediante la función SetGetColorFocus() colocada en el programa principal. Me da el siguiente error de compilación:
Error: Unresolved external '_HB_FUN_SETGETCOLORFOCUS' referenced from
Necesito ayuda.
Re: SetGetColorFocus
Posted: Wed Jul 16, 2014 12:42 pm
by karinha
c:\fwh1306\samples\gunther3.prg
saludos.
Re: SetGetColorFocus
Posted: Wed Jul 16, 2014 3:20 pm
by FranciscoA
Hola Fernando.
Que version usas?
Esta function esta disponible desde Octubre 2007 segun WhatNews.
En mi version 1204 esto trabaja bien, desde Function Main(): SetGetColorFocus( RGB(252,232,191) ) //color fondo de gets cuando tienen el foco
Tambien puedes intentar, en cada ventana, con:
Code: Select all
AEval( oWndChild:aControls,{|o| if(o:ClassName()=="TGET",;
( o:bGotFocus := {|o|o:SetColor( RGB(0,0,0), RGB(252,232,191) )} ,;
o:bLostFocus := {|o|o:SetColor( CLR_BLACK, CLR_WHITE )} ),) } )
Saludos.
Re: SetGetColorFocus
Posted: Wed Jul 16, 2014 3:46 pm
by fergonm
Muchas gracias a los dos por contestar.
Tengo la versión 7.07 de julio de 2007. En la ayuda suministrada aparece la función, por lo que he supuesto que está disponible.
Francisco he intentado lo que me dices y me da el siguiente error
Code: Select all
Application
===========
Path and name: D:\Personal\peritoprueba\perito.Exe (32 bits)
Size: 672,256 bytes
Time from start: 0 hours 0 mins 5 secs
Error occurred at: 16-07-2014, 17:38:09
Error description: Error BASE/2017 Error de argumento: AEVAL
Args:
[ 1] = U
[ 2] = B {|| ... }
Stack Calls
===========
Called from: => AEVAL(0)
Called from: D:\Personal\peritoprueba\PRG\perito32.prg => MAIN(199)
lo sigo intentando
Re: SetGetColorFocus
Posted: Wed Jul 16, 2014 4:50 pm
by FranciscoA
Fernando:
Creo que no expliqué bien. Su uso es en cada dialog o ventana, segun el codigo de ejemplo siguiente:
Code: Select all
Function Recibo()
local oDlg, nRcaja,dFecha
DBSELECTAREA("RCAJAG")
DEFINE DIALOG oDlg RESOURCE "GRABAR" TITLE "Prueba"
REDEFINE GET oRcaja VAR nRcaja ID 101 OF oDlg PICTURE "@!"
REDEFINE GET oFecha VAR dFecha ID 102 OF oDlg
REDEFINE BUTTONBMP ID 309 OF oDlg BITMAP "ACEPTAR" TEXTRIGHT ACTIO MsgInfo("Hola")
REDEFINE BUTTONBMP ID 310 OF oDlg BITMAP "CANCELAR" TEXTRIGHT ACTION ( oDlg:End() )
AEval( oDlg:aControls,{|o| if(o:ClassName()=="TGET",;
( o:bGotFocus := {|o|o:SetColor( RGB(0,0,0), RGB(252,232,191) )} ,;
o:bLostFocus := {|o|o:SetColor( CLR_BLACK, CLR_WHITE )} ),) } )
ACTIVATE DIALOG oDlg CENTERED
RETURN( NIL )
Saludos.
Re: SetGetColorFocus
Posted: Wed Jul 16, 2014 6:13 pm
by acuellar
Amigos
Se puede hacer lo mismo para BTNBMP que cambie de color el texto cuando el mouse está sobre el botón
He hecho esto:
Code: Select all
REDEFINE BTNBMP oBtn 101 OF oDlg RESOURCE "Boton1",Nil,Nil,"Boton2" PROMPT "Aceptar" ACTION MiFuncion()
REDEFINE BTNBMP oBtn 102 OF oDlg RESOURCE "Boton1",Nil,Nil,"Boton2" PROMPT "Cancelar" ACTION oDlg:End()
oBtn:bMMoved:= {|| oBtn:SetColor( CLR_BLUE ) }
Se pone en azúl, pero no se como volverlo a negro cuando pasa al otro.
Gracias por la ayuda
Saludos,
Adhemar
Re: SetGetColorFocus
Posted: Thu Jul 17, 2014 7:39 am
by Antonio Linares
Adhemar,
para conseguir esa funcionalidad tienes que usar:
#define WM_MOUSELEAVE 675
#define TME_LEAVE 2
Desde el Método MouseMove( nRow, nCol, nFlags ) tienes que llamar a:
TrackMouseEvent( ::hWnd, TME_LEAVE )
Desde el método HandleEvent( nMsg, nWParam, nLParam )
if nMsg == WM_MOUSELEAVE
return ::MouseLeave( nHiWord( nLParam ), nLoWord( nLParam ), nWParam )
endif
Y en MouseLeave() se restaura el color que desees.
Busca por WM_MOUSELEAVE en las Classes de FWH y verás como lo usamos
Re: SetGetColorFocus
Posted: Thu Jul 17, 2014 5:01 pm
by acuellar
Gracias Antonio
He modificado el método:
Code: Select all
METHOD MouseLeave( nRow, nCol, nFlags ) CLASS TBtnBmp
::lMOver = .F.
::Refresh()
::SetColor( CLR_BLACK ) //Agregada
return nil
Al compilar me da este error
Code: Select all
Error description: Error BASE/1003 No existe la variable: SUPER
Stack Calls
===========
Called from: D:\Sistemas\RRHH\DATA\PRG\btnbmp.prg => TBTNBMP:SETCOLOR( 0 )
Called from: D:\Sistemas\RRHH\DATA\PRG\btnbmp.prg => TBTNBMP:NEWBAR( 0 )
Called from: D:\Sistemas\RRHH\DATA\PRG\RRHH.PRG => MAIN( 0 )
Gracias por la ayuda
Saludos,
Adhemar
Re: SetGetColorFocus
Posted: Thu Jul 17, 2014 5:25 pm
by hmpaquito
En el fuente cambia
todos los
por
Re: SetGetColorFocus
Posted: Thu Jul 17, 2014 5:47 pm
by acuellar
Gracias amigos
Funcionó perfecto.
Saludos,
Adhemar
Re: SetGetColorFocus
Posted: Fri Jul 18, 2014 10:50 am
by fergonm
Buenos días.
Muchas gracias a todos. Pruebo y ya les contaré.
Un saludo
Re: SetGetColorFocus
Posted: Fri Jul 18, 2014 11:03 am
by fergonm
Fernando:
Creo que no expliqué bien. Su uso es en cada dialog o ventana, segun el codigo de ejemplo siguiente:
Francisco.
Te entendí mal, disculpas. Funciona correctamente.
Un saludo. Fernando
Re: SetGetColorFocus
Posted: Sat Jul 19, 2014 2:39 am
by joseluisysturiz
fergonm wrote:Buenos días.
Intento cambiar el color de los GET,s al posicionar sobe ellos mediante la función SetGetColorFocus() colocada en el programa principal. Me da el siguiente error de compilación:
Error: Unresolved external '_HB_FUN_SETGETCOLORFOCUS' referenced from
Necesito ayuda.
Probastes usando al princio de los prg esto.? saludos...
TGet():lDisColors := .f.