Você poderá definir ATRIBUTOS e/ou MÁSCARAS para os campos que serão exibidos no GRID sem adicionar uma linha de código e sem adicionar os campos no FIELDS EDITOR da respectiva query.


Exemplo sem herança do frmBaseCRUD


Veja o frmFISHFACT para aplicar as funções necessárias:


- Evento dbgFishDrawColumnCell

- Evento UniFrameCreate

- Evento UniFrameReady


Exemplo herdado do frmBaseCRUD


Defina seus atributos na propriedade HINT do seu uniDBGRID ou mesmo no evento OnCreate do seu formulário como no exemplo abaixo extraído do "frmCadCLIENTES":


  dbgSearchCRUD.Hint := '[[' +

                        'fieldmasks:' +

                        //'no-paged|' +

                        //'grid-noforcefit|' +

                        'grid-forcefit:10 mobile-v-5 mobile-h-8|' + // v. 4.0.0.0

                        'model-crud:1|' +

                        'grid-resize|' +

                        'firstshow:0|'+  // v. 3.2.0.2

                        'grid-paginator:center|' + // v. 4.0.0.0

                        'código[[' +

                        //'   locked|' +

                        '   title:translate(codigo)|' +

                        '   titlealign:c|' +

                        '   align:c|' +

                        '   width:135 mobile:90]];' +

                        // v. 4.0.0.0

                        // [PT]

                        // alguns campos com strings muito grandes são interpretados pelo unigui como MEMO e não

                        // sao exibidos, este atributo força a exibição do texto

                        // [EN]

                        // some fields with very large strings are interpreted by unigui as MEMO and not

                        // are displayed, this attribute forces the text to be displayed

                        //'memotest[[' +

                        //'   displaymemo|]];' +


                        'nome[[' +

                        '   title:translate(nome)]];' +


                        'email[[' +

                        '     visible:false mobile]];' +


                        'endereco[[' +

                        '     visible:false mobile]];' +


                        'numero[[' +

                        '   visible:false mobile|' +

                        '   align:r]];' +


                        'complemento[[' +

                        '     visible:false]];' +


                        'cidade[[' +

                        '     visible:false mobile]];' +


                        'uf[[' +

                        '     visible:false mobile]];' +


                        'fone1[[' +

                        '     visible:false mobile]];' +


                        'cnpj_cpf[[' +

                        '     visible:false mobile]];' +

                        // v. 4.0.0.0

                        'dtcadastro[[' +

                        '     visible:false]];' +

                        'dtaniversario[[' +

                        '     visible:false]];' +


                        'cep[['+

                        '   visible:false mobile|' +

                        '   align:c|'+

                        '   mask:' + mm.varC_Mask_cep + ']];' +


                        'valor_contrato[[' +

                        '   visible:false mobile|' +

                        '   cls:{<130,color-red,color-black}|'+

                        '   mask:' + PFmtSettings.CurrencyString + ' ' + mm.varC_Mask_float + ']]; ' +


                        'limitecredito[[' +

                        '   visible:false mobile|' +

                        '   cls:color-blue]];' +


                        ']]';




   Formato: campo[[attr:value|attr:value...]];


       obs: 'campo' deve estar de acordo com seu SELECT. Se houver um ALIAS, informe o ALIAS.



fieldmasks:        - indica o início dos atributos

no-paged:          - desativa o paginador

grid-paginator:         - desativa a barra padrão e adiciona a nova barra do RadCORE.

   

   Nota: Durante a renderização, o grid será redimensionado para o tamanho do seu "parent".

         O ideal é por seu grid em um bloco responsivo.


grid-noforcefit:   - não aplica "forcefit"

grid-forcefit:         - Ativa o forcefit de acordo com os parâmtros configurados


   Ex: grid-forcefit:13 mobile-v-5 mobile-h-8

   Aplica o forcefit se houver 13 colunas ou menos e não estiver em MOBILE. 

   Aplica o forcefit se houver 5 colunas ou menos e estiver em MOBILE VERTICAL.

   Aplica o forcefit se houver 8 colunas ou menos e estiver em MOBILE HORIZONTAL.


   Nota: o forcefit não funciona bem em conjunto com o LOCKED


model-crud:0       - é o padrão e é opcional, mas quando indicado é possível customizar o modelo.renderiza o modelo no. 0 para layout do                         CRUD( Ex: frmCadFORNECEDOR / frmCadFUNCIONARIO )

model-crud:1       - renderiza o modelo no. 1 para layout do CRUD( Ex: frmCadCLIENTES )

model-crud:2       - renderiza o modelo no. 2 para layout do CRUD( Ex: frmCadCIDADES )

model-crud:3       - renderiza o modelo no. 3 para layout do CRUD( Ex: frmCadFERIADOS )

                     

grid-resize:       - reconfigurar caso o usuário gire o dispositivo, por exemplo.

firstshow:NN       - Ao acessar o formulário pela primeira vez, serão carregados apenas NN registros

locked             - travar coluna


            title:AAAAAAAA     - define um  título para o campo no grid

title:translate(fn)- define tradução em tempo de execução para a coluna indicada


            charcase:                 - define um  CHAR CASE para o campo no grid


                     variações:


charcase:u         -converte para letras maiúsculas

charcase:l        -converte para letras minúsculas 


            width:NN           - define uma largura para o campo no grid


                     variações:


                       width:20 mobile:45

width:20 mobile-h:45 mobile-v:88

                       width:4% mobile-h:8% mobile-v:12%


                       Ajusta a largura da coluna de acordo com o dispositivo. Quando usado o "%" será calculado pela largura do GRID.

                       

                       


            mask:#,#0.00##     - define uma máscara para o campo no grid


            align:                 - define um  alinhamento para o campo no grid


                     variações:


align:l - alinha a esquerda

align:c - alinha ao centro

align:r - alinha a direita


titlealign:        - define um  alinhamento para o título do campo no grid


variações:


titlealign:l - alinha a esquerda

titlealign:c - alinha ao centro

titlealign:r - alinha a direita


            visible:false      - esconder a coluna


                     variações:


                       visible:false mobile        - oculta a coluna quando estiver acessando a aplicação em MOBILE

visible:false mobile-v        - oculta a coluna quando estiver acessando a aplicação em MOBILE PORTRAIT

                       visible:false mobile-h        - oculta a coluna quando estiver acessando a aplicação em MOBILE LANDSCAPE


                       Existe um problema que ainda não foi resolvido( compreendido ): Na tela de exemplo( frmCadCOMPRAS ) o visible foi 

                       substituído pelo "width" pois gera uma exceção interna no JS.



            cls:color-blue     - aplica uma classe css


            cls:{<0,color-red,color-black} - aplica uma classe css condicional


                       obrigatoriamente a coluna deve ser numéria. Logo se o valor for inferior a '0' é aplicado a classe "color-red", senao, "color-black".


Nota:

   Apesar do recurso ser muito bem vindo, os atributos dinâmicos exigem mais processamento.

   Em desktop até é aceitável mas em MOBILE, o desempenho fica muito comprometido.

   Você pode optar por não utilizar.


Nota

Você pode usar o RC ELEMENTs ou via código, alimentar a propriedade HINT( como nos exemplos acima ). Quando há muitas configurações fica mais prático usar via código.


Colunas com botões de ação dinâmicos


Para mais detalhes, veja o exemplo no frmCadFERIADOS e o frmBaseCRUD ( que interpreta parte da informação definida em seus formulários herados ).


Essas configurações são apenas para demonstrar o recurso do RadCORE e não somente para executar ações de CRUD.


Você pode criar qualquer tipo de ACTION BUTTON e suas propriedades, apenas lembre de adicionar o EVENTO respectivo em seu [gridname]CellClick do seu formulário.




Abaixo ( grid-btn:( new ) também é para demonstrar que podemos configurar a classe CSS e o ícone da action

O recurso de action buttons poderá ainda ser melhorado


[[grid-btn:edo]]                 - Cria os botôes padrão: EDIT, DELETE e OPTIONS. Os eventos já estão configurados para acionar os respectivos botôes


[[grid-btn:(edit)]]                 - Cria o botão padrão: NEW com as configurações padrão.

[[grid-btn:(delete)]]                - Cria o botão padrão: NEW com as configurações padrão.

[[grid-btn:(options)]]        - Cria o botão padrão: NEW com as configurações padrão.


Para mais detalhes, veja o exemplo no frmCadFERIADOS( on Create ).




IMPORTANTE: 

Quando detectado algum action button no formulário herdado de "frmBaseCRUD" o modelo do CRUD também é alterado de acordo com a imagem acima.

A intenção, além de demonstrar o recurso, é dar mais opções para você aplicar em seus projetos.


IMPORTANTE: 

Observando o código é possível adicionar mais críticas. Essas funcionalidades são renderizadas na função rc_GridDrawCell que é chamada no evento OnDrawColumnCell

do seu uniDBGrid.


IMPORTANTE: a partir da versão 2.0.0.154 não é mais necessário a declaração da variável "varC_FieldMasks" no evento OnCreate do seu formulário. É necessário que você ajuste suas configurações para o HINT do respectivo GRID.

Created with the Personal Edition of HelpNDoc: Write EPub books for the iPad