Ola pessoal,
estou com um problema na xbrowse que é o seguinte, faço com ordscope, até aí blz, me mostra o que preciso, mas quando clico em cima de um registro, normalmente no final da xbrowse, ele reposiciona o browse e me mostra outro registro.
Um tempo atras o Gilmer me ajudou com outro problema de lentidão, era a ::keycount() dentro da classe, mas agora esta com esse problema, segue abaixo o codigo pra vcs me ajudarem, obrigado.
FUNCTION Calendar(vcodser)
LOCAL Tmes:={"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}
LOCAL omes:=vmes:=Mes(DATE()),ArqAber:=.T.
LOCAL oano:=vano:=YEAR(DATE()),oBtnCal[5],oLogoC
PRIVATE oBmp:={LoadBitmap(GetResources(),"Level1"),LoadBitmap(GetResources(),"Level2"),LoadBitmap(GetResources(),"Level3"),LoadBitmap(GetResources(),"Level6")}
PRIVATE aBmp:={"Level1","Level2","Level3","Level6"}
PRIVATE oComp:=vComp:=SPACE(01),oBrwAge,nqtdage:=nqtdpre:=nqtdfal:=nqtdfaj:=0
PRIVATE oData:=dData:=DATE(),ofnt1,ofnt2,ofnt3,ofnt4,nCorLetra
PRIVATE oSayAge:=vSayAge:="Agendado para o dia: ",oCal, vInv:=1
PUBLIC aButton[42],nSelect,vctn:=1,nBranco:=0,oDlg
PUBLIC vctd:=1,vDiaPrompt:=" ",vRecAge:=SPACE(10)
PUBLIC vcol:={10,30,50,70,90,110,130}
PUBLIC vlin:={50,70,90,110,130,150}
IF !NETUSE('ARQUSE','USER',.F.,10)
RETURN NIL
ENDIF
User->(dbSeek(Encripto(vuser)))
IF ALLTRIM(User->tipo)=="Mestre"
vTUser:=1
ELSEIF ALLTRIM(User->tipo)=="Recepção"
vTUser:=2
ELSEIF ALLTRIM(User->tipo)=="Fisioterapeuta"
vTUser:=3
END
IF !NETUSE('ARQLOG','LOG',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQEVO','EVO',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQCAR','CAR',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQSER','SER',.F.,10)
RETURN NIL
ENDIF
Ser->(dbSeek(vcodser))
IF !NETUSE('ARQTATE','TATE',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQFUN','FUN',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQCLI','CLI',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQFAV','FAV',.F.,10)
RETURN NIL
ENDIF
IF !NETUSE('ARQATE','ATE',.F.,10)
RETURN NIL
ENDIF
Ate->(dbSetOrder(5))
IF !NETUSE('ARQAGE','AGE',.F.,10)
RETURN NIL
ENDIF
nLi:=294.5
nCi:=010
DEFINE FONT oFnt1 NAME "Arial"
DEFINE FONT oFnt2 NAME "Arial" BOLD
DEFINE FONT oFnt3 NAME "Arial" SIZE 0,30 BOLD
DEFINE FONT oFnt4 NAME "Arial" SIZE 0,-16
DEFINE DIALOG oDlg FROM 1,1 TO IF(lSystem,660,651),1275 PIXEL FONT oFnt1 STYLE nOr(DS_MODALFRAME) TITLE " Agenda - "+Ser->nom
@ 0.5,1.5 GROUP oGroup2 TO 9,20 OF oDlg
oGroup2:cCaption:="Calendário"
@ 20, 20 CALENDAR oCal VAR dData OF oDlg PIXEL;
SIZE 110, 80 ;
ON CHANGE MostraComp(vcodser,oCal:GetDate()) ;
WEEKNUMBER
@ 111,20 SAY oSayAge VAR vSayAge SIZE 80,8 OF oDlg PIXEL FONT oFnt2
@ 111,85 SAY oData VAR dData SIZE 35,8 OF oDlg PIXEL FONT oFnt2
@ 11.5,3.5 BITMAP oLogoC RESNAME "LOGOC" OF oDlg SIZE 102,102 NOBORDER
@ nLi,nCi SAY "LEGENDA ->" SIZE 35,7 OF oDlg FONT oFnt2 PIXEL
@ nLi,nCi+40 BITMAP lBmp RESNAME aBmp[1] OF oDlg SIZE 8,8 PIXEL NOBORDER
lBmp:lTransparent:=.T.
@ nLi,nCi+50 SAY "Presença" OF oDlg SIZE 25,8 PIXEL
@ nLi,nCi+90 BITMAP lBmp RESNAME aBmp[2] OF oDlg SIZE 8,8 PIXEL NOBORDER
lBmp:lTransparent:=.T.
@ nLi,nCi+100 SAY "Falta" OF oDlg SIZE 25,8 PIXEL
@ nLi,nCi+135 BITMAP lBmp RESNAME aBmp[3] OF oDlg SIZE 8,8 PIXEL NOBORDER
lBmp:lTransparent:=.T.
@ nLi,nCi+145 SAY "Falta Justificada" OF oDlg SIZE 50,8 PIXEL
@ nLi,nCi+195 BITMAP lBmp RESNAME aBmp[4] OF oDlg SIZE 8,8 PIXEL NOBORDER
lBmp:lTransparent:=.T.
@ nLi,nCi+205 SAY "Agendado" OF oDlg SIZE 55,8 PIXEL
@ 0.5,22.5 GROUP oGroup1 TO 20,90 OF oDlg
oGroup1:cCaption:="Lista de Compromissos"
dbSelectArea("Age")
Age->(dbSetOrder(1))
OrdScope(0,vcodser+DTOS(dData))
OrdScope(1,vcodser+Dtos(dData))
Age->(dbGoTop())
@ 20,167 XBROWSE oBrwAge SIZE 455,250 PIXEL OF oDlg UPDATE ON DBLCLICK CadAgenda(vcodser,oBrwAge,.F.,3) font oFnt4
oBrwAge:cAlias := ("Age")
oBrwAge:lRecordSelector := .T.
oBrwAge:nMarqueeStyle := MARQSTYLE_HIGHLROWRC
oBrwAge:lAllowColSwapping:= .F. //----------------------------> Trocar Colunas
oBrwAge:lAllowRowSizing := .F. //----------------------------> Nao move as Linhas
// oBrwAge:bClrStd := { ||{ CLR_BLACK, IIF( Age->( OrdKeyNo() ) %2 == 0, nRgb(215,231,247), nRgb(255,255,255) ) } }
// oBrwAge:bClrSel:={|| {CLR_WHITE,nRGB(0,100,200)}}
// oBrwAge:bClrSelFocus:={|| {CLR_WHITE,nRGB(0,100,200)}}
oBrwAge:bClrSel:={|| {CorLetra(Age->tAte),CLR_WHITE}}
oBrwAge:bClrSelFocus:={|| {CorLetra(Age->tAte),CLR_WHITE}}
oBrwAge:bClrStd := {|| {CorLetra(Age->tAte),CLR_WHITE} }
oBrwAge:lFooter := .T. // tera rodape
oBrwAge:nFooterLines := 1 // numero de linhas no rodape
oBrwAge:lHScroll:=.F.
oBrwAge:nRowHeight:=23
oBrwAge:nStretchCol := STRETCHCOL_LAST
oCol:=oBrwAge:addcol()
oCol:AddResource("level1")
oCol:AddResource("level2")
oCol:AddResource("level3")
oCol:AddResource("level6")
oCol:cHeader:="Situ"
oCol:bBmpData:={|| IF(Age->situ=="1",1,IF(Age->situ=="2",2,IF(Age->situ=="3",3,4)))}
// oCol:bLClickHeader:={|| TrocaInd(oBrwAge,1) }
oCol:=oBrwAge:addcol()
oCol:AddResource("bolo")
oCol:AddResource("branco")
oCol:cHeader:="A"
oCol:bBmpData:={|| MostraSitPac(Age->cliente,2)}
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrwAge:addcol()
oCol:AddResource("dinheiro")
oCol:AddResource("branco")
oCol:cHeader:="I"
oCol:bBmpData:={|| MostraSitPac(Age->cliente,1)}
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrwAge:addcol()
oCol:cHeader:="Hora"
oCol:bStrdata:={|| Age->hora}
oCol:nWidth:=50
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrwAge:addcol()
oCol:cHeader:="Cliente"
oCol:bStrdata:={|| IF(Cli->(dbSeek(Age->cliente)),Cli->nom,SPACE(50))}
oCol:nWidth:=240
oCol:bFooter:={|| "Agendados: "+STR(nQtdage)}
/* oCol:=oBrwAge:addcol()
oCol:cHeader:="CPF"
oCol:bStrdata:={|| Cli->cgc}
oCol:nWidth:=160*/
oCol:=oBrwAge:addcol()
oCol:cHeader:="Observação"
oCol:bStrdata:={|| Age->obs}
oCol:nWidth:=160
oCol:bFooter:={|| "Presenças: "+STR(nQtdpre)}
oCol:=oBrwAge:addcol()
oCol:cHeader:="Nº"
oCol:bStrdata:={|| Age->sessao}
oCol:nWidth:=30
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:=oBrwAge:addcol()
oCol:cHeader:="Tipo de Atendimento"
oCol:bStrdata:={|| Age->tate+"-"+IF(Tate->(dbSeek(Age->tate)),Tate->nom,SPACE(50))}
oCol:nWidth:=160
oCol:bFooter:={|| "Faltas: "+STR(nQtdfal)}
oCol:=oBrwAge:addcol()
oCol:cHeader:="Profissional"
oCol:bStrdata:={|| Age->codpro+"-"+IF(Fun->(dbSeek(Age->codpro)),Fun->nom,SPACE(50)) }
oCol:nWidth:=170
oCol:bFooter:={|| "F-Just.: "+STR(nQtdfaj)}
oBrwAge:CreateFromCode()
@ 288,385 BUTTON oBtnCal[1] Prompt "Incluir" Pixel Size 45,12 Of oDlg Font oFnt1 WHEN vTUser#3 ;
ACTION (CadAgenda(vcodser,oBrwAge,.T.,1))
oBtnCal[1]:cToolTip:="Inclui um Novo Registro"
@ 288,435 BUTTON oBtnCal[2] Prompt "Alterar" Pixel Size 45,12 Of oDlg Font oFnt1 WHEN vTUser#3 ;
ACTION (CadAgenda(vcodser,oBrwAge,.F.,2))
oBtnCal[2]:cToolTip:="Altera os Dados do Registro"
@ 288,485 BUTTON oBtnCal[3] Prompt "Excluir" Pixel Size 45,12 Of oDlg Font oFnt1 WHEN vTUser#3 ;
ACTION (Excluir(2))
oBtnCal[3]:cToolTip:="Exclui os Dados do Registro"
@ 288,535 BUTTON oBtnCal[4] Prompt "Marcar" Pixel Size 45,12 Of oDlg Font oFnt1 WHEN vTUser#3 ;
ACTION MenuPopAge(oBtnCal[4],oBrwAge,vcodser)
oBtnCal[4]:cToolTip:="Marca o Registro"
@ 288,585 BUTTON oBtnCal[5] Prompt "Sair" Pixel Size 45,12 Of oDlg Font oFnt1 ;
ACTION oDlg:End() CANCEL
oBtnCal[5]:cToolTip:="Retorna a Tela Anterior"
oDlg:bStart:={|| MostraComp(vcodser,oCal:GetDate())}
oDlg:bpainted := { || (oMsg:=TMsgBar():New(oDlg," Calendário Para Agendamento de Compromissos - "+Ser->nom))} //,SETTRANSP( oDlg, nFactor )) }
ACTIVATE DIALOG oDlg CENTER //ON INIT MostraComp(vcodser,oCal:GetDate())
ofnt1:END() ; ofnt2:END() ; ofnt3:END() ; ofnt4:END()
OrdScope(0,NIL)
OrdScope(1,NIL)
RETURN(NIL)
STATIC FUNCTION MostraComp(vcodser,vdData)
nqtdage:=nqtdpre:=nqtdfal:=nqtdfaj:=0
dbSelectArea("Age")
// OrdScope(0,NIL)
// OrdScope(1,NIL)
OrdScope(0,vcodser+DTOS(vdData))
OrdScope(1,vcodser+DTOS(vdData))
DbEval( { || nQtdage++ } )
DbEval( { || IF(Age->situ=="1",nqtdpre++,IF(Age->situ=="2",nqtdfal++,IF(Age->situ=="3",nQtdfaj++,))) } )
Age->(dbGoTop())
// oBrwAge:GoTop()
// oBrwAge:keyCount()
oBrwAge:Refresh()
//? !empty(vrecAge)
// IF !empty(vrecAge)
// Age->(dbGoTo(vrecAge))
// vrecAge:=SPACE(10)
// END
oData:Refresh()
RETURN(.T.)