Problemas con Setfocus()

Problemas con Setfocus()

Postby A&C » Wed Aug 23, 2006 7:43 pm

Hola Foro

Nuevamente yo molestanto

tengo dos problemitas son el Setfocus() y el valor de una Variable Local no me funcionan bien

tengo un dialogo,, con algunos get,, en uno de ello pongo un VALID y bifurco a un Function XXXX,, en donde valido el ingreso, y al volver con Return .t. analizo el retorno de informacion y si corresponde o no ,, necesito que un Get en especial tenga el foco de entrada,, le pongo oTget:Setfocus() y nada ,, el foco siempre de queda en un objeto COMBOX que tengo dentro del dialogo,, alguna sugerencia ?????

y el otro usanto dentro de una Function la misma donde valido la informacion asigna una variable LOCAL ccc:=.F. ,, dentro de ese function para esa variable a otro function y manejo su valor asi.. ccc=.T.,, y luego retorno,, pero la variable siempre asume el primer valor,,

la mire con Msginfo,,, al momento de poner ccc=.T. me entrega ese valor pero cuando retorna cambia a .F.,, que sera ?????
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby Antonio Linares » Wed Aug 23, 2006 9:01 pm

Para que desde un control saltes al que quieras en una validación, haz:

oControl:oJump = <oControl_a_donde_ir>

por ejemplo:

oGet2:oJump = oGet1
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Wed Aug 23, 2006 9:02 pm

Estás pasando la variable lógica por referencia @ ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Thu Aug 24, 2006 7:41 am

Oscar,

El método (ó función) SetFocus() no siempre te permite cambiar el foco en los procesos de validación, por eso se usa la DATA oJump en algunos casos.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby A&C » Thu Aug 24, 2006 7:41 pm

Antonio molestanto de nuevo,, no me funciona oControl:oJump....

pq sera.. mira el codigo fuente...

REDEFINE GET TgGet[19] VAR Det [01] ID 218 OF oDlg COLOR nRGB(0,0,128), nRGB(255,255,255) PICTURE "@!" VALID BusProd(TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto)


Function BusProd (TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto)
Do Case
Case vCbx2="TF"
//Scopes de Productos
oProducto:Setorder(1)
oProducto:Gotop()
oProducto:Seek(Det[01])
If oProducto:found()
Det[1]=oProducto:codprod
Det[2]=oProducto:descri
Else
Det[01]:=space(27)
Det[02]:=space(40)
VNominaP(oProducto,Det,TgGet,oPreprod)
Endif
//
If !empty(Det[1])
//Buscar Precio
oPreprod:Setorder(2)
oPreprod:Gotop()
oPreprod:Seek(PADR((Alltrim(Det[1])+Alltrim(PPD[1])),29))

If oPreprod:Found()
Det[4]=oPreprod:total
Det[8]=oPreprod:desc
Det[9]=oPreprod:total
Else
//Buscar Precio por Defecto
oPreprod:Setorder(2)
oPreprod:Gotop()
oPreprod:Seek(PADR((Alltrim(Det[1])+Alltrim(Defecto)),29))
If oPreprod:Found()
MsgInfo("No existe Precio de Referencia para Producto"+CHR(13)+"Se utilizaran el precio de Defecto del sistema")
Det[4]=oPreprod:total
Det[8]=oPreprod:desc
Det[9]=oPreprod:total
Else
MsgInfo("No existe Precio de Referencia para Producto")
Det[01]:=space(27)
Det[02]:=space(40)
Det[03]=0
Det[04]=0
Det[05]=0
Det[06]=0
Det[07]=0
Det[08]=0
Det[09]=0
Endif
Endif
Else
Det[01]:=space(27)
Det[02]:=space(40)
Det[03]=0
Det[04]=0
Det[05]=0
Det[06]=0
Det[07]=0
Det[08]=0
Det[09]=0
Endif
//
For x=19 to 24
TgGet[x]:Refresh()
Next x
TgGet[19]:oJump=TgGet[21]
Otherwise

Endcase
Return .T.

Function VNominaP(oProducto,Det,TgGet,oPreprod)
Local oDlg
Local oFont
Local oSay
Local oCbx
Local vCombox
Local oGet
Local vGet
Local oBtn1,oBtn2
Local oTbr
Local oBp
Local oBmp
//
oProducto:Setorder(4)
oProducto:Gotop()
//
DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,-12

DEFINE DIALOG oDlg RESOURCE 22 FONT oFont

REDEFINE BITMAP oBmp ID 600 OF oDlg FILENAME "bmp\cemento.bmp" TRANSPAREN
REDEFINE BITMAP oBmp ID 601 OF oDlg FILENAME "bmp\osb.bmp" TRANSPAREN
REDEFINE BITMAP oBmp ID 602 OF oDlg FILENAME "bmp\pizarre.bmp" TRANSPAREN

REDEFINE SAY oSay ID 100 OF oDlg COLOR nRGB(0,0,128)
REDEFINE COMBOBOX oCbx VAR vCombox ITEMS {oemtoansi("Por C¢digo"),"Por Grupo",oemtoansi("Por Descripci¢n")} ID 300 OF oDlg ON CHANGE VCboP(oProducto,vCombox,oTbr)
REDEFINE GET oGet VAR vGet ID 200 OF oDlg COLOR nRGB(0,0,128),nRGB(255,255,255) PICTURE "@!"
REDEFINE BTNBMP oBtn ID 50 OF oDlg FILENAME "bmp\Buscar.bmp" ACTION SSBBrowse(oProducto,oTbr,vGet),Refresco(oTbr,oProducto),vGet:=Space(40),oGet:Refresh()

REDEFINE BROWSE oBp ID 501 OF oDlg FONT oFont

ADD COLUMN TO BROWSE oBp DATA oPreprod:Descri;
HEADER "Tipo"+CHR(13)+"Cliente";
SIZE 100;
PICTURE "@";
ALIGN DT_LEFT,DT_CENTER;
3DLOOK TRUE

ADD COLUMN TO BROWSE oBp DATA oPreprod:Sigla;
HEADER "T"+CHR(13)+"C";
SIZE 20;
PICTURE "@";
ALIGN DT_LEFT,DT_CENTER;
3DLOOK TRUE

ADD COLUMN TO BROWSE oBp DATA oPreprod:Neto;
HEADER "Precio"+CHR(13)+"Neto";
SIZE 70;
PICTURE "9,999,999";
ALIGN DT_RIGHT,DT_CENTER;
3DLOOK TRUE

ADD COLUMN TO BROWSE oBp DATA oPreprod:iva;
HEADER "IVA";
SIZE 70;
PICTURE "9,999,999";
ALIGN DT_RIGHT,DT_CENTER;
3DLOOK TRUE

ADD COLUMN TO BROWSE oBp DATA oPreprod:Total;
HEADER "TOTAL";
SIZE 70;
PICTURE "9,999,999";
ALIGN DT_RIGHT,DT_CENTER;
3DLOOK TRUE

oBp:Setcolor({2,15},{;
nRGB(220,255,220),; //Fondo Linea
nRGB(255,200,255) ; //Lineas del Grid
})

oBp:SetOdbf(oPreprod)
oBp:lNoHScroll := .T. //Conecta la barra scroll horizontal
oBp:nFreeze:=1



REDEFINE BROWSE oTbr ID 500 OF oDlg FONT oFont;
ON CHANGE (MMDatos(oProducto,oFont,oTbr,oBp,oPreprod))


ADD COLUMN TO BROWSE oTbr DATA oProducto:Codprod;
HEADER oemtoansi("C¢digo");
SIZE 150;
PICTURE "@!";
ALIGN DT_LEFT;
3DLOOK TRUE

ADD COLUMN TO BROWSE oTbr DATA oProducto:codi_fami;
HEADER "Grupos"+CHR(13)+"T/F";
SIZE 50 ;
PICTURE "999";
ALIGN DT_LEFT;
3DLOOK TRUE

ADD COLUMN TO BROWSE oTbr DATA oProducto:Descri;
HEADER oemtoansi("Descripci¢n");
SIZE 300 ;
PICTURE "@!";
ALIGN DT_LEFT;
3DLOOK TRUE

ADD COLUMN TO BROWSE oTbr DATA oProducto:Stock;
HEADER "Stock Producto";
SIZE 100 ;
COLOR nRGB(0,0,255);
PICTURE "9,999,999.99";
ALIGN DT_RIGHT;
3DLOOK TRUE

oTbr:Setcolor({2,15},{;
nRGB(255,255,220),; //Fondo Linea
nRGB(255,200,255) ; //Lineas del Grid
})
oTbr:Setcolor({1},{;
{|| If(oProducto:Stock>=0,nRGB(0,0,255),nRGB(255,0,0))} ; //Texto Linea
},4)
oTbr:SetOdbf(oProducto)
oTbr:nFreeze :=1
oTbr:lNoHScroll := .F. //Conecta la barra scroll horizontal
oTbr:bkeydown := { |nKey|VKP(oProducto,oTbr,nKey,Det,TgGet,oDlg)}
oTbr:bLDblClicked := { || VKDbP(oProducto,oTbr,Det,TgGet,oDlg)}

REDEFINE SBUTTON oBtn1 ID 400 OF oDlg ACTION VKDbP(oProducto,oTbr,Det,TgGet,oDlg)
REDEFINE SBUTTON oBtn2 ID 401 OF oDlg ACTION oDlg:End()
oCbx:LostFocus()
vCombox:=oemtoansi("Por Descripci¢n")

ACTIVATE DIALOG oDlg ON PAINT oTbr:Setfocus()
Return



EL PROBLEMA LO TENGO CUANDO INGRESO UN CODIGO DE PRODUCTO ATRAVEZ DE TGGET[19] VAR DET[1],, Y EL PRODUCTO NO SE ENCUENTRA,, AHI ES DONDE SE ABRE LA FUNCTION VNOMINAP,, PARA SELECCIONAR UNO DE LA LISTA,,, AL SELECCIONAR CUALQUIERA O APRETAR EL ESC... CUANDO SE SALE DE LA FUNCTION VNOMINAP,,, EL FOCO NO QUE EN EL TGGET[19], SE VA A OTRO OBJETO


PORFA ILUMINAME,,,

GRACIAS

ahhh.. y referente a como pasa las variables las paso igual que en este codigo fuente las defino entre parentesis con en busprod... o esta mal hacerlo asi...,, del la duda que tenia sabes que si uso matrices me se actualiza su valor pero si son variables locales no,, QUE RARO

Function BusProd (TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto)
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby Antonio Linares » Thu Aug 24, 2006 10:34 pm

> EL FOCO NO QUE EN EL TGGET[19], SE VA A OTRO OBJETO

A que otro objeto se va el foco ? Puedes poner una imagen de la caja de diálogo ? (usa www.imageshack.us para alojar la imagen y pon aqui el url).

>
VALID BusProd(TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto)
>

Las variables que ahí sean lógicas, ponles un @ delante, en caso de que las vayas a cambiar desde la función BusProd().
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby A&C » Sat Aug 26, 2006 3:41 am

http://img245.imageshack.us/my.php?image=dialogojq9.png


AHI ESTA LA IMAGEN DE LA CAJA DE DIALOGO

EN PROBLEMA ESTE QUE CUANDO EL PRODUCTO NOSE ENCUENTA Y EL SISTEMA ABRE UNA NUEVA CAJA DE DIALOGO CON UN LISTADO DE PRODUCTOS,, AL PRECIONAR ESC O SALIR DE ESE DIALOGO DE CUANQUIER MODO,, INCLUSO SELECCIONANDO ALGUNO DE ELLOS,, EL FOCO LO RECIBE UN COMBOX ,, ESE DND DICE Arturo Millan,, QUE SERA,,,

PORFA ILUMINAME,,,

GRACIAS

SALUDOS DESDE CHILE
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby Antonio Linares » Sat Aug 26, 2006 6:17 am

Tu estás en el GET Código cuando llamas a la caja de diálogo para seleccionar un producto ?

Prueba con:

REDEFINE GET TgGet[19] VAR Det [01] ID 218 OF oDlg COLOR nRGB(0,0,128), nRGB(255,255,255) PICTURE "@!" VALID ( BusProd(TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto), TgGet[21]:SetFocus(), .T. )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby A&C » Sat Aug 26, 2006 12:16 pm

Efeticamente ANTONIO,, yo estoy en el get codigo cuando se llama la function que abre el otro dialogo del listado,, cuando me salgo de ese dialogo es donde se pierde el foco,, lo mas raro que si digito el codigo del producto sin abrir el dialogo de listado de codigo,, el foco no se pierde...


QUE SERA.. !!!!!

GRACIAS
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby A&C » Sat Aug 26, 2006 12:21 pm

Antonio se me olvidaba probe tu cambio y no funciona.. siempre se enfoca en ese combo,,,,
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Postby Antonio Linares » Sat Aug 26, 2006 4:00 pm

Pruébalo así:

REDEFINE GET TgGet[19] VAR Det [01] ID 218 OF oDlg COLOR nRGB(0,0,128), nRGB(255,255,255) PICTURE "@!" VALID ( BusProd(TgGet,Det,oProducto,oProduct1,oPreprod,oPrepro1,vCbx2,PPD,TPD,Defecto), TgGet[19]:oJump := TgGet[21], .T. )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby A&C » Sun Aug 27, 2006 4:32 pm

Estimado ANTONIO

ya resolvi en problema...

y sabes q era jajajaja

el dialogo principal el que contiene a Tgget[19],,, en el ACTIVATE DIALOG

le puse un ON PAINT con el combo donde se enfocaba siempre,,, lo saque y el setfocus() funciona a la perfección

NO EXISTEN MISTERIOS DE LA CIBERCIENCIA,, NO CREES... TODO DEBE TENER UNA EXPLICACION LOGICA..

GRACIAS por tu ayuda...
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 10 guests