Skip to main content

PEX - Configurar Grade com Campo de Auto Incremento

Hoje nativamente a ferramenta DOX ainda não tem o recurso de contador de linhas de uma grade, para isso foi realizado uma forma de se resolver temporariamente esta questão, pois para alguns essa informação visualmente pode fazer diferença.

Para isso utilizaremos apenas 4 formulários:

  1. Grade de dados
  2. Botão "Adicionar": com evento PEX ao sair para adicionar linhas na grade acima
  3. Formulário dissertativo: para o usuário informar o sequencial que será incrementado
  4. Botão "Remover": com evento PEX ao sair para remover as linhas adicionadas na grade.

Conforme imagem do portal:

No formulário de grade de dados desmarque a opção "Permite incluir registros" e "Permite excluir registros". Estas opções é o que permite ao usuário fazer as ações no portal, porém como os botões nativos da grade não executam PEX ao sair, iremos retirar e criarmos os nossos de forma manual.

Na aba "Campos":

Agora, depois de criado o formulário de grade, crie os outros formulários de botão e dissertativa.

Botão "Adicionar". PEX ao sair:

const cs_grade = '1'; var liIdRegistro: Integer; loRegistro: TJSONObject; loNovoRegistro : TJSONObject; liSequencia : Integer; begin //incrementa sequencial liSequencia := 1; for liIdRegistro := 0 to Pred(aoFormularios.GetJSON('1').GetArrayJSON('DADOS').Count) do begin loRegistro := aoFormularios.GetJSON('1').GetArrayJSON('DADOS').GetItemAsJson(liIdRegistro); if loRegistro.GetInt('REGISTROS') >= liSequencia then begin liSequencia := loRegistro.GetInt('REGISTROS')+1; end; end; //insere informações na grade loNovoRegistro := TJSONObject.Create; loNovoRegistro.AddPair('REGISTROS', IntToStr(liSequencia)); // Adicione aqui os demais campos que desejar aoFormularios.GetJSON(cs_grade).GetArrayJSON('DADOS').Add(loNovoRegistro); end;