Você está aqui: Delphi ::: Dicas & Truques ::: Gráficos |
Meus desenhos e gráficos desaparecem quando o formulário é redesenhado. O que fazer?Quantidade de visualizações: 11877 vezes |
Quando estamos desenhando gráficos ou imagens na superfície do formulário ou qualquer outro controle em Delphi podemos perceber que tais desenhos são apagados quando o formulário é minimizado e maximizado ou sobreposto por outro formulário e novamente exibido. Para evitar que isso aconteça, qualquer desenho deve ser feito no evento OnPaint do formulário ou controle desejado. Note que este evento é disparado antes que os controles (botões, caixas de texto, etc) sejam desenhados ou redesenhados no formulário). Veja um exemplo no qual usamos o evento OnPaint do formulário para desenhar uma linha vertical no mesmo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.FormPaint(Sender: TObject); begin // este trecho de código mostra como desenhar uma // linha vertical no formulário // vamos obter o canvas do formulário with Form2.Canvas do begin // vamos mover a caneta para as coordenadas x = 20; y = 20 MoveTo(20, 20); // vamos desenhar uma linha no formulário partindo // das coordenadas anteriores até as coordenadas // x = 300; y = 20 LineTo(300, 20); end; end; Agora o desenho é feito todas as vezes que o formulário for redesenhado pelo Windows. Há, contudo, casos nos quais queremos forçar o redesenho do formulário, ou seja, queremos disparar o evento OnPaint. Para isso só precisamos chamar o método Repaint() do componente no qual o desenho vai ser efetuado. Este método chama o método Invalidate() e então o método Update() para forçar o redesenho. Para ver um exemplo do uso do método Repaint(), siga os seguintes passos: a) Vá na seção de declaração de variáveis globais e declare as seguintes variáveis: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- private { Private declarations } x, y: Integer; b) Coloque o código abaixo no evento OnCreate do formulário: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.FormCreate(Sender: TObject); begin x := 10; y := 10; end; c) Agora coloque o código abaixo no evento OnClick de um botão: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.Button1Click(Sender: TObject); begin // força o redesenho do formulário Repaint; end; d) Finalize colocando o código abaixo no evento OnPaint do Form: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm2.FormPaint(Sender: TObject); begin with Form2.Canvas do begin // posiciona a caneta de desenho MoveTo(x, y); // vamos obter as novas coordenadas x e y; x := Random(500); y := Random(500); // vamos desenhar a linha LineTo(x, y); end; end; Execute a aplicação e experimente clicar no botão várias vezes. Você verá que a cada clique a linha anterior é apagada e uma nova linha é desenhada em coordenadas aleatórias. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: VCL - Visual Component Library ::: TEdit |
Como obter a quantidade de caracteres em um TEdit do Delphi usando a função GetTextLen()Quantidade de visualizações: 12438 vezes |
Em algumas ocasiões nós precisamos descobrir a quantidade de caracteres contidos em uma caixa de texto do tipo TEdit. Para isso podemos usar o método GetTextLen(), definido originalmente na classe TControl. Esta função retorna um valor inteiro contendo o tamanho do texto da caixa de texto. Veja um exemplo do uso do método GetTextLen() no trecho de código a seguir: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var tamanho: Integer; begin // vamos obter a quantidade de caracteres no TEdit tamanho := Edit1.GetTextLen(); // vamos mostrar o resultado ShowMessage('O Edit contém ' + IntToStr(tamanho) + ' caracteres.'); end; Ao executar este exemplo você terá um resultado parecido com: O Edit contém 5 caracteres. |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como obter a quantidade de caracteres em uma palavra ou texto usando a função Length() do DelphiQuantidade de visualizações: 20764 vezes |
Em algumas situações precisamos saber o tamanho de uma string, ou seja, quantos caracteres ela contém. Isso pode ser feito por meio da função Length(). Veja:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var nome: string; // declara uma variável do tipo string tamanho: integer; // declara uma variável do tipo inteiro begin nome := 'Osmar'; // vamos obter a quantidade de caracteres na string tamanho := Length(nome); // mostra o resultado ShowMessage('A string contém : ' + IntToStr(tamanho) + ' caracteres'); end; Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como verificar se um arquivo existe usando a função FileExists() da unit SysUtils do DelphiQuantidade de visualizações: 19729 vezes |
Quando estamos trabalhando com arquivos, é sempre uma boa idéia checar se um arquivo já existe antes de permitir que nosso código tente criar outro arquivo com o mesmo nome. Em Delphi a existência de um arquivo pode ser verificada por meio do uso da função FileExists(), na unit SysUtils. Esta função recebe o caminho e nome do arquivo e retorna true se ele existir, e false caso contrário. Veja um trecho de código no qual testamos se um determinado aqui já existe no sistema: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var arquivo: string; begin // diretorio e nome do arquivo arquivo := 'C:\arquivo de codigos\dados.txt'; // vamos verificar se o arquivo existe no caminho especificado if FileExists(arquivo) then ShowMessage('O arquivo existe') else ShowMessage('O arquivo NÃO existe'); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Vamos testar seus conhecimentos em Hidrologia |
(Udesc 2016) "Por meio da interligação dos reservatórios por um canal, o chamado modelo de usina a fio d'água permitiu que Belo Monte ocupasse uma área 60% menor do que a prevista no projeto original. A mudança garantiu que nenhuma aldeia indígena próxima ao empreendimento fosse inundada e a hidrologia do rio ________________, preservada. A piracema também não foi comprometida, graças à colocação de escadas de peixes que preservam o equilíbrio da fauna aquática do rio." Disponível em http://www.brasil.gov.br/governo/2016/05/dilma-inaugura-usina-hidreletrica-de-belo-monte, acessado em agosto de 2016. O nome do rio que completa corretamente a lacuna do texto acima é: A) Xingu. B) Madeira. C) Teles Pires. D) Juruá. E) Guaporé. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O código de ética profissional: Concorrência A estrutura de mercado denominada "livre concorrência" tem como principal característica a competição empresarial de maneira correta, transparente e honesta. Nesse ambiente, é necessária a regulamentação da economia por parte do Estado, pois isso gera benefícios aos consumidores. Marque a alternativa que apresenta os benefícios decorrentes da regulamentação. A) A coletividade passa a contar com mais opções de produtos importados, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. B) A coletividade passa a contar com mais opções de produtos, preços e menos rigor na qualidade, além de oferecer às empresas um ambiente econômico saudável. C) A coletividade passa a contar com mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico monopolista. D) A coletividade passa a contar com mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. E) Os Estados menos desenvolvidos passam a contar com isenção de impostos, mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Perfil em aço O perfil de aço apresenta diversas características e uma infinidade de composições que podem permanecer resistentes por meio da conexão de diferentes peças mediante conexões. A esse respeito, assinale a alternativa que indica corretamente o elemento de conexão de perfis de aço que oferece a possibilidade de união das peças de uma moldura de aço como se fosse um todo monolítico. A) Rebite. B) Pinos de alta resistência. C) Pinos de aço-carbono. D) Pinos de controle de tensão. E) Solda. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Água Fria: Reservatórios Sobre o projeto de reservatórios de água fria, assinale a alternativa correta: A) O volume mínimo do reservatório para uso doméstico, salvo o volume do combate a incêndio, deve ser, no mínimo, o necessário para 3 dias de consumo. B) O reservatório de água potável não deve ser enterrado em hipótese alguma, devido à possibilidade de contaminação proveniente do solo. C) No caso de residência de pequeno porte, é recomendado que a reserva mínima seja de 1000 L. D) Reservatórios de maior capacidade devem ser divididos em dois ou mais compartimentos para permitir operações de manutenção sem haver interrupção na distribuição de água. E) A extremidade da tomada d'água no reservatório (saída para o barrilete de distribuição) deve estar no mesmo nível do fundo desse reservatório. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em AutoCAD Civil 3D |
Qual afirmação é verdadeira em relação aos Survey Points (pontos de levantamento) do AutoCAD Civil 3D? A) Eles podem ser editados na paleta de propriedades. B) Eles possuem um ícone ao seu lado que se parece com um círculo sobreposto por uma cruz. C) Eles não podem ser movidos usando comandos básicos que não sejam específicos do Civil 3D. D) Eles podem ser editados na janela Panorama -> tab Point Editor. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |