BROWSE - erro ao clicar no cabeçalho
Enviado: 12 Mar 2009 10:31
Em qq browse do meu sistema, ao clicar no cabeçalho da erro no método BUTTONDOWN do browse, alguém sabe como posso evitar isso 
Obg
Obg
Em homenagem a Paulo Cesar Toledo
https://pctoledo.org/
Código: Selecionar todos
/////////////////////////////////////////////////////////////////////
FUNCTION RHCADVT()
PRIVATE oLabel1, oBrowse1
PRIVATE gPes,vPes:="",keyAnt:=0, keyend := .f.
// NOME DA BASE
PRIVATE vNomeBase := "valetr", nCodigo := 0, nTamTela := 600, nAltTela := 268
SELE &vNomeBase
SET ORDER TO 1
GO TOP
// CRIAÇÃO DA TELA DO GRID
INIT DIALOG oDlg1 TITLE "Meios de Transporte" ;
ICON oIcon ;
AT 344,223 SIZE nTamTela,nAltTela NOEXIT ;
STYLE WS_DLGFRAME+DS_CENTER+WS_SYSMENU
Thisform := oDlg1
// MENSAGEM FINAL DA TELA
@ 0,nAltTela-43 SAY oLabel1 CAPTION "<INS> Incluir novo transporte <ENTER> Alterar <DEL> Excluir" SIZE nTamTela,20 ;
STYLE SS_CENTER;
FONT oFontNorm
// BROWSE DA TABELA
@ 0, 0 BROWSE oBrowse1 DATABASE SIZE nTamTela,nAltTela-48 STYLE WS_VSCROLL ;
FONT oFontNorm ;
ON KEYDOWN {|o,key| BrowseKey(o, key) } ;
ON CLICK {|o,key| BrowseKey(o, key)} ;
ON POSCHANGE {|| SetFocus(oBrowse1:handle ) }
oBrowse1:alias := vNomeBase
oBrowse1:aColumns := {}
oBrw_CreateColumn( oBrowse1, "CODIGO","Código" , vNomeBase,1,"N", 2,0,,,DT_RIGHT,DT_RIGHT )
oBrw_CreateColumn( oBrowse1, "REF" ," Referência", vNomeBase,2,"C",40,0)
oBrw_CreateColumn( oBrowse1, "VALOR" ,"Valor " , vNomeBase,3,"N",15,2,,"@E 999,999,999.99",DT_RIGHT,DT_RIGHT)
ACTIVATE DIALOG oDlg1
RETURN oDlg1:lresult
*---------------------------------------------------------------------
* FUNÇÃO : TRATAMENTO DAS TECLAS DO GRID
*---------------------------------------------------------------------
static FUNCTION BrowseKey( oBrowse1, key )
DO CASE
CASE key == K_INS // inclusão de novo transporte
F_RHVT(0,"I")
oBrowse1:REFRESH()
CASE key == K_ENTER // alterar preço
nCodigo := &vNomeBase->CODIGO
F_RHVT(nCodigo,"A")
oBrowse1:REFRESH()
oBrowse1:SETFOCUS()
CASE key == K_DEL // exclusão de registro
SELECT &vNomeBase
IF Answer(2,"Confirma a exclusão ?") = 1
IF RLOCK()
DELETE
UNLOCK
SKIP -1
ELSE
FMsgErro("Registro indisponível, exclusão não realizada")
ENDIF
ENDIF
oBrowse1:REFRESH()
oBrowse1:SETFOCUS()
CASE key == K_UP .OR. key == K_DOWN .OR. key == K_PGUP .OR. key == K_PGDN .OR. ;
key == K_HOME .OR. key == K_END
IF key == K_HOME
oBrowse1:TOP()
oBrowse1:REFRESH()
ENDIF
IF key == K_END
oBrowse1:BOTTOM(.T.)
oBrowse1:REFRESH()
ENDIF
CASE key == K_ESC // fechar janela
EndDialog()
oBrowse1:REFRESH()
ENDCASE
RETURN .T.
Código: Selecionar todos
*---------------------------------------------------------------------
* FUNÇÃO : CRIAÇÃO DAS COLUNAS DO GRID
*---------------------------------------------------------------------
// 01 02 03 04 05 06 07
FUNCTION oBrw_CreateColumn( wBrowse , wCampo , wCabecalho, wBase , wSequencial, wTipo, wTamanho, ;
wDecimais, wEditavel, wPicture , wJusHead, wJusLin , wColorBlock)
// 08 09 10 11 12 13
LOCAL i
LOCAL nArea := &wBase->(SELECT())
IF wEditavel == NIL
wEditavel = .F.
ENDIF
IF wPicture == NIL
wPicture = ""
ENDIF
IF wJusHead == NIL
wJusHead = DT_LEFT
ENDIF
IF wJusLin == NIL
wJusLin = DT_LEFT
ENDIF
IF wColorBlock == NIL
wColorBlock = {|| {x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE} }
ENDIF
// CONTEUDO DOS PARAMETROS PASSADOS - SOMENTE PARA TESTE
/*
MSGINFO("campo:"+WCAMPO)
MSGINFO("cabecalho:"+WCABECALHO)
MSGINFO("base:"+WBASE)
MSGINFO("sequencial:"+STR(WSEQUENCIAL))
MSGINFO("tipo C:"+WTIPO)
MSGINFO("tamanho:"+STR(WTAMANHO))
MSGINFO("decimais:"+STR(WDECIMAIS))
IF WEDITAVEL
MSGINFO("EDITAVEL")
ELSE
MSGINFO("NAO EDITAVEL")
ENDIF
MSGINFO("picture:"+WPICTURE)
MSGINFO("alinhamento cab:"+STR(WJUSHEAD))
MSGINFO("alinhamento reg:"+STR(WJUSLIN))
*/
// PARAMETROS
// ==========
// (A) cHeading = (03) wCabecalho => cabecalho do campo
// (B) Block = (02) wCampo e (04) nArea => arquivo em uso e nome do campo
// (C) Type = (06) wTipo => tipo do campo (C,D,N)
// (D) Length = (07) wTamanho => tamanho do campo
// (E) Dec = (08) wDecimais => qtdade de casas decimais
// (F) lEditable = (09) wEditavel => indica se campo permite edição ou não no browse
// (G) nJusHead = (11) wJusHead => posicionamento do cabeçalho no browse
// (left, center, right)
// (H) nJustLin = (12) wJusLin => posiconamento do campor no browse
// (left, center, right)
// (I) cPict = (10) wPicture => máscara do campo
// (J) bValid = (--) wValid => validação do campo
// (K) bWhen = (--) wWhen => condição do campo
// (L) aItem = (--) wItem => ???
// (M) bColorBlock = (13) wColorBlock => cor do registro selecionado e demais registros
// (N) bHeadClick = (--) wHeadClick => execução de comandos qdo clicar no cabeçalho
// não utilizados, declarados aqui
wValid := ""
wWhen := ""
wItem := ""
wHeadClick:= ""
wBrowse:AddColumn( HColumn():New( wCabecalho , FieldWBlock( wCampo, nArea ), wTipo , wTamanho, ;
wDecimais, wEditavel, wJusHead, wJuslin, wPicture, wValid, ;
wWhen, wItem, wColorBlock, wHeadClick ) )
wBrowse:REFRESH()
RETURN Nil