#include "protheus.ch"User Function Exemplo()Local nILocal oDlgLocal oGetDadosLocal nUsado := 0Private lRefresh := .T.Private aHeader := {}Private aCols := {}Private aRotina := {{"Pesquisar", "AxPesqui", 0, 1},; {"Visualizar", "AxVisual", 0, 2},; {"Incluir", "AxInclui", 0, 3},; {"Alterar", "AxAltera", 0, 4},; {"Excluir", "AxDeleta", 0, 5}}DbSelectArea("SX3")DbSetOrder(1)DbSeek("SA1")While !Eof() .and. SX3->X3_ARQUIVO == "SA1"If X3Uso(SX3->X3_USADO) .and. cNivel >= SX3->X3_NIVEL nUsado++ Aadd(aHeader,{Trim(X3Titulo()),; SX3->X3_CAMPO,; SX3->X3_PICTURE,; SX3->X3_TAMANHO,; SX3->X3_DECIMAL,; SX3->X3_VALID,; "",; SX3->X3_TIPO,; "",; "" })EndIfDbSkip()EndAadd(aCols,Array(nUsado+1))For nI := 1 To nUsado aCols[1][nI] := CriaVar(aHeader[nI][2])NextaCols[1][nUsado+1] := .F.DEFINE MSDIALOG oDlg TITLE "Exemplo" FROM 00,00 TO 300,400 PIXELoGetDados := MsGetDados():New(05, 05, 145, 195, 4, "U_LINHAOK", "U_TUDOOK", "+A1_COD", .T., {"A1_NOME"}, , .F., 200, "U_FIELDOK", "U_SUPERDEL", , "U_DELOK", oDlg)ACTIVATE MSDIALOG oDlg CENTEREDReturn User Function LINHAOK()ApMsgStop("LINHAOK")Return .T. User Function TUDOOK()ApMsgStop("LINHAOK")Return .T. User Function DELOK()ApMsgStop("DELOK")Return .T. User Function SUPERDEL()ApMsgStop("SUPERDEL")Return .T. User Function FIELDOK()ApMsgStop("FIELDOK")Return .T.
Observação
A função indicada no parâmetro cDelOk irá receber como parâmetro uma variável numérica, que irá indicar a origem da chamada, sendo:
nOrigem = 0 - Origem não definida, possivelmente uma chamada direta do método DelOk
nOrigem = 1 - Codeblock bDelOk, chamada pela ação de exclusão do objeto
nOrigem = 2 - Codeblock bDelete, validação da exclusão
Exemplo de uso:
Function MyDelOk( nOrigem )
local lRet as logical
default nOrigem := 0
lRet := .T.
If nOrigem == 0
FwAlertInfo( 'Origem não definida, possivelmente uma chamada direta do método DelOk' )
ElseIf nOrigem == 1
FwAlertInfo( 'Origem: bDelOk, chamada pela ação de exclusão do objeto' )
ElseIf nOrigem == 2
lRet := FwAlertYesNo( 'Origem: bDelete, Aqui valida se vai executar a exclusão... Exclui o registro?' )
EndIf
Return lRet