Classe ADVPL de interface que permite a criação de um objeto visual do tipo Wizard (assistente).

ArgumentoTipoDescrição

abExecute

Array

Array contendo os blocos de código com as execuções 

abValid

Array

Array contendo os textos dos cabeçalhos de cada passo do Wizard 

acHeader

Array

Array contendo os blocos de código com as execuções de cada passo 

chMsg

Caracter

Mensagem do cabeçalho do passo ativo 

chTitle

Caracter

Título do cabeçalho do passo ativo 

nPanel

Numérico

Número do painel ativo

nTPanel

Numérico

Número total de painéis

oBack

Objeto

Objeto do botão "Cancelar" 

oBmp

Objeto

Imagem utilizada no cabeçalho do Wizard 

oCancel

Objeto

Objeto do botão "Finalizar" 

oCHFont

Objeto

Objeto da fonte utilizada no título do cabeçalho

oCMFont

Objeto

Objeto da fonte utilizada na mensagem do cabeçalho

oDlg

Objeto

Diálogo Principal 

oFinish

Objeto

Array contendo os blocos de código com as validações de cada passo do Wizard 

oHFont

Objeto

Objeto da fonte utilizada no título do painel de apresentação

oHPanel

Objeto

Painel do cabeçalho 

oMFont

Objeto

Objeto da fonte utilizada na mensagem do painel de apresentação do Wizard

oMPanel

Objeto

Objeto do botão "Avançar" 

oMsgWelcome

Objeto

Objeto do título do painel de apresentação do Wizard

oNext

Objeto

Objeto do botão "Voltar" 

oText

Objeto

Objeto de mensagem do painel de apresentação do Wizard

 

Colapse ALL
Expand ALL
Classe ADVPL de interface que permite a criação de um objeto visual do tipo Wizard (assistente).

 

 

abExecute

Array

Array contendo os blocos de código com as execuções 

abValid

Array

Array contendo os textos dos cabeçalhos de cada passo do Wizard 

acHeader

Array

Array contendo os blocos de código com as execuções de cada passo 

chMsg

Caracter

Mensagem do cabeçalho do passo ativo 

chTitle

Caracter

Título do cabeçalho do passo ativo 

nPanel

Numérico

Número do painel ativo

nTPanel

Numérico

Número total de painéis

oBack

Objeto

Objeto do botão "Cancelar" 

oBmp

Objeto

Imagem utilizada no cabeçalho do Wizard 

oCancel

Objeto

Objeto do botão "Finalizar" 

oCHFont

Objeto

Objeto da fonte utilizada no título do cabeçalho

oCMFont

Objeto

Objeto da fonte utilizada na mensagem do cabeçalho

oDlg

Objeto

Diálogo Principal 

oFinish

Objeto

Array contendo os blocos de código com as validações de cada passo do Wizard 

oHFont

Objeto

Objeto da fonte utilizada no título do painel de apresentação

oHPanel

Objeto

Painel do cabeçalho 

oMFont

Objeto

Objeto da fonte utilizada na mensagem do painel de apresentação do Wizard

oMPanel

Objeto

Objeto do botão "Avançar" 

oMsgWelcome

Objeto

Objeto do título do painel de apresentação do Wizard

oNext

Objeto

Objeto do botão "Voltar" 

oText

Objeto

Objeto de mensagem do painel de apresentação do Wizard

argumento

tipo

descrição

 

 

New()

Método construtor da classe Wizard.

ApWizard():New ( < chTitle > , < chMsg > , < cTitle > , < cText > , < bNext > , < bFinish > , < lPanel > , < cResHead > , < bExecute > , < lNoFirst > , < aCoord > ) --> NIL

 

chTitle CaracterTitulo do cabeçalho
chMsgCaracterMensagem do cabeçalho
cTitle CaracterTítulo do painel de apresentação
cTextCaracterTexto do painel de apresentação
bNextCode-BlockBloco de código a ser executado para validar o botão "Avançar"
bFinish Code-BlockBloco de código a ser executado para validar o botão "Finalizar"
lPanelLógico 
cResHeadCaracterNome da imagem usada no cabeçalho, essa tem que fazer parte do repositório  
bExecuteCode-BlockBloco de código contendo a ação a ser executada no clique dos botões "Avançar" e "Voltar"
lNoFirstLógicoSe .T. não exibe o painel de apresentação
aCoordArray Array contendo as coordenadas da tela

Activate()

Exibe o diálogo do Wizard.

oObj:Activate ( < lCenter > , < bValid > , < bInit > , < bWhen > ) --> NIL

 

lCenter LógicoDetermina se o diálogo será centralizado na tela
bValidCode-BlockBloco de código a ser executado no encerramento do diálogo
bInitCode-BlockBloco de código a ser executado na inicialização do diálogo
bWhenCode-Block Bloco de código para habilitar a execução do diálogo

argumento

tipo

descrição

 

NewPanel()

Cria novo painel no Wizard.

oObj:NewPanel ( < cTitle > , < cMsg > , < bBack > , < bNext > , < bFinish > , < lPanel > , < bExecute > ) --> NIL

 

cTitle Caracter Título do painel 
cMsgCaracterMensagem posicionada no cabeçalho do painel
bBackCode-BlockBloco de código utilizado para validar o botão "Voltar"
bNextCode-BlockBloco de código utilizado para validar o botão "Avançar"
bFinishCode-BlockBloco de código utilizado para validar o botão "Finalizar"
lPanelLógicoSe .T. será criado um painel, se .F. será criado um scrollbox
bExecuteCode-BlockBloco de código a ser executado quando o painel for selecionado

argumento

tipo

descrição

GetPanel()

Retorna o objeto painel desejado.

oObj:GetPanel ( < nPanel > ) --> NIL

 

nPanel NuméricoNúmero do painel a ser retornado 

argumento

tipo

descrição

 

SetFinish()

Exibe o botão "Finalizar" para encerrar o assistente.

oObj:SetFinish ( ) --> NIL

 

SetPanel()

Seleciona o objeto painel desejado.

oObj:SetPanel ( < nPanel > ) --> NIL

 

nPanel NuméricoNúmero do painel a ser retornado 

argumento

tipo

descrição

 

RefreshButtons()

Disponibiliza os botões do assistente de acordo com o painel corrente.

oObj:RefreshButtons ( ) --> NIL

DisableButtons()

Desabilita os botões do assistente.

oObj:DisableButtons ( ) --> NIL

EnableButtons()

Habilita os botões do assistente.

SetHeader()

Substitui o título do painel desejado.

oObj:SetHeader ( < cHeader > , < nPanel > , < lChange > ) --> NIL

 

cHeader Caracter Texto do título 
nPanelNumérico Número do painel
lChangeLógicoSe .T. substitui o título padrão do painel

argumento

tipo

descrição

 

SetHeader()

Substitui a mensagem do painel desejado.

oObj:SetMessage ( < cMsg > , < nPanel > , < lChange > ) --> NIL

 

cMsgCaracter Texto da mensagem
nPanelNumérico Número do painel
lChangeLógicoSe .T. substitui a mensagem padrão do painel

argumento

tipo

descrição

 

EXEMPLO:

#include "protheus.ch"
#include "apwizard.ch"

User Function SANWIZ()
Local oNo := LoadBitmap( GetResources(), "LBNO" )
Local oOk := LoadBitmap( GetResources(), "LBTIK" )
Local oWizard
Local oGet1, oGet2, oGet3
Local cGet1 := 0
Local cGet2 := 0
Local cGet3 := 0
Local nPanel
Local aWiz := {{.F., ""}}
Local oLbxWiz
Local oChkTWiz
Local oChkIWiz
Local lChkTWiz := .F.
Local lChkIWiz := .F.
Local lWiz := .F.
Local __lIsP12 := GetVersao(.F.) == "12"

DEFINE WIZARD oWizard TITLE "Wizard" HEADER "Wizard de Configuração" MESSAGE " ";
TEXT "Esta é a tela de apresentação do wizard que pode ser suprimida através de parâmetros" PANEL;
NEXT {|| .T.} FINISH {|| .T.}

// PANEL 2
//cria um novo passo (janela) para o wizard
CREATE PANEL oWizard HEADER "Painel 2" MESSAGE "Painel2" PANEL;
BACK {|| .T.} ;
NEXT {|| If(Empty(cGet1) .Or. cGet1 == 0, (MsgStop("Informe o conteúdo para o Get1"), .F.), If(Empty(cGet2) .Or. cGet2 == 0, (msgStop("Informe o conteúdo para o Get2"), .F.), .T.))};
FINISH {|| .T.} EXEC {|| .T.}

@ 010, 010 TO 125,280 OF oWizard:oMPanel[2] PIXEL
@ 20, 15 SAY oSay1 VAR "Get1: " OF oWizard:oMPanel[2] PIXEL
@ 20, 35 GET oGet1 VAR cGet1 PICTURE "9999" OF oWizard:oMPanel[2] SIZE 40,009 PIXEL
@ 40, 15 SAY oSay2 VAR "Get2: " OF oWizard:oMPanel[2] PIXEL
@ 40, 35 GET oGet2 VAR cGet2 PICTURE "9999" OF oWizard:oMPanel[2] SIZE 40,009 PIXEL

// PANEL 3
//cria um novo passo (janela) para o wizard
CREATE PANEL oWizard HEADER "Painel 3" MESSAGE "Painel3" PANEL;
BACK {|| oWizard:nPanel := 3, .T.};
NEXT {|| If(Ascan(aWiz,{|x| x[1] == .T.}) == 0, (MsgStop('Por favor selecione pelo menos um registro no listbox.'), .F.), .T. )} EXEC {||lChkTWiz:=.F., .T.}

@ 010, 010 TO 125,280 OF oWizard:oMPanel[3] PIXEL
@ 018, 020 LISTBOX oLbxWiz FIELDS HEADER "","Owner" SIZE 171, 88 ON DBLCLICK (aWiz[oLbxWiz:nAt,1] := !aWiz[oLbxWiz:nAt,1],If(!aWiz[oLbxWiz:nAt,1],lChkTWiz := .F., ),oLbxWiz:Refresh(.f.),ApSxVerChk(@lChkTWiz,@aWiz,@oLbxWiz,@oChkTWiz)) OF oWizard:oMPanel[3] PIXEL
oLbxWiz:SetArray(aWiz)
oLbxWiz:bLine := {|| {If(aWiz[oLbxWiz:nAt,1],oOK,oNO),aWiz[oLbxWiz:nAt,2]}}
oLbxWiz:bRClicked := { || AEVAL(aWiz,{|x|x[1]:=!x[1]}),oLbxWiz:Refresh(.F.) }

@ 111, 20 CHECKBOX oChkTWiz VAR lChkTWiz PROMPT "Marcar Todos" SIZE 62, 10 OF oWizard:oMPanel[3] PIXEL
oChkTWiz:blClicked := {|| AEval( aWiz,{|x,y| x[1] := lChkTWiz , If(lChkTWiz, (lChkIWiz := .F.,oChkIWiz:Refresh()), )})}
@ 111, 100 CHECKBOX oChkIWiz VAR lChkIWiz PROMPT "Inverter Marca" SIZE 62, 10 OF oWizard:oMPanel[3] PIXEL
oChkIWiz:blClicked := {|| AEval( aWiz,{|x,y| x[1] := !x[1]}), lChkTWiz := (Ascan(aWiz,{|x|!x[1]}) == 0), oChkTWiz:Refresh()}

// PANEL 4
//cria um novo passo (janela) para o wizard
CREATE PANEL oWizard HEADER "Configurações" MESSAGE "Selecione as configurações para a geração do arquivo." PANEL;
BACK {|| oWizard:nPanel := 4, .T.} NEXT {|| .T.} ;
FINISH {|| If(Empty(cGet3) .Or. cGet3 == 0, (MsgStop('Informe o conteúdo para o Get3'), .F.), (lWiz := .T., .T.)) } EXEC {|| .T.}
@ 010, 010 TO 125,280 OF oWizard:oMPanel[4] PIXEL
@ 20, 15 SAY oSay3 VAR "Get3: " OF oWizard:oMPanel[4] PIXEL
@ 20, 35 GET oGet3 VAR cGet3 PICTURE "9999" OF oWizard:oMPanel[4] SIZE 40,009 PIXEL

If __lIsP12
owizard:omodal:lescclose:=.F.
owizard:omodal:oowner:lescclose:=.F.
Else
oWizard:oDlg:lEscClose := .F.
Endif
ACTIVATE WIZARD oWizard CENTERED VALID {|| .T. }

If lWiz
MsgAlert("Executa a rotina de processamento após a seleção dos dados no Wizard")
EndIf
Return

Static Function ApSxVerChk(lChkTudo,aAlias,oLbx,oChk)
Local nI
Local nCount := 0
Local nSizenSize := len(aAlias)

For nI := 1 to nSize
If !aAlias[nI,1]
nCount++
EndIf
Next

If nCount > 0
lChkTudo := .F.
Else
lChkTudo := .T.
EndIf

oLbx:Refresh()
oChk:Refresh()

Return lChkTudo