Árvore de páginas

Linha de Produto:

Microsiga Protheus

Módulo:

Todos.

Issue relacionada:

DFRM1-202 - Obtendo detalhes do item... STATUS

Pré - RequisitoLIB com label 20170511 ou superior

 

Ao atualizar as variáveis que estão atreladas a uma Enchoice da classe Msmget, automaticamente os valores são atualizados em tela, mas isso não acontece em um campo reservado chamado BITMAP.

Esse campo se trata de uma imagem e devido uma característica do componente, não é possível realizar essa atualização de conteúdo de forma automática.

Porém foi criado o método UpdBMP para que a rotina que fizer a atualização do valor possa solicitar a troca da imagem.

No exemplo abaixo, os registros do cadastro de produtos que possuem imagem cadastrada, terão seu campo atualizado ao movimentar os registros através dos botoes.

 

Obs.: Para utilizar o exemplo cadastre algumas imagens no repositório de imagem (Configurador) e atrele as imagens no cadastro de produtos.


Sintaxe:

oEnchoice:UpdBMP(SB1->B1_BITMAP)
Exemplo:
#include "protheus.ch"
#include "TOTVS.CH"
 
User Function UpdBitmap()

Local oFont := TFont():New('Arial',,14,.T.)
Local aTamTela := MsAdvSize(.T.,.F.)
Local aPosObj := {}
Local aObjects := {}
Local nFor

Private aCampos := {}
Private oEnchoice

Aadd(aObjects,{060,060,.T.,.T.})
Aadd(aObjects,{040,040,.T.,.T.})

aInfo := {aTamTela[1],aTamTela[2],aTamTela[3],aTamTela[4],0,0}

aPosObj := MsObjSize(aInfo, aObjects,.T.)

aCampos := {"B1_COD","B1_DESC","B1_BITMAP"}

dbSelectArea("SB1")
dbSetOrder(1)

For nFor := 1 To Len(aCampos)
	_SetOwnerPrvt(aCampos[nFor],&("SB1->"+aCampos[nFor]))
Next nFor

Define MsDialog oDlg Title "Upd BITMAP" From aTamTela[7],0 To aTamTela[6],aTamTela[5] Of oMainWnd Pixel

oDlg:lMaximized := .T.
oPanel := TPanel():New(0,0,,oDlg,,,,,,aTamTela[5],aTamTela[6],.F.,.F.)
oPanel:Align := CONTROL_ALIGN_ALLCLIENT

oEnchoice := MsMGet():New("SB1",TQB->(Recno()),4,,,,aCampos,aPosObj[1],,,,,,oPanel,,,.F.)
oEnchoice:oBox:Align := CONTROL_ALIGN_ALLCLIENT

TButton():New(200,001,"Anterior",oPanel,{||RecChange(.F.)},55,12,,oFont,.F.,.T.,.F.,,.F.,,,.F.)
TButton():New(200,050,"Posterior",oPanel,{||RecChange(.T.)},55,12,,oFont,.F.,.T.,.F.,,.F.,,,.F.)

Activate MsDialog oDlg On Init (EnchoiceBar(oDlg,{|| (lOk:=.T.,oDlg:End())},{|| lOk:=.F.,oDlg:End()},,)) Centered

Return

 
Static Function RecChange(lNext)

Local nFor

If lNext
	SB1->(DbSkip())
Else
	SB1->(DbSkip(-1))
EndIf

If SB1->(Eof())
	SB1->(DbGoTop())
EndIf

If SB1->(Bof())
	SB1->(DbGoBottom())
EndIf

For nFor := 1 To Len(aCampos)
	_SetOwnerPrvt(aCampos[nFor],&("SB1->"+aCampos[nFor]))
Next nFor

oEnchoice:UpdBMP(SB1->B1_BITMAP)

Return .T.