Criando um checkbox através da TCheckBox – Maratona AdvPL e TL++ 475

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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Julio Vitor Vaz da Rocha disse:

    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.

      • Julio Vitor Vaz da Rocha disse:

        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.

Deixe uma resposta

Terminal de Informação