Histórico da Página
Linha de Produto: | Microsiga Protheus | ||||||||
Módulo: | Todos. | ||||||||
Issue relacionada: |
| ||||||||
Pré - Requisito | LIB 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:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#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. |