Advertisement
cchenrique

zCCHWizard

Aug 14th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.41 KB | None | 0 0
  1. #Include "Totvs.ch"
  2. #Include "Protheus.ch"
  3. #define BR Chr(10)
  4.  
  5. /*/{Protheus.doc} zCCHWizard
  6.     @description: Geração de Tela do Wizard Exemplo
  7.     @author Caio César Henrique
  8.     @since 14/08/2019
  9.     @version version
  10. /*/
  11.  
  12. User Function zCCHWizard()
  13.  
  14.     /* Variáveis Locais */
  15.     Local oPanel
  16.     Local oNewPag
  17.     Local oStepWiz  := Nil
  18.     Local oDlg      := Nil
  19.     Local oPanelBkg
  20.    
  21.     /* Variáveis Privadas */
  22.     Private cFile    := ''
  23.     Private cProduto := Space(15)
  24.     Private cCombo1 := ''
  25.  
  26.     Private oFont1
  27.     Private oFontCabec
  28.     Private oBrwTrb
  29.    
  30.     /* Define o tipo e tamanho da fonte */
  31.     Define Font oFont1     Name "Verdana" Size 9,18
  32.     Define Font oFontCabec Name "Verdana" Bold Size 7,18
  33.    
  34.     /* Tela Inicial do Wizard */
  35.     DEFINE DIALOG oDlg TITLE 'zCCHWizard - Exemplo de Utilização' PIXEL STYLE nOR(  WS_VISIBLE ,  WS_POPUP )
  36.  
  37.     /* Define tamanho da Dialog que comportará o Wizard */
  38.     oDlg:nWidth := 800
  39.     oDlg:nHeight := 620
  40.    
  41.     /* Define o tamanho do painel do Wizard */
  42.     oPanelBkg:= tPanel():New(0,0,"",oDlg,,,,,,300,300)
  43.     oPanelBkg:Align := CONTROL_ALIGN_ALLCLIENT
  44.  
  45.     /* Instancia a classe FWWizard */
  46.     oStepWiz:= FWWizardControl():New(oPanelBkg)
  47.     oStepWiz:ActiveUISteps()
  48.  
  49.     //**************************//
  50.     // 1 - Pagina de Introdução //
  51.     //**************************//
  52.     /* Define a página 1 com a função de montagem dos objetos */
  53.     oNewPag := oStepWiz:AddStep("1")
  54.  
  55.     /* Altera a descrição do step */
  56.     oNewPag:SetStepDescription("Parâmetros")
  57.  
  58.     /* Define o bloco de construção */
  59.     oNewPag:SetConstruction({|Panel|CteXml_Pg1(Panel)})
  60.  
  61.     /* Define o bloco ao clicar no botão Próximo */
  62.     oNewPag:SetNextAction({|| CteVal_Pg1()})
  63.    
  64.     /* Define o bloco ao clicar no botão Cancelar */
  65.     oNewPag:SetCancelAction({|| .T., oDlg:End()})
  66.  
  67.     //**************************//
  68.     // 2 - Pagina de Resultado  //
  69.     //**************************//
  70.    
  71.     /* Define a página 2 com a função de montagem dos objetos */
  72.     oNewPag := oStepWiz:AddStep("2", {|Panel|CteXml_Pg2(Panel)})
  73.    
  74.     /* Altera a descrição do step */
  75.     oNewPag:SetStepDescription("Resultado")
  76.    
  77.     /* Define o bloco ao clicar no botão Próximo */
  78.     oNewPag:SetNextAction({|| .T., oDlg:End()})
  79.    
  80.     /* Define o bloco ao clicar no botão Cancelar */
  81.     oNewPag:SetCancelAction({|| .T., .F.})
  82.    
  83.     /* Define o que será executado se clicar em Cancelar ou Voltar */
  84.     oNewPag:SetPrevAction({|| ConOut('Ação não permitida'), .F.})
  85.    
  86.     /* Define o título da tela anterior */
  87.     oNewPag:SetPrevTitle(" -- ")
  88.    
  89.     /* Define se permite cancelar */
  90.     oNewPag:SetCancelWhen({||.F.})
  91.    
  92.     /* Ativa o Wizard */
  93.     oStepWiz:Activate()
  94.  
  95.     ACTIVATE DIALOG oDlg CENTER
  96.    
  97.     /* Destrói o objeto no fechamento total do Wizard */
  98.     oStepWiz:Destroy()
  99. Return
  100.  
  101. /*/{Protheus.doc} zCCHWizard
  102.     @description: Geração de Tela do Wizard Exemplo
  103.     @author Caio César Henrique
  104.     @since 14/08/2019
  105.     @version version
  106. /*/
  107. Static Function CteXml_Pg1(oPanel)
  108.  
  109.     /* Variáveis Locais */
  110.     Local cDesc    := ''
  111.     Local nQuant   := 0
  112.     Local oSay1
  113.     Local oSay2
  114.     Local oSay3
  115.     Local oSay4
  116.     Local oSay5
  117.     Local oSay6
  118.     Local oGet
  119.     Local oGet2
  120.     Local oButton1
  121.     Local oCombo1
  122.     Local oCheck
  123.     Local aItens  := {'1=Não','2=Sim'}
  124.    
  125.     /* Variáveis Privadas */
  126.     Private cColorBackGround    := "#FFFFFF"       
  127.     Private cColorSeparator     := "#C0C0C0"       
  128.     Private cGradientTop        := "#FFFFFF"
  129.  
  130.     /* Gradiente inicial do botão selecionado */  
  131.     Private cGradientBottom     := "#FFFFFF"
  132.    
  133.     /* Gradiente final do botão selecionado */    
  134.     Private cColorText      := "#990000"        
  135.    
  136.     dbSelectArea('SB1')
  137.  
  138.     /* Determina objetos da Tela (TSay, TButton, TGet) */
  139.     oSay1    := TSay():New(10,10,{||'Por favor, selecione a pasta dos arquivos XML'},oPanel,,oFontCabec,,,,.T.,,,200,20)
  140.  
  141.     oSay2    := TSay():New(26,10,{|| 'Caminho: '       },oPanel,,oFont1,,,,.T.,CLR_RED,CLR_WHITE,70,30)
  142.     oGet     := TGet():New(25,55,{|u| If(PCount() > 0,cFile := ' ',cFile)},oPanel,120,10,'@!S100',,,,,,,.T.,,,,,,,.T.,,,'cFile')
  143.     oButton1 := TButton():New(25,179,'Pesquisar',oPanel,{|| cFile:=AllTrim(cGetFile("Arquivo (*.xml)|*.xml","Selecione o "+;
  144.     "arquivo",,"C:\",.F.,GETF_LOCALHARD+GETF_NETWORKDRIVE+GETF_RETDIRECTORY))},40,12,,,,.T.)
  145.  
  146.     oSay3    := TSay():New(50,10,{||'Defina a parametrização'},oPanel,,oFontCabec,,,,.T.,,,200,20)
  147.  
  148.     oSay4    := TSay():New(66,10,{|| 'Produto: '       },oPanel,,oFont1,,,,.T.,CLR_RED,CLR_WHITE,70,30)
  149.     oGet2    := TGet():New(65,55,{|x| If(PCount() > 0,cProduto := x,cProduto)},oPanel,120,10,PesqPict("SB1","B1_COD"),{|| CTeValProd(@cProduto,@cDesc)},,,/*font*/,,,.T.,,,{|| .T.},,,/*change*/,.F.,.F.,,"cProduto")
  150.     oGet2:bF3 := &('{|| IIf(ConPad1(,,,"SB1",,,.F.),Eval({|| cProduto := SB1->B1_COD,cDesc := SB1->B1_DESC, oGet2:Refresh()}),.T.)}')
  151.  
  152.     oSay5    := TSay():New(67,180,{|| IIf(!Empty(cProduto),'-> '+AllTrim(cDesc),cProduto := Space(15))      },oPanel,,oFont1,,,,.T.,CLR_BLUE,CLR_WHITE,200,30)
  153.  
  154.     oSay6    := TSay():New(91,10,{|| 'Relatório: '       },oPanel,,oFont1,,,,.T.,CLR_RED,CLR_WHITE,70,30)
  155.     oCombo1  := TComboBox():New(90,55,{|u|if(PCount() > 0, cCombo1 := u,cCombo1)},aItens,120,10,oPanel,,{||.T.},,,,.T.,,,,,,,,,'cCombo1')
  156. Return ( Nil )
  157.  
  158. /*/{Protheus.doc} zCCHWizard
  159.     @description: Geração de Tela do Wizard Exemplo
  160.     @author Caio César Henrique
  161.     @since 14/08/2019
  162.     @version version
  163. /*/
  164. Static Function CteVal_Pg1(oPanel)
  165.  
  166.     Local lRet := .T.
  167.  
  168.     /* Valida preenchimento do campo Produto e Arquivo */
  169.     If Empty(cFile) .or. Empty(cProduto)
  170.         Alert('Por favor, preencher Caminho e/ou Produto')
  171.         lRet := .F.
  172.     EndIf
  173.  
  174. Return ( lRet )
  175.  
  176. /*/{Protheus.doc} zCCHWizard
  177.     @description: Geração de Tela do Wizard Exemplo
  178.     @author Caio César Henrique
  179.     @since 14/08/2019
  180.     @version version
  181. /*/
  182. Static Function CteXml_Pg2(oPanel)
  183.    
  184.     Local oSay
  185.  
  186.     /* Encerra mensagem final */
  187.     oSay    := TSay():New(70,100,{||'Wizard Encerrado'},oPanel,,oFontCabec,,,,.T.,,,200,20)
  188.  
  189. Return ( Nil )
  190.  
  191. /*/{Protheus.doc} zCCHWizard
  192.     @description: Geração de Tela do Wizard Exemplo
  193.     @author Caio César Henrique
  194.     @since 14/08/2019
  195.     @version version
  196. /*/
  197.  
  198. Static Function CTeValProd(cProduto,cDesc)
  199.  
  200.     Local cProd := cProduto
  201.     Local aArea := GetArea()
  202.     Local lRet  := .F.
  203.  
  204.     /* Carrega descrição do Produto ao gatilhar o código */
  205.     dbSelectArea("SB1")
  206.     SB1->(dbSetOrder(1))
  207.  
  208.     If SB1->(dbSeek(xFilial("SB1")+AllTrim(cProd)))
  209.         lRet := .T.
  210.         cDesc := SB1->B1_DESC
  211.     Else
  212.         lRet := .F.
  213.     EndIf
  214.  
  215.     RestArea(aArea)
  216.  
  217. Return ( lRet )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement