4D View v16PV ADD DYNAMIC FIELDS |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D View v16
PV ADD DYNAMIC FIELDS
|
PV ADD DYNAMIC FIELDS ( area ; master ; tabelas ; campos ; metodos ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
area | Inteiro longo |
![]() |
Área 4D View | |||||
master | Inteiro |
![]() |
Número de tabela primária | |||||
tabelas | Array inteiro |
![]() |
Array de números de tabelas | |||||
campos | Array inteiro |
![]() |
Array de números de campos | |||||
metodos | Array string |
![]() |
Array dos nomes de métodos de chamada de retorno | |||||
O comando PV ADD DYNAMIC FIELDS adiciona em area, um bloque de linhas correspondentes aos valores dos campos definidos por tabelas e campos para a seleção atual da tabela definida pelo master, a partir da célula A1. Se as colunas dinâmicas já foram definidas em area, o novo bloque será inserida a partir da linha 1 da primeira coluna disponível. Os valores dos campos podem ser modificados diretamente desde 4D View utilizando as células correspondentes.
O resultado está sempre presente verticalmente (como colunas, assim como elementos de arrays tabelas, campos e metodos).
Nota: Se uma área de arrays dinâmicos foi inserida na área 4D View utilizando o comando PV ADD DYNAMIC ARRAYS, se elimina e se substitui pelos campos dinâmicos.
Para toda coluna, a operação pode afetar a um array relacionado a tabela master por uma relação. Este último deve ser de tipo automático (tipo) e passar do array primário ao array do campo para mostrar. Na estrutura tradicional de faturas e de linhas de faturas, permite por exemplo recuperar o conteúdo de um campo do array de linhas e também da tabela faturas relativa a uma seleção da tabela de linhas de faturas (tabela primária).
Cada método chamada de retorno recebe seis parâmetros:
$1: Área
$2: Número de coluna
$3: Tipo de array
$4: Ponteiro ao array
$5: Número da primeira linha a (re)desenhar
$6: Número de linhas a (re)desenhar na área
Nota: Se vai compilar a base, deve declarar estes parâmetros, inclusive se não os usa todos.
$5 e $6: quando o usuário desloca as linhas (registros) na area, só as novas linhas mostradas se (re)desenham. Os parâmetros $5 e $6 permitem conhecer as linhas concernentes.
O desenvolvedor deve encher o array de métodos de chamada de retorno. 4D View usará esse array para encher a coluna calculada. Não há nenhum valor devolvido ($0).
PV ADD DYNAMIC FIELDS conserva um link dinâmico com os campos passados como parâmetros. Como resultado, as modificações de valores realizadas na área 4D View se refletem nele(s) campo(s) e vice-versa.
Notas:
Este exemplo mostra uma tabela editável incluída em um formulário de entrada (com 4D View, esta operação é muito fácil). Modificaremos os campos da tabela de contatos relacionados ao cliente atual, com suas funções (tabela relacionada) e as iniciais de cada contato (coluna calculada).
ARRAY INTEGER($TablesArray;4) `Números das tabelas
ARRAY INTEGER($FieldsArray;4) `Números dos campos
ARRAY STRING($MethodsArray;4) `Nomes dos métodos de chamada
`Coluna 1: nome do contato
$TablesArray{1}:=Table(->[Contacts])
$FieldsArray{1}:=Field(->[Contacts]ContactName)
$MethodsArray{1}:=""
`Coluna 2: nome do contato
$TablesArray{2}:=Table(->[Contacts])
$FieldsArray{2}:=Field(->[Contacts]ContactFirstname)
$MethodsArray{2}:=""
`Coluna 3: título do contato (linked table)
$TablesArray{3}:=Table(->[Titles])
$FieldsArray{3}:=Field(->[Titles]Label)
$MethodsArray{3}:=""
`Coluna 4: número de ordem/ total (coluna calculada)
$TablesArray{4}:=0
$FieldsArray{4}:=Is text `Resultado
$MethodsArray{4}:="CallMethod"
RELATE MANY([Clients]Code) `Recupera os contatos
PV ADD DYNAMIC FIELDS(Area;Table(->[Contacts]);$TablesArray;$FieldsArray;$MethodsArray)
O código do método projeto CallMethod é o seguinte:
C_LONGINT($1) `Área 4D View
C_LONGINT($2) `Número de coluna
C_LONGINT($3) `Tipo de array
C_POINTER($4) `Ponteiro a este array
C_LONGINT($5) `Primeira linha da área dinâmica
C_LONGINT($6) `Número de linhas que podem ser mostradas na área
GOTO SELECTED RECORD([Contacts];$5)
For($i;1;$6)
$4->{$i}:=Substring([Contacts]ContactFirstname;1;1)+Substring([Contacts]ContactName;1;1)
NEXT RECORD([Contacts])
End for
PV ADD DYNAMIC ARRAYS
PV CLEAR DYNAMIC COLUMNS
PV FIELD TO CELLS
PV SET CELL FIELD
Produto: 4D View
Tema: PV Valor célula
Número
15900
Criado por: 4D View 6.8
4D View Linguagem ( 4D View v16)