| 4D View v15PV ADD DYNAMIC FIELDS | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D View v15
 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 v15)
	
	
	
	
	
	
	
 Adicionar um comentário
Adicionar um comentário