SetFocus en un oLbx

Post Reply
servicomver
Posts: 159
Joined: Fri Nov 18, 2005 7:34 pm

SetFocus en un oLbx

Post by servicomver »

Hola a todos:
Como puedo saber si un Objeto Olbx tiene o no en un momento dado el foco
es decir:
tengo un ListBox con ciertos articulos cuando el usuario quiere eliminar uno de la lista debe de accionar el boton "borrar" necesito verificar si realmente selecciono un registro del listbox y esto se observa cuando la linea del registro esta "azul" (cuando pierde el foco el listbox se pone la linea gris) , el caso es que cuando oprime el boton de borrado como debo hacer para saber si el listbox esta seleccionado o tiene el foco ???

espero haberme explicado bien, de antemano gracias por su ayuda
salu2
veracruz, mexico
DanielPuente
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina
Contact:

Post by DanielPuente »

servicomver:

La variable para saber si un control tiene el foco es oControl:lFocused pero no te va a servir de mucho preguntar por ejemplo if(oBrw:lFocused) en el action de un boton porque en ese momento el browse ya no tiene el foco, lo tiene el boton.

Por lo general es suficiente con hacer:

Code: Select all


 	oBcli:bKeydown := {|nK| if( nK==VK_INSERT,(Fedit(.t.,vFecha),oBCli:Setfocus(),oBCli:Refresh(),oBCli:Gotop()),;
                        if(nK==VK_DELETE,(E_Detalle(oBcli), oBcli:Refresh()),;
                        if(nK==VK_F12,IF(MSGYESNO("Confirma los datos de la Factura Fiscal ?","Confirme"),if(Imprime_Comprobante(cMovil,cNomMovil,cAtiende,cNomAtiende,OT:cCodCondVta),;
													Limpia(@cAtiende,@cNomAtiende,@cMovil,@cNomMovil,oBcli,oDlg,oNrocomprob),),),))) }


  REDEFINE SBUTTON oEl ID 602 ;
  		         RESOURCE "B_BOR","B_BOR";//, "B_REG2","B_REG2","B_REG2" ;
  		         OF oDlg ;
  		  	   	 BORDER ;
 			 				 PROMPT "&Borrar (Delete)" ;
							 COLORS { |oBtn| If( oBtn:lMouseOver.or.oBtn:lFocused,RGB(215,0,0),CLR_BLACK ) },;
							 RGB(196, 190, 185);
  		         TOOLTIP OEMTOANSI("Borra el registro");
  		         MESSAGE OEMTOANSI("Borrar Registro");
							 ACTION (E_Detalle(oBcli), oBcli:Refresh())

Static Function E_Detalle()

If MsgNoYes(oemtoansi("Elimina el Art¡culo ")+ CRLF +LLOSTKTR->MDES+" ?","Atención")
		aTot[1]-=1
		aTot[2]-=LLOSTKTR->MCAN
		aTot[3]-=LLOSTKTR->MCAN*LLOSTKTR->MPREV
		LLOSTKTR->(DBDELETE())
    LLOSTKTR->(dbgotop())
Endif

return nil

O sea pedir confirmacion porque en el browse siempre estas parado en algun registro de la dbf, por mas que cambie el color de la barra y listo.

Saludos,
Daniel Puente
Mar del Plata, Argentina
danielpuente@speedy.com.ar
puenteda@hotmail.com
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

No matemos pulgas a cañonazos:

oBrwse:BGotFocus := {|| oBoton:Enable()}
oBrwse:BLostFocus :={|| oBoton:Disable()}
Saludos
R.F.
servicomver
Posts: 159
Joined: Fri Nov 18, 2005 7:34 pm

Post by servicomver »

Hola Daniel
probe con la variable if(oLbx:lFocused) pero sucede lo siguiente

tengo una tecla de acceso rapido de esta forma
SetKey( VK_F3, {|| Borra(oLbx,oSay1,oSay2)})

y en un boton le asigno a la ACTION la misma funcion
ACTION Borra(oLbx,oSay1,oSay2)

el caso es q en la funcion inicio asi para probarlo:

Function Borra(oLbx,oSay1,oSay2)
if(oLbx:lFocused)
msgalert("si borra") //esta el foco en olbx es azul la linea
Else
msgalert("no borra") //no tiene el foco el registro esta marcado en gris
Endif

Return Nil


Cuando lo hago presionando F3 lo hace bien, es decir marca .T. o .F. segun el caso,

pero cuando lo hago Pulsando el Boton (es la misma funcion) marca en _ .F.

Como puedo solucionarlo ???

salu2
VEracruz, Mexico
servicomver
Posts: 159
Joined: Fri Nov 18, 2005 7:34 pm

Post by servicomver »

tal vez me este complicando de mas (es lo mas seguro)

que clase debo de usar para meter registros a una base de datos en forma de listbox, como si fueran articulos de una factura
donde se captura cantidad, clave (con ayuda de busqueda) yo uso listbox y 2 gets uno de cantidad y otro de clave
tal vez x ahi esta el problema, ya q x mas que he buscado el listbox no puedo hacer que haga lo q arriba mencione, ojala me haya explicado lo suficiente

gracias x su tiempo
salu2
veracruz, mexico
Post Reply