SetFocus en un oLbx

SetFocus en un oLbx

Postby servicomver » Wed Feb 15, 2006 11:45 pm

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
servicomver
 
Posts: 190
Joined: Fri Nov 18, 2005 7:34 pm

Postby DanielPuente » Thu Feb 16, 2006 7:08 am

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  Expand view

   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
DanielPuente
 
Posts: 108
Joined: Sun Oct 09, 2005 6:12 pm
Location: Mar del Plata - Argentina

Postby R.F. » Thu Feb 16, 2006 5:44 pm

No matemos pulgas a cañonazos:

oBrwse:BGotFocus := {|| oBoton:Enable()}
oBrwse:BLostFocus :={|| oBoton:Disable()}
Saludos
R.F.
R.F.
 
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Postby servicomver » Thu Feb 16, 2006 11:42 pm

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 ambos casos .F.

Como puedo solucionarlo ???

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

Postby servicomver » Fri Feb 17, 2006 2:11 am

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
servicomver
 
Posts: 190
Joined: Fri Nov 18, 2005 7:34 pm


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 15 guests