Você está aqui: Delphi ::: VCL - Visual Component Library ::: TComboBox |
Entenda e aprenda a usar o controle TComboBox em suas aplicações DelphiQuantidade de visualizações: 27674 vezes |
O controle ComboBox (representando pela classe TComboBox) é uma combinação de uma caixa de texto (Edit) com uma lista de itens, a partir da qual um item pode ser selecionado. Geralmente usamos controles ComboBox quando queremos fornecer ao usuário uma série de opções mas dispomos de pouco espaço na janela do aplicativo. Desta forma, ao clicar na setinha do ComboBox, a lista de opções é exibida. Dependendo do estilo do ComboBox, os usuários podem, além de escolher valores já existentes na lista de opções, digitar outros valores no controle. Certifique-se de escolher o estilo adequado de acordo com a funcionalidade que você deseja. A forma mais comum de se colocar um controle ComboBox em um formulário é acessando a aba Standard no Tool Palette. Em seguida localize o controle TComboBox e arraste-o para a posição desejada no formulário. Em tempo de design, itens podem ser adicionados à um ComboBox da seguinte forma: a) Selecione o controle no formulário; b) Pressione F11 para exibir a janela do Object Inspector; c) Localize a propriedade Items e dê duplo-clique em cima do valor TStrings (ou clique no botão ao lado do valor da propriedade; d) A IDE do Delphi exibirá a janela do String List Editor. Adicione os itens que você deseja separando-os com Enter; e) Clique OK e já verá os itens no componente ComboBox. Em tempo de execução itens podem ser adicionados a um ComboBox usando-se a função Add() do objeto Items do ComboBox. A propriedade Items da classe ComboBox é do tipo TString, ou seja, é a responsável por armazenar e permitir a manipulação dos itens de um ComboBox quando estes são do tipo string. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button3Click(Sender: TObject); begin // vamos adicionar três itens ao ComboBox ComboBox1.Items.Add('Goiânia'); ComboBox1.Items.Add('Anápolis'); ComboBox1.Items.Add('Cuiabá'); end; Para mais dicas e truques sobre como tirar o maior proveito deste controle, veja a seção correspondente ao controle ComboBox na categoria VCL (Visual Component Library) do nosso site. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
![]() |
Delphi ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar ponteiros na linguagem Delphi - Aprenda a usar ponteiros em DelphiQuantidade de visualizações: 23855 vezes |
O Delphi, assim como C e C++ permite o uso de ponteiros, uma das ferramentas mais poderosas de programação e presente em códigos mais elaborados, tais como estruturas de dados. Para entender ponteiros, é preciso lembrarmos do conceito de variáveis. Uma variável, em determinados momentos, possui várias propriedades ou atributos, a saber, um nome, um valor e o tipo de dados que poderá ser armazenado na mesma. Uma variável possui também um endereço na memória do computador e o seu nome não é nada mais que um apelido para tal endereço. Ponteiros também possuem um nome, um valor e um tipo de dados. A diferença é que ponteiros, em vez de guardar valores tais como inteiros, strings, caracteres, etc, guardam o endereço de outras variáveis (ou o endereço de outros ponteiros, o que resulta em um ponteiro para um ponteiro). Assim, um ponteiro é uma forma indireta de se acessar o conteúdo de uma outra variável. Veja, por exemplo, as seguintes declarações de variáveis: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- var valor: integer; pvalor: ^integer; Aqui nós temos uma variável valor do tipo Integer e uma variável pvalor que é um ponteiro para um Integer. Veja agora como atribuir valores a estas variáveis: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var valor: integer; pvalor: ^integer; begin // atribui um valor à variável valor valor := 20; // vamos atribuir à pvalor o endereço de valor pvalor := @valor; // vamos usar o ponteiro pvalor para alterar o // valor de valor pvalor^ := 30; // vamos obter o novo valor da variável valor ShowMessage('Valor de valor: ' + IntToStr(valor)); end; Veja que usamos o operador @ para obtermos o endereço da variável valor e guardá-lo no ponteiro pvalor. Em seguida usamos o símbolo ^ para acessar o valor da variável para a qual o ponteiro está apontando. Este processo é chamado de desreferenciamento (dereferencing). Em resumo, o símbolo ^ pode ser usado de duas formas: na frente de um tipo de dados, para indicar que a variável está sendo declarada como ponteiro e após o nome de uma variável do tipo ponteiro para indicar que queremos acessar o valor da variável para a qual o ponteiro está apontando atualmente e não o valor do ponteiro, que seria simplesmente um valor inteiro representando um endereço de memória. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como aplicar cores alternadas às linhas de um TDBGrid do Delphi (efeito zebrinha)Quantidade de visualizações: 9603 vezes |
Em algumas situações gostaríamos de aplicar o efeito zebrinha, ou seja, aplicar cores alternadas às linhas de um controle TDBGrid. Esta técnica é muito útil quando temos grids com várias linhas e queremos facilitar a visualização dos dados por parte dos usuários. A forma mais comum de se aplicar cores alternadas às linhas do DBGrid é por meio do evento OnDrawColumnCell. Veja o trecho de código abaixo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var grid: TDBGrid; linha: Integer; begin // obtém um referência ao DBGrid grid := sender as TDBGrid; // obtém o número da linha atual usando a propriedade // RecNo da classe TDataSet linha := grid.DataSource.DataSet.RecNo; // o número da linha é par? if Odd(linha) then grid.Canvas.Brush.Color := clWhite else grid.Canvas.Brush.Color := clYellow; // vamos terminar de desenhar a célula grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; Execute este código e verá que a primeira linha é pintada de branco, a segunda de amarelo, a terceira de branco e assim por diante. Note que neste código eu não tratei a seleção de células, na qual a cor do texto se iguala ao branco do fundo da célula. Veja mais dicas nesta seção para saber como realizar esta tarefa você mesmo. Esta dica foi escrita e testada no Delphi 2009. |
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como pesquisar e selecionar um item em uma ListBox do DelphiQuantidade de visualizações: 16697 vezes |
O trecho de código abaixo mostra como podemos usar a mensagem LB_SELECTSTRING da Windows API para pesquisar e selecionar um item em uma ListBox. Veja que aqui eu usei a função InputBox() para permitir ao usuário inserir o texto a ser pesquisado. Note também o valor -1 fornecido como wParam para a função SendMessage(). Este valor faz com que a busca se inicie no primeiro item da lista e continue até o final da lista. Veja o código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); var pesquisa: string; begin // vamos solicitar o texto a ser pesquisado na ListBox pesquisa := InputBox('Pesquisar', 'Informe o texto', ''); // vamos pesquisar e selecionar o item encontrado if SendMessage(ListBox1.Handle, LB_SELECTSTRING, - 1, Longint(PChar(pesquisa))) <> LB_ERR then begin ShowMessage('O texto pesquisado foi encontrado no ' + 'índice: ' + IntToStr(ListBox1.ItemIndex)); end else begin ShowMessage('O texto pesquisado não foi encontrado.'); end; end; Note que a busca efetuada por LB_SELECTSTRING não é sensitiva a maiúsculas e minúsculas. Assim, Osmar e OSMAR são tratadas igualmente. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o seno de um número ou ângulo em Delphi usando a função Sin()Quantidade de visualizações: 12838 vezes |
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula: \[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \] Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função Sin() da linguagem Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Seno de 0 = ' + FloatToStr(Sin(0))); Memo1.Lines.Add('Seno de 1 = ' + FloatToStr(Sin(1))); Memo1.Lines.Add('Seno de 2 = ' + FloatToStr(Sin(2))); end; Ao executar este código Delphi nós teremos o seguinte resultado: Seno de 0 = 0 Seno de 1 = 0,841470984807897 Seno de 2 = 0,909297426825682 Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo: ![]() |
Delphi ::: VCL - Visual Component Library ::: TStringGrid |
Como usar o controle TStringGrid em suas aplicações Delphi - O componente TStringGrid do DelphiQuantidade de visualizações: 19262 vezes |
Um objeto da classe TStringGrid representa um controle de grid que pode ser usado em suas aplicações Delphi para simplificar o processo de se lidar com strings e objetos associados a esta. Veja a posição desta classe na hierarquia de classes do Delphi:System.TObject Classes.TPersistent Classes.TComponent Controls.TControl Controls.TWinControl Controls.TCustomControl Grids.TCustomGrid Grids.TCustomDrawGrid Grids.TDrawGrid Grids.TStringGrid Esta classe implementa também as interfaces IInterfaceComponentReference e IInterface. O uso mais frequente de um controle TStringGrid é quando queremos apresentar um conteúdo texto em um formato tabular. Este controle fornece muitas propriedades para controlar a aparência da grid, assim como eventos e métodos que tiram vantagem da organização tabular da grid ao responder às ações do usuário. Para adicionar um controle TStringGrid ao seu formulário você só precisa acessar a aba Additional no Tool Palette, clicar no controle e arrastá-lo para a posição desejada no formulário. Por padrão, um controle TStringGrid contém 5 linhas e 5 colunas. Novas linhas e novas colunas podem ser adicionadas por meio das propriedades RowCount e ColCount da classe TCustomGrid. Cada célula da grid pode ter seu valor definido ou acessado usando-se a propriedade Cells. Veja um trecho de código no qual definimos o conteúdo da célula situada na segunda linha da primeira coluna do TStringGrid: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos definir o conteúdo da célula na segunda linha // da primeira coluna da grid StringGrid1.Cells[0, 1] := 'Osmar J. Silva'; end; Um controle TStringGrid introduz a possibilidade de associar um objeto com cada string na grid. Estes objetos podem encapsular quaisquer informações ou comportamento representado pelas strings apresentadas ao usuário. Se as strings a serem apresentadas na grid representarem valores de campos dos registros de um conjunto de dados (dataset), devemos usar um TDBGrid em vez de um TStringGrid. |
Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em DelphiQuantidade de visualizações: 2642 vezes |
Todos estamos acostumados com o Teorema de Pitágoras, que diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos". Baseado nessa informação, fica fácil retornar a medida do cateto oposto quando temos as medidas da hipotenusa e do cateto adjascente. Isso, claro, via programação em linguagem Delphi. Comece observando a imagem a seguir: ![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos que fazer é mudar a fórmula para: \[a^2 = c^2 - b^2\] Veja que agora o quadrado do cateto oposto é igual ao quadrado da hipotenusa menos o quadrado do cateto adjascente. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo. Veja agora como esse cálculo é feito em linguagem Delphi: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm2.Button1Click(Sender: TObject); var a, b, c: Real; begin c := 36.056; // medida da hipotenusa b := 30; // medida do cateto adjascente // agora vamos calcular o comprimento da cateto oposto a := sqrt(sqr(c) - sqr(b)); // e mostramos o resultado Edit1.Text := 'A medida do cateto oposto é: ' + FloatToStr(a); end; Veja que o cálculo é feito a partir do evento Click de um botão Button1 e o resultado é apresentado na propriedade Text de uma caixa de texto Edit1. Ao executar este código Delphi nós teremos o seguinte resultado: A medida do cateto oposto é: 20,0008783807112 Como podemos ver, o resultado retornado com o código Delphi confere com os valores da imagem apresentada. |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como retornar o índice da coluna da célula atual em um TDBGrid do DelphiQuantidade de visualizações: 10160 vezes |
Em algumas situações precisamos obter o índice da coluna da célula atual, ou seja, a célula que detém o foco no momento em um TDBGrid. Isso pode ser feito por meio da propriedade Col da classe TCustomGrid (e publicada na classe TStringGrid). Como esta propriedade não está publicada na classe TDBGrid (Delphi 2009), o que fazemos é um casting para a classe TStringGrid. Veja um trecho de código no qual usamos o evento Click de um botão para informar o índice da coluna da célula atual: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm3.Button3Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice da coluna da célula atual indice := TStringGrid(DBGrid1).Col; ShowMessage('O índice da coluna da célula atual é: ' + IntToStr(indice)); end; Execute o código e clique no botão. Você verá uma mensagem parecida com: "O índice da coluna da célula atual é: 3". Lembre-se de que o índice da coluna fixa do DBGrid é 0. Esta dica foi escrita e testada no Delphi 2009. |
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Delphi para matemática - Como arredondar valores de ponto-flutuante para cima usando a função Ceil()Quantidade de visualizações: 16783 vezes |
A função Ceil(), presente na unit Math, é útil quando queremos arrendondar valores de ponto-flutuante (valores com casas decimais) para cima, ou seja, para o menor inteiro maior ou igual ao valor fornecido. Veja um exemplo:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- procedure TForm2.Button1Click(Sender: TObject); var valor: Real; resultado: Integer; begin // uses Math valor := 8.3; // vamos arredondar o valor para cima // o resultado será 9 resultado := Ceil(valor); // exibe o resultado ShowMessage('O valor arredondado para cima é: ' + IntToStr(resultado)); end; Note que os valores 8.0001, 8.3, 8.1, 8.99, etc, serão todos arredondados para 9. No entanto, 8.0 é arredondado para 8. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |