Nesse vídeo demonstraremos a utilização da classe TCheckBox, que serve para criar um checkbox em uma tela.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe475
Classe para criar checkbox em uma Dialog
@type Function
@author Atilio
@since 03/04/2023
@see https://tdn.totvs.com/display/tec/TCheckBox
@obs
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe475()
Local aArea := FWGetArea()
Local nCorFundo := RGB(238, 238, 238)
Local nJanAltura := 187
Local nJanLargur := 253
Local cJanTitulo := 'Exemplo TCheckBox'
Local lDimPixels := .T.
Local lCentraliz := .T.
Local nObjLinha := 0
Local nObjColun := 0
Local nObjLargu := 0
Local nObjAltur := 0
Private cFontNome := 'Tahoma'
Private oFontPadrao := TFont():New(cFontNome, , -12)
Private oDialogPvt
Private bBlocoIni := {|| /*fSuaFuncao()*/ } //Aqui voce pode acionar funcoes customizadas que irao ser acionadas ao abrir a dialog
//objeto0
Private oChkObj0
Private lChkObj0 := .F.
Private cChkObj0 := 'CheckBox vindo desmarcado'
//objeto1
Private oChkObj1
Private lChkObj1 := .T.
Private cChkObj1 := 'CheckBox vindo marcado'
//objeto2
Private oChkObj2
Private lChkObj2 := .T.
Private cChkObj2 := 'CheckBox desativado'
//objeto3
Private oBtnObj3
Private cBtnObj3 := 'Confirmar'
Private bBtnObj3 := {|| MsgInfo('Primeiro [' + cValToChar(lChkObj0) + '], Segundo [' + cValToChar(lChkObj1) + '], Terceiro [' + cValToChar(lChkObj2) + ']', 'Atencao')}
//Cria a dialog
oDialogPvt := TDialog():New(0, 0, nJanAltura, nJanLargur, cJanTitulo, , , , , , nCorFundo, , , lDimPixels)
//objeto0 - usando a classe TCheckBox
nObjLinha := 5
nObjColun := 7
nObjLargu := 110
nObjAltur := 15
oChkObj0 := TCheckBox():New(nObjLinha, nObjColun, cChkObj0, {|u| Iif(PCount() > 0 , lChkObj0 := u, lChkObj0)}, oDialogPvt, nObjLargu, nObjAltur, , /*bLClicked*/, oFontPadrao, /*bValid*/, /*nClrText*/, /*nClrPane*/, , lDimPixels)
//objeto1 - usando a classe TCheckBox
nObjLinha := 25
nObjColun := 7
nObjLargu := 110
nObjAltur := 15
oChkObj1 := TCheckBox():New(nObjLinha, nObjColun, cChkObj1, {|u| Iif(PCount() > 0 , lChkObj1 := u, lChkObj1)}, oDialogPvt, nObjLargu, nObjAltur, , /*bLClicked*/, oFontPadrao, /*bValid*/, /*nClrText*/, /*nClrPane*/, , lDimPixels)
//objeto2 - usando a classe TCheckBox
nObjLinha := 45
nObjColun := 7
nObjLargu := 110
nObjAltur := 15
oChkObj2 := TCheckBox():New(nObjLinha, nObjColun, cChkObj2, {|u| Iif(PCount() > 0 , lChkObj2 := u, lChkObj2)}, oDialogPvt, nObjLargu, nObjAltur, , /*bLClicked*/, oFontPadrao, /*bValid*/, /*nClrText*/, /*nClrPane*/, , lDimPixels)
oChkObj2:lActive := .F.
//objeto3 - usando a classe TButton
nObjLinha := 70
nObjColun := 7
nObjLargu := 110
nObjAltur := 15
oBtnObj3 := TButton():New(nObjLinha, nObjColun, cBtnObj3, oDialogPvt, bBtnObj3, nObjLargu, nObjAltur, , oFontPadrao, , lDimPixels)
//Ativa e exibe a janela
oDialogPvt:Activate(, , , lCentraliz, , , bBlocoIni)
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Daniel, por favor, faz um exemplo com uma listagem grande e 2 colunas de checkbox
Bom dia Julio, tudo joia?
Você diz, ter uma grid ou browse com duas colunas de check?
Ficamos no aguardo.
Tenha uma ótima e abençoada quarta feira.
Um forte abraço.
browse com duas 2 colunas de check.
Bom dia Julio, tudo joia?
Se você tiver usando um browse padrão do Protheus, basta no Configurador, você criar dois campos do tipo “Lógico” na tabela.
Por exemplo, supondo que seja no pedido de venda, se você criar dois campos na SC6, e os dois do tipo L, ao abrir a tela, ele já vai exibir os checks nessas colunas.
Tenha uma ótima e abençoada semana.
Um forte abraço.