Menu

Tradução

Português English Español Français

Desenvolvendo um Conversor de Unidades de Medidas Simples em Delphi

Neste post, vamos desenvolver um conversor de unidades de medidas simples em Delphi.

 

Conversor de Unidades de Medidas
Ilustração de conversão de unidades - Pesos

Introdução

Neste tutorial, vamos desenvolver um conversor de unidades de medidas simples em Delphi. Este projeto é ideal para iniciantes, pois cobre conceitos básicos de desenvolvimento de software, como manipulação de componentes visuais, eventos e conversão de unidades. Vamos abordar passo a passo o desenvolvimento e a explicação do código para que você possa entender e aplicar em seus próprios projetos.

Configurando o Ambiente

  1. Abrindo o Delphi: Abra o Delphi e crie um novo projeto VCL Forms Application.
  2. Configurando o Formulário Principal: Adicione os seguintes componentes ao formulário:
  • TEdit (InputEdit): Para entrada do valor a ser convertido.
  • TComboBox (FromComboBox): Para selecionar a unidade de medida original.
  • TComboBox (ToComboBox): Para selecionar a unidade de medida de destino.
  • TButton (ConvertButton): Para executar a conversão.
  • TLabel (ResultLabel): Para exibir o resultado da conversão.
  • TLabel2 : Para auxiliar no nome do InputEdit. Caption = Digite a unidade a ser convertida.
  • TLabel3 : Para auxiliar no nome do FromComboBox. Caption = Converter de
  • TLabel3 : Para auxiliar no nome do ToComboBox. Caption = Para

Organize os componentes no formulário de forma que fiquem acessíveis e visualmente agradáveis.

Estrutura do Projeto - Conversor de Unidades de Medidas

Vamos configurar o formulário principal para que ele contenha todos os componentes necessários e implementar a lógica de conversão.

Delphi

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    InputEdit: TEdit;
    FromCombobox: TComboBox;
    ToComboBox: TComboBox;
    ConvertButton: TButton;
    ResultLabel: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ConvertButtonClick(Sender: TObject);
  private
    function ConvertUnits(Value: Double; FromUnit, ToUnit: string): Double;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ConvertButtonClick(Sender: TObject);
var
  InputValue, ResultValue: Double;

begin
  // Valida e converte o valor de entrada
  if TryStrToFloat(InputEdit.Text, InputValue) then
  begin
    ResultValue := ConvertUnits(InputValue, FromComboBox.Text, ToComboBox.Text);
    ResultLabel.Caption := FormatFloat('0.0000', ResultValue);
  end
  else
  begin
    ShowMessage('Please enter a valid number.');
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Popula os ComboBoxes com unidades de medida
  FromComboBox.Items.Add('Meters');
  FromComboBox.Items.Add('Kilometers');
  FromComboBox.Items.Add('Centimeters');
  FromComboBox.Items.Add('Inches');
  FromComboBox.Items.Add('Feet');
  FromComboBox.ItemIndex := 0;

  ToComboBox.Items.Add('Meters');
  ToComboBox.Items.Add('Kilometers');
  ToComboBox.Items.Add('Centimeters');
  ToComboBox.Items.Add('Inches');
  ToComboBox.Items.Add('Feet');
  ToComboBox.ItemIndex := 1;
end;

function TForm1.ConvertUnits(Value: Double; FromUnit, ToUnit: string): Double;
const
  MetersToKilometers = 0.001;
  MetersToCentimeters = 100;
  MetersToInches = 39.3701;
  MetersToFeet = 3.28084;
var
  ValueInMeters: Double;
begin
  // Converte a unidade de origem para metros
  if FromUnit = 'Meters' then
    ValueInMeters := Value
  else if FromUnit = 'Kilometers' then
    ValueInMeters := Value / MetersToKilometers
  else if FromUnit = 'Centimeters' then
    ValueInMeters := Value / MetersToCentimeters
  else if FromUnit = 'Inches' then
    ValueInMeters := Value / MetersToInches
  else if FromUnit = 'Feet' then
    ValueInMeters := Value / MetersToFeet
  else
    raise Exception.Create('Unsupported unit');

  // Converte de metros para a unidade de destino
  if ToUnit = 'Meters' then
    Result := ValueInMeters
  else if ToUnit = 'Kilometers' then
    Result := ValueInMeters * MetersToKilometers
  else if ToUnit = 'Centimeters' then
    Result := ValueInMeters * MetersToCentimeters
  else if ToUnit = 'Inches' then
    Result := ValueInMeters * MetersToInches
  else if ToUnit = 'Feet' then
    Result := ValueInMeters * MetersToFeet
  else
    raise Exception.Create('Unsupported unit');
end;

end.
  

Explicação do Código

1- Declaração dos Componentes: Na seção interface, declaramos todos os componentes do formulário, como TEdit, TComboBox, TButton e TLabel. Esses componentes serão usados para interação com o usuário e para exibir o resultado da conversão.

2- Populando os ComboBoxes: No evento FormCreate, populamos os ComboBoxes FromComboBox e ToComboBox com as unidades de medida disponíveis. Também definimos a unidade de origem como "Meters" e a unidade de destino como "Kilometers" por padrão.

Delphi

procedure TForm1.FormCreate(Sender: TObject);
begin
  FromComboBox.Items.Add('Meters');
  FromComboBox.Items.Add('Kilometers');
  FromComboBox.Items.Add('Centimeters');
  FromComboBox.Items.Add('Inches');
  FromComboBox.Items.Add('Feet');
  FromComboBox.ItemIndex := 0;

  ToComboBox.Items.Add('Meters');
  ToComboBox.Items.Add('Kilometers');
  ToComboBox.Items.Add('Centimeters');
  ToComboBox.Items.Add('Inches');
  ToComboBox.Items.Add('Feet');
  ToComboBox.ItemIndex := 1;
end;
  

3- Evento ConvertButtonClick: Este evento é acionado quando o botão “Converter” é clicado. O código verifica se o valor de entrada é um número válido, chama a função ConvertUnits para converter o valor e exibe o resultado no ResultLabel. Se o valor de entrada não for válido, uma mensagem de erro é exibida.

Delphi

procedure TForm1.ConvertButtonClick(Sender: TObject);
var
  InputValue, ResultValue: Double;
begin
  if TryStrToFloat(InputEdit.Text, InputValue) then
  begin
    ResultValue := ConvertUnits(InputValue, FromComboBox.Text, ToComboBox.Text);
    ResultLabel.Caption := FormatFloat('0.00', ResultValue);
  end
  else
  begin
    ShowMessage('Please enter a valid number.');
  end;
end
  

4- Função ConvertUnits: Esta função realiza a conversão de unidades. Primeiro, converte o valor de entrada para metros, e depois converte de metros para a unidade de destino. As conversões são feitas com base em constantes definidas para cada unidade de medida.

Delphi

function TForm1.ConvertUnits(Value: Double; FromUnit, ToUnit: string): Double;
const
  MetersToKilometers = 0.001;
  MetersToCentimeters = 100;
  MetersToInches = 39.3701;
  MetersToFeet = 3.28084;
var
  ValueInMeters: Double;
begin
  if FromUnit = 'Meters' then
    ValueInMeters := Value
  else if FromUnit = 'Kilometers' then
    ValueInMeters := Value / MetersToKilometers
  else if FromUnit = 'Centimeters' then
    ValueInMeters := Value / MetersToCentimeters
  else if FromUnit = 'Inches' then
    ValueInMeters := Value / MetersToInches
  else if FromUnit = 'Feet' then
    ValueInMeters := Value / MetersToFeet
  else
    raise Exception.Create('Unsupported unit');

  if ToUnit = 'Meters' then
    Result := ValueInMeters
  else if ToUnit = 'Kilometers' then
    Result := ValueInMeters * MetersToKilometers
  else if ToUnit = 'Centimeters' then
    Result := ValueInMeters * MetersToCentimeters
  else if ToUnit = 'Inches' then
    Result := ValueInMeters * MetersToInches
  else if ToUnit = 'Feet' then
    Result := ValueInMeters * MetersToFeet
  else
    raise Exception.Create('Unsupported unit');
end;
  

Executando o Projeto

  1. Inserindo um Valor: Execute o programa e insira um valor no InputEdit.
  2. Selecionando Unidades: Selecione a unidade de medida original no FromComboBox e a unidade de medida de destino no ToComboBox.
  3. Convertendo: Clique no botão "Converter". O valor convertido será exibido no ResultLabel.
Veja abaixo a ilustração do projeto:
Ilustração do Projeto- Conversor de Unidades de Medidas.

Código fonte do exemplo

Você pode fazer o download do exemplo do projeto através do repositório do github:

https://github.com/Gisele-de-Melo/conversor-unidade-simples

Conclusão

Desenvolver um conversor de unidades de medidas simples em Delphi é uma excelente maneira de aprender os conceitos básicos da linguagem e familiarizar-se com o ambiente de desenvolvimento. Neste projeto, abordamos a criação de um formulário com componentes visuais, a manipulação de eventos e a implementação da lógica de conversão de unidades.

Através deste exercício, você aprendeu a:

  1. Criar e configurar um novo projeto em Delphi: Iniciando o Delphi, criando um novo projeto e adicionando componentes ao formulário.
  2. Manipular componentes visuais: Utilizando componentes como TEdit, TComboBox, TButton e TLabel para criar uma interface de usuário funcional.
  3. Trabalhar com eventos: Implementando eventos como FormCreate e ConvertButtonClick para interagir com o usuário e executar ações específicas.
  4. Implementar lógica de conversão: Desenvolvendo a função ConvertUnits para realizar a conversão entre diferentes unidades de medida.

Este projeto é um ótimo ponto de partida para entender como construir aplicações mais complexas em Delphi. A medida que você ganha confiança, pode expandir este projeto adicionando mais unidades de medida, implementando verificações de erros mais robustas, ou criando uma interface de usuário mais avançada.

Lembre-se, a prática constante é essencial para se tornar proficiente em qualquer linguagem de programação. Continue explorando novos projetos, experimentando diferentes componentes e funcionalidades, e aprimorando suas habilidades. O Delphi oferece uma vasta gama de possibilidades para desenvolvedores de todos os níveis, e com dedicação, você poderá criar aplicações poderosas e eficientes.

Esperamos que este tutorial tenha sido útil e inspirador para sua jornada no desenvolvimento com Delphi. Continue aprendendo e se desafiando com novos projetos. Bons códigos!

Posts Relacionados



Nenhum comentário:

Postar um comentário

Recursividade em Delphi: Conceitos, Exemplos e Aplicações Práticas

Neste post, você aprenderá quando usar recursividade em Delphi, suas vantagens e desvantagens, além de um exemplo prático implementa...