Problema com xBrowse em Dialog

Post Reply
User avatar
ip_ram
Posts: 43
Joined: Tue Nov 21, 2006 4:07 pm
Location: Brazil / MG / Belo Horizonte

Problema com xBrowse em Dialog

Post by ip_ram »

Olás!

Estou com um problema ao exibir uma matriz de dados com xbrowse numa dialog.

Na primeira escolha do combobox tudo funciona perfeitamente.

A partir da segunda escolha, após exibir a nova matriz de dados, ao clicar sobre a linha do registro, o xbrowse exibe a lista anterior.

Code: Select all | Expand

//Function Ver_Est()   Private oDlg, oEst, oCon, oSai, oGra, oTip_Est, cTip_Est, aTip_Est, aEst, aLst        aEst     := {}    aLst     := {}    cTip_Est := "Data"    aTip_Est := { "Data", "Hora", "Endereço IP", "Endereço Internet" }    If ! Abrir_DBF(cUniSer + cDirBas + "\TB_EST.DBF","TB_EST",.t.,"DBFCDX")        Return(.f.)    EndIf    TB_EST->(DBSetOrder(1))   Define Dialog oDlg Of oWnd Title "Estatística" Font oFonte From 0,0 To 434,700 Pixel    @ 005,005 Say "Tipo:" Of oDlg Pixel    @ 005,025 ComboBox oTip_Est Var cTip_Est Items aTip_Est Size 64,100 Of oDlg Pixel ;             Message "Informe o tipo da estatísitica"   @ 020,005 Say Space(1) Of oDlg Box Size 340,05 Pixel    @ 002,250 BTNBMP oCon Size 16,16 Of oDlg Font oFonte 2007 Pixel ToolTip "Atualizar dados" ;                 Action (Atu_Est(cTip_Est)) File (cUniSer + cDirImg + "\prop.bmp")    @ 002,290 BTNBMP oGra Size 16,16 Of oDlg Font oFonte 2007 Pixel ToolTip "Mostrar gráfico" ;                 Action (MsgInfo("Exibir gráfico","Em breve...")) File (cUniSer + cDirImg + "\graph.bmp")    @ 002,330 BTNBMP oSai Size 16,16 Of oDlg Font oFonte 2007 Pixel ToolTip "Retornar" ;                 Action (oDlg:End()) File (cUniSer + cDirImg + "\quit.bmp") Default Cancel    oDlg:lHelpIcon := .f.    Activate Dialog oDlg Centered On Init (oTip_Est:SetFocus())    TB_EST->(DBCloseArea())Return(Nil)//Function Atu_Est(cTip)    Local cRef, cEst, i := 0    If Empty(cTip)        MsgAlert("Deve ser informado um tipo de estatística","Aviso")        Return(Nil)    EndIf    aLst := {}    cRef := Str(aScan(aTip_Est,AllTrim(cTip)),1)    TB_EST->(DBSeek(cRef,.f.))    While ! TB_EST->(EOF()) .And. TB_EST->Tip_Est = cRef        aEst := {}        cEst := TB_EST->Ref_Est        While ! TB_EST->(EOF()) .And. TB_EST->Tip_Est = cRef .And. TB_EST->Ref_Est = cEst            AAdd( aEst, { TB_EST->Ref_Est, TB_EST->Des_Est, TB_EST->Tot_Est } )            TB_EST->(DBSkip())      EndDo        ASort( aEst ,,, {|x,y| x[3] > y[3] } )      For i := 1 To Len( aEst )            If cRef = "4"            If i < 21                    AAdd( aLst, { aEst[i,1], aEst[i,2], aEst[i,3] } )                Else                    Exit                EndIf            Else            If i < 6                    AAdd( aLst, { aEst[i,1], aEst[i,2], aEst[i,3] } )                Else                    Exit                EndIf            EndIf       Next    EndDo    @ 055,000 xBrowse oEst Of oDlg Columns 1,2,3 ;                 ColSizes 80,510,60 Pictures "@!","@A","999,999,999" Array aLst Pixel Size 700,382 Font oFonte    oEst:nMarqueeStyle = MARQSTYLE_HIGHLROW        oEst:nRowDividerStyle := 3    oEst:nColDividerStyle := 2    oEst:aCols[1]:nDataStrAlign := 2    oEst:aCols[1]:nHeadStrAlign := 2    oEst:aCols[2]:nHeadStrAlign := 0    If cRef = "1"        oEst:aCols[1]:cHeader = "Data"        oEst:aCols[1]:Show()    ElseIf cRef = "2"        oEst:aCols[1]:cHeader = "Hora"        oEst:aCols[1]:Show()    ElseIf cRef = "3"        oEst:aCols[1]:cHeader = "IP"        oEst:aCols[1]:Show()    ElseIf cRef = "4"        oEst:aCols[1]:cHeader = "Referência"        oEst:aCols[1]:Hide()    EndIf    oEst:CreateFromCode()    oEst:Refresh()    oEst:SetFocus()    Return(Nil)// 


Alguém pode ajudar?

Obrigado!

Rodrigo Melo
xH 1.2.3 / FWH 14.12
User avatar
Euclides
Posts: 157
Joined: Wed Mar 28, 2007 1:19 pm

Re: Problema com xBrowse em Dialog

Post by Euclides »

Olá Rodrigo.
Se você colocasse a definição do cadastro TB_EST.DBF e uma lista aproximada dos dados que ela contêm eu poderia apresentar uma solução mais simples...
Em todo caso, eu NUNCA colocaria uma definição de NENHUM CONTROLE como ACTION de um botão qualquer, como você está fazendo em: Function Atu_Est(cTip). (no máximo, eu faço no ON INIT)
Estamos no aguardo...
T+, Euclides
User avatar
ip_ram
Posts: 43
Joined: Tue Nov 21, 2006 4:07 pm
Location: Brazil / MG / Belo Horizonte

Re: Problema com xBrowse em Dialog

Post by ip_ram »

Euclides,

Obrigado por responder.

Uma explicação: A tabela TB_EST contém os registros de acesso à internet das estação de trabalho de uma rede. O que pretendo mostrar no gráfico é uma lista dos 10 mais acessados (para o filtro 4) e uma lista dos 5 mais acessados (para os filtros 1, 2 e 3).

Por isso foi escrito desta forma.

Mas já consegui resolver o problema.

Um abraço!

Rodrigo Melo
Post Reply