...
Para os browses construídos utilizando tabela temporária "TRB", será exigida alteração para informar os nomes das colunas que precisam ser ofuscadas. Esta alteração será adicionar um array com o formato lista de campos ({“CAMPO1”,“CAMPO2”}) na chamadas da função que monta o browse.
Exemplo:
Bloco de código |
---|
language | text |
---|
linenumbers | true |
---|
|
aOfuscar := {"CAMPO1","CAMPO2"} |
...
MBrowse(par1, par2…. aOfuscar) |
...
MarkBrow(par1, par2…. aOfuscar) |
06. O QUE PRECISA SER FEITO COM FWMBROWSE E FWMARKBROWSE?
...
- A construção baseada em tabela temporária, precisa da informação da lista dos campos através de método e não parâmetro (o que diferencia das funções que recebe por parâmetro).
Exemplos:
Bloco de código |
---|
language | text |
---|
linenumbers | true |
---|
|
oBrowse := FWMBrowse():New() |
...
oBrowse:SetAlias(cAliasTmp) |
...
oBrowse:SetTemporary(.T.) |
...
...
aAdd(aBrowse, {"Filial","FILIAL","C",006,0,"@!",,,,,,"FILIAL"}) |
...
aAdd(aBrowse, {"Numero","NUMERO","C", 006, 0, "@!",,,,,,"NUMERO"}) |
...
aAdd(aBrowse, {"Tipo","TIPO","C", 001, 0, "@!",,,,,,"TIPO"}) |
...
aAdd(aBrowse, {"Cliente","CLIENTE","C", 006, 0,"@!",,,,,,"CLIENTE"}) |
...
aAdd(aBrowse, {"Pedido Exp.","PEDEXP","C",020,0,"@!",,,,,,"PEDEXP"}) |
...
aEval := {"FILIAL", "NUMERO", "TIPO", "CLIENTE", "PEDEXP"} |
...
// Define os campos que serão ofuscados |
...
aOfuscar := FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval) |
...
oBrowse:SetObfuscFields(aOfuscar) |
...
oBrowse:SetFields(aBrowse) |
...
No código de demonstração acima, a variável aBrowse é a lista de colunas para o browse, e a partir dela que são descobertas as colunas para serem ofuscadas.
...
Lista de campos para ofuscar
Bloco de código |
---|
language | text |
---|
linenumbers | true |
---|
|
oBrowse := FWBrowse():New() |
...
...
oBrowse:SetArray(aDataArray) |
...
aEval := {"C5_NUM", "C5_CLIENTE", "C5_LOJA", "C5_DATA", "C5_PEDEXP", "C5_TIPO", "C5_CONDPG"} |
...
aOfucar:= {} //FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval) |
...
aAdd( aOfucar, "C5_CLIENTE" ) |
...
aAdd( aOfucar, "C5_PEDEXP" ) |
...
aAdd( aOfucar, "C5_TIPO" ) |
...
oBrowse:SetObfuscFields(aObsFields) |
...
oBrowse:SetColumns(aColumns) |
...
Coluna marcada para ofuscar
Bloco de código |
---|
language | text |
---|
linenumbers | true |
---|
|
oBrowse := FWBrowse():New() |
...
...
...
...
aOfuscar := FwProtectedDataUtil():UsrNoAccessFieldsInList(aEval) |
...
For nContFlds := 1 To Len( aFields ) |
...
...
lObfuscate := aScan(aOfuscar,{|x|x:cField == aFields[nContFlds]}) > 0 |
...
AAdd( aColumns, FWBrwColumn():New() ) |
...
aColumns[nCol]:SetData(&("{||(cTemp)->"+aFields[nContFlds]+"}")) |
...
aColumns[nCol]:SetData(&("{||(cTemp)->" + aFields[nContFlds]+"}")) |
...
aColumns[nCol]:SetTitle( aFields[nContFlds] ) |
...
aColumns[nCol]:SetSize( 15 ) |
...
aColumns[nCol]:SetID( aFields[nContFlds] ) |
...
aColumns[nCol]:SetObfuscateCol( lObfuscate ) |
...
...
oBrowse:SetColumns(aColumns) |
...
HTML |
---|
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after {
background: #FF9900; !important
}
.menu-item.active-tab {
border-bottom: none !important;
}
</style>
|