Classe ADVPL de interface que permite a criação de um objeto visual do tipo Wizard (assistente).
Argumento | Tipo | Descriçã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 |
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 | Caracter | Titulo do cabeçalho |
chMsg | Caracter | Mensagem do cabeçalho |
cTitle | Caracter | Título do painel de apresentação |
cText | Caracter | Texto do painel de apresentação |
bNext | Code-Block | Bloco de código a ser executado para validar o botão "Avançar" |
bFinish | Code-Block | Bloco de código a ser executado para validar o botão "Finalizar" |
lPanel | Lógico | |
cResHead | Caracter | Nome da imagem usada no cabeçalho, essa tem que fazer parte do repositório |
bExecute | Code-Block | Bloco de código contendo a ação a ser executada no clique dos botões "Avançar" e "Voltar" |
lNoFirst | Lógico | Se .T. não exibe o painel de apresentação |
aCoord | Array | Array contendo as coordenadas da tela |
Activate()
Exibe o diálogo do Wizard.
oObj:Activate ( < lCenter > , < bValid > , < bInit > , < bWhen > ) --> NIL
lCenter | Lógico | Determina se o diálogo será centralizado na tela |
bValid | Code-Block | Bloco de código a ser executado no encerramento do diálogo |
bInit | Code-Block | Bloco de código a ser executado na inicialização do diálogo |
bWhen | Code-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 |
cMsg | Caracter | Mensagem posicionada no cabeçalho do painel |
bBack | Code-Block | Bloco de código utilizado para validar o botão "Voltar" |
bNext | Code-Block | Bloco de código utilizado para validar o botão "Avançar" |
bFinish | Code-Block | Bloco de código utilizado para validar o botão "Finalizar" |
lPanel | Lógico | Se .T. será criado um painel, se .F. será criado um scrollbox |
bExecute | Code-Block | Bloco 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érico | Nú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érico | Nú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 |
nPanel | Numérico | Número do painel |
lChange | Lógico | Se .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
cMsg | Caracter | Texto da mensagem |
nPanel | Numérico | Número do painel |
lChange | Lógico | Se .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