Post: Grid com Canvas

Alessandro Medeiros

Fala ai Radizeiros e Radizeiras, tudo bem com vocês?

Quantas vezes você quis pintar uma Grid usando o canvas e não encontrou nenhum material que lhe auxilie nisso, ou até mesmo tentou e não gostou do resultado.

Em nosso post anterior mostrei de como criar um layout responsivo, hoje estarei mostrando como pintar uma Grid em nosso PDV deixando com uma aparência que encante os clientes.

Iremos criar algumas ações para que possamos preencher nossa Grid, como você pode observar na imagem abaixo.

Essa Grid não é uma Grid comum, nós não temos esse tipo de DBGrid, StringGrid dentro do Delphi, e formatar isso dentro do Delphi da muito trabalho.

Iremos usar um recurso do Delphi que está inserido nele desde do Delphi 1, que é o Canvas.

Vamos lá?

Iremos utilizar o Canvas para pintar essas informações na tela.

Com nosso projeto aberto, irei acrescentar um Panel, e será nele que iremos criar nossa Grid.

Criaremos um método que irá pintar a Grid em nosso Panel adicionado no projeto.


procedure TForm1.pintarheader;
begin
    with TControlCanvas.Create do
    begin
        Control := Panel11; //Componente irá ser pintado
        Font.Color := RGB(80, 80, 80); //Cor da fonte
        Font.Size := 11; //Tamanho da fonte
        Font.Name := 'Segoe UI Light'; //Tipo da fonte
        Font.Style := [fsBold]; //Estilo da fonte
        TextOut(10, cont, 'Código'); //posição x e y, e valor a ser pintado.
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(140, cont, 'Descrição');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(Panel11.Width - 230, cont, 'Qnt');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(Panel11.Width - 170, cont, 'Vr.Unit');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(24, 127, 222);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        Font.Style := [fsBold];
        TextOut(Panel11.Width - 100, cont, 'Total');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Rectangle(10, cont + 30, Panel11.Width - 10, cont + 31);
        Free;
    end;
   
    cont := cont + 40;
end;

Com o código acima você pode observar que estamos criando o Canvas e esse cara que é o responsável por pintar, desenhar qualquer tipo de informação na tela na VCL.

E esse Canvas irá pintar informações dentro do Panel, onde foi definido em qual componente irá ser desenhado.

Em seguida definimos a cor da fonte, o tamanho, tipo da letra, estilo, e qual a posição x e y, e qual é o valor que irá ser pintado, como você pode ver nas primeiras linha comentários informando cada ação.

Dessa forma já possuímos o cabeçalho da nossa Grid, e agora iremos implementar um método que irá registrar os produtos.


procedure TForm1.pintarproduto;
begin

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(24, 127, 222);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        Font.Style := [fsBold];
        TextOut(10, cont, '1234567890123');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(140, cont, 'Arroz Branco');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(Panel11.Width - 230, cont, '1,000x');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(80, 80, 80);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        TextOut(Panel11.Width - 170, cont, 'R$ 13,00');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Font.Color := RGB(24, 127, 222);
        Font.Size := 11;
        Font.Name := 'Segoe UI Light';
        Font.Style := [fsBold];
        TextOut(Panel11.Width - 100, cont, 'R$ 13,00');
        Free;
    end;

    with TControlCanvas.Create do
    begin
        Control := Panel11;
        Rectangle(10, cont+30, Panel11.Width - 10, cont+31);
        Free;
     end;

     cont := cont + 40;
end;

Basicamente o mesmo código que usamos para desenhar o cabeçalho.

Agora dentro do evento OnKeyPress do formulário chamamos esses métodos, e ao clicarmos em qualquer tecla teremos os registros desenhados no nosso Panel.

A cada clique ele já cria o cabeçalho, logo em seguida já vai lançando os produtos em nossa list.

E de forma fácil e simples temos um layout responsivos, desenhando uma lista dos produtos na tela.

Dessa forma deixamos nosso PDV com uma cara mais atraente onde encanta nossos clientes, tudo isso usando funções nativas do próprio Delphi.

Neste post você aprendeu como trabalhar com o Canvas, e com esse pequeno exemplo você pode fazer diversas coisas em seus projetos.

Em falar de layout e designer responsivo, eu inicio hoje a 4ª semana de interfaces em Delphi, e nesta semana estarei disponibilizando 4 videos onde iremos mostrar na pratica como melhorar o visual do seu software e poder encantar seu clientes.

São 4 aulas totalmente grátis, isso mesmo 0800, basta clicar no link abaixo e fazer parte do grupo vip do WhatsApp e você receberá os links com para as aulas que estão sendo disponibilizadas essa semana.

CLIQUE AQUI E FAÇA PARTE DO NOSSO GRUPO VIP DA SEMANA DE INTERFACES EM DELPHI.

 

Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Grid com Canvas, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Grid com Canvas, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2022 – Todos os direitos reservados