Resultados 1 a 1 de 1
  1. #1
    Developer C++ tiagoassis's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    127
    Thanks Thanks Given 
    72
    Thanks Thanks Received 
    3
    Thanked in
    3 Posts
    Mencionado
    54 Post(s)
    MEU HUMOR
    Cool
    País
    Brazil

    Post [Curso de Delphi] Aula 05 - By Tiago Assis


    Curso de Delphi - Aula 05
    By Tiago Assis

    Primeiramente quero pedir desculpas aos membros da comunidade PerfectZone por essa grande demora em continuação do curso rápido de Delphi. Tive alguns problemas em minha vida real que me impossibilitaram de frequentar o fórum. Mas aqui estou eu de volta e pronto para seguir nosso curso até a conclusão.

    Cronograma Aula 05
    - Trabalhando com Imagens
    - Trabalhando com DBGrid
    - Exercícios de fixação


    Imagens -> Muitos programadores iniciantes tem uma certa dificuldade de trabalhar com imagens no Delphi, principalmente com imagens que não são nativas da linguagem (referida ao Borland Delphi 7). Nessa aula aprenderemos a trabalhar com imagens de diversas formas, de forma comum, utilizando o compornente OpenPictureDialog, e utilizando banco de dados para armazenar as imagens.

    DBGrid -> Trata-se de um componente que tem por função de exibir informações armazenadas no banco de dados. Com DBGrid aprenderemos a dominar as informações armazenadas em nosso banco de dados e ainda utilizaremos o componente PopupMenu, como recurso adicional para nosso trabalho.

    Mãos a obra!


    Trabalhando com Imagens

    Iremos fazer um sistema simples de cadastro e consulta, envolvendo banco de dados SQL Server e trabalhando com imagens de fundo. Primeiramente utilizaremos a extensão bitmap (*.bmp) e logo após adaptaremos funções para aceitar outros formatos de imagens.

    Levamos em conta que no Delphi 2009 e versões posteriores, todas as extensões de imagens normalmente são compatíveis, mas caso alguma não for, as funções adicionais serão de grande auxílio.

    1 - Crie uma pasta em qualquer local que seja, vamos nomear essa pasta como "Sistema".

    2 - Criaremos uma nova aplicação no Delphi... Menu File > New > Application

    3 - Salve esse projeto na pasta "Sistema" da seguinte forma:
    Unit: U_Principal
    Project: Sistema

    4 - Adicione os seguintes componentes:
    1 MainMenu (Paleta Standard)
    1 PopupMenu (Paleta Standard)
    1 Panel (Paleta Standard)
    1 Dialog (Paleta Dialogs) você poderá utilizar um OpenPictureDialog1 (Paleta Dialogs) se desejar, tanto faz.

    5 - Altere as propriedades (Properties) do Panel da seguinte forma:
    Align = alClient
    BevelOuter = bvNone
    BorderStyle = bsSingle
    Apagar o texto da propriedade "Caption"

    6 - Dê um duplo clique no componente Menu, e adione os seguintes menus:

    Arquivo <enter>
    Cadastro de Clientes <enter>
    Consultas de Clientes <enter>

    7 - Dê um duplo clique no componente Popupmenu e adicione os seguintes menus:

    Alterar Imagem de Fundo <enter>

    8 - Adicione no panel o componente Image (Paleta Additional) e altere suas propriedades (Properties) da seguinte forma:

    Align = alClient
    Picture = Escolha qualquer imagem do seu computador
    PopupMenu = PopupMenu1
    Strelch = True


    Vamos a programação do código de nossa janela principal agora

    Dê um duplo clique no componente PopupMenu1 e logo após um duplo clique em Alterar Imagem de Fundo, irá abrir o view source do menu Alterar Imagem de Fundo. Nesse menu iremos fazer com que o Delphi altere a imagem de fundo do arquivo... Porém essa imagem não será gravada, ou seja, quando fechar e abrir o sistema novamente, voltará a imagem padrão definida inicialmente.

    Código:
    procedure TForm1.AlterarImagemdeFundo1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then begin // Se OpenDialog1 executar então faça
        {Somente Imagens Bitmap (*.bmp)}
        Image1.Picture.LoadFromFile(OpenDialog1.FileName); // Carregar Imagem de acordo com o caminho do opendialog1
      end;
    end;
    Salve o projeto e compile/execute o mesmo (F9)... Faça o teste em alterar a imagem de fundo.

    Esse código acima é um código simples que geralmente aceitará somente extensão Bitmap (*.bmp) para aceitar extensão JPG por exemplo, precisamos fazer da seguinte maneira:

    Código:
    procedure TForm1.AlterarImagemdeFundo1Click(Sender: TObject);
    var
    jpg: TJPEGImage;  // Variável jpg
    begin
    jpg := TJPEGImage.Create;  // Criamos aqui o jpg
      if OpenDialog1.Execute then begin  // Se OpenDialog1 for executado, então faça
        {Se a posição ".jpg" for encontrado na palavra ou localização do OpenDialog1}
        if Pos('.jpg', OpenDialog1.FileName) > 0 then begin
          jpg.LoadFromFile(OpenDialog1.FileName); // Carregar o JPG na variável "jpg"
          Image1.Picture.Assign(jpg); // Carrega e converte o arquivo jpg para bmp (no entendimento do delphi)
        end
        else begin
          {Caso não encontrar a posição ".jpg" na palavra ou localização do OpenDialog1}
          Image1.Picture.LoadFromFile(OpenDialog1.FileName);  // Carrega o Bitmap normalmente
        end;
      end;
    end;


    Armazenando Imagem no Banco de Dados e Trabalhando com DBGrid

    Nessa parte da aula, darei como bonus a forma de armazenar informações, juntamente com a imagem e ao mesmo tempo trabalhar com o DBGrid. Vamos começar !


    1 - No seu atual projeto, crie um novo form (File > New > Form).

    2 - Salve esse form na sua pasta "Sistema" com o nome de "U_Cadastro".

    3 - Adicione nesse form os seguintes componentes:

    1 Panel (Paleta Standard)
    -> Properties
    ----> Align = alClient
    ----> BevelOuter = bvNone
    ----> BorderStyle = bsSingle
    ----> Apague o caption

    2 - Adicione... 1 componente OpenDialog (Paleta Dialog), 1 componente DBImage (Paleta Data Controls), 2 DBEdit (Paleta Data Controls) e 3 Labels (Paleta Standard).

    3 - Monte os labels e os demais componentes da forma desejada, e altere os captions dos labels da seguinte forma: "Foto", "Nome", "Idade".

    4 - Adicione 9 Buttons e altere as propriedades Captions deles da seguinte forma:

    "Importar Imagem", "Voltar", "Avançar", "Novo", "Salvar", "Alterar", "Excluir", "Cancelar", "Sair".

    5 - Crie no seu SQL Server uma database chamada "Sistema" e logo após uma tabela chamada "Clientes" (sobre SQL Server -> [Somente membros podem ver os links. ]).

    6 - Adicione na tabela "Clientes" os seguintes dados:

    Nome - > Varchar(30)
    Idade -> Varchar(5)
    Foto -> Image

    7 - Adicione os componentes: ADOConnection (Paleta ADO), ADODataSet (Paleta ADO), DataSource (Paleta Data Access) e 1 DBGrid (Paleta Data Controls).

    Vamos ao código:

    No Evento OnShow do Form, vamos criar via código a conexão do SQL. Essa conexão será realizada no exato momento que o form de cadastro for executado.

    Código:
    procedure TForm2.FormShow(Sender: TObject);
    begin
    ADOConnection1.LoginPrompt:=false;  // Desabilita a obrigação de digitar login e senha do banco de dados
    {Coneta a database de seu banco de dados}
    ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Sistema;Data Source=(local)';
      try
        {Caso as informações de sua database estiver ok}
        ADOConnection1.Connected:=true;
      except
        {Caso as informações de sua database não estiverem ok}
        ADOConnection1.Connected:=false;
        ShowMessage('Falha ao tentar conectar banco de dados!');
        close;
      end;
    DataSource1.AutoEdit:=false;  // Não permitir editar automaticamente os campos
    DataSource1.DataSet:=ADODataSet1;  // Tabela que o datasource vai puxar
    ADODataSet1.Connection:=ADOConnection1; // Conexão do database
    ADODataSet1.CommandText:='select * from Clientes'; // Tabela selecionada
      try
        {Caso a tabela selecionada existir}
        ADODataSet1.Active:=true;
      except
        {Caso a tabela selecionada ou campo não existir}
        ADOConnection1.Connected:=false;
        ShowMessage('Falha ao tentar conectar banco de dados!');
        close;
      end;
    {Definições de tabela e campo para o campo foto}
    DBImage1.DataSource:=DataSource1;
    DBImage1.DataField:='Foto';
    DBImage1.Stretch:=true;
    {Definições de tabela e campo para o campo Nome}
    DBEdit1.DataSource:=DataSource1;
    DBEdit1.DataField:='Nome';
    {Definições de tabela e campo para o campo Idade}
    DBEdit2.DataSource:=DataSource1;
    DBEdit2.DataField:='Idade';
    {Definições da tabela para o componente DBGrit}
    DBGrid1.DataSource:=DataSource1;
    end;

    No Evento OnClose do Form de cadastro, você digita os seguintes comandos:

    Código:
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    ADODataSet1.Cancel;  // Cancela qualquer operação da tabela
    ADOConnection1.Connected:=false; // Desconecta totalmente o SQL Server
    end;

    Agora vamos aos códigos dos botões!

    Botão Importar Imagem
    Código:
    procedure TForm2.Button1Click(Sender: TObject);
    var
    jpg: TJPEGImage; // Variável JPG
    begin
    jpg:=TJPEGImage.Create;  // Cria o JPG
      if OpenDialog1.Execute then begin  // Se OpenDialog1 for executado, então faça
        {Se a palavra .jpg for encontrada na localização do OpenDialo1}
        if pos ('.jpg', OpenDialog1.FileName) > 0 then begin
          jpg.LoadFromFile(OpenDialog1.FileName); // Carrega o JPG
          DBImage1.Picture.Bitmap.Assign(jpg); // Converte o JPG e adiciona no campo DBImage
        end
        else begin
          {Se a palavra .jpg não for encontrada na localização do OpenDialog1}
          DBImage1.Picture.LoadFromFile(OpenDialog1.FileName); // Puxa a imagem bmp direto para o campo DBImage
        end;
      end;
    end;

    Botão Voltar
    Código:
    procedure TForm2.Button2Click(Sender: TObject);
    begin
    ADODataSet1.Prior; // Volta ao registro anterior da tabela
    end;
    Botão Avançar
    Código:
    procedure TForm2.Button3Click(Sender: TObject);
    begin
    ADODataSet1.Next; // Avança para o próximo registro da tabela
    end;
    Botão Novo
    Código:
    procedure TForm2.Button4Click(Sender: TObject);
    begin
    ADODataSet1.Insert;  // Liberar adição de novo registro na tabela
    end;
    Botão Salvar
    Código:
    procedure TForm2.Button5Click(Sender: TObject);
    begin
    ADODataSet1.Post;  // Salva os dados na tabela
    ShowMessage('Cliente cadastrado com Sucesso!');
    end;
    Botão Alterar
    Código:
    procedure TForm2.Button6Click(Sender: TObject);
    begin
    ADODataSet1.Edit;  // Editar registro da tabela
    ShowMessage('Edição de registro liberada!');
    end;
    Botão Excluir
    Código:
    procedure TForm2.Button7Click(Sender: TObject);
    begin
    ADODataSet1.Delete;  // Deleta o registro da tabela
    ShowMessage('Cliente deletado com sucesso!');
    end;
    Botão Cancelar
    Código:
    procedure TForm2.Button8Click(Sender: TObject);
    begin
    ADODataSet1.Cancel;  // Cancela a operação novo ou editar
    ShowMessage('O registro foi cancelado!');
    end;
    Botão Sair
    Código:
    procedure TForm2.Button9Click(Sender: TObject);
    begin
    close;  // Fechar a janela
    end;

    Pronto, a janela de cadastro de clientes está concluída! O próximo passo é fazer com que a nossa janela principal, execute a janela de cadastro de clientes quando for selecionada no menu. Volte à janela principal pressionando Shift + F12, selecionando-a na lista de forms.

    Na janela principal, pressione "Alt + F11" para adicionar ou ligar a janela cadastros à janela principal.

    Clique no Menu Arquivo e logo após, Cadastro de Clientes. Declare o seguinte código:
    Código:
    procedure TForm1.CadastrodeClientes1Click(Sender: TObject);
    begin
    Form2.Show; // Puxa a janela de cadastro
    end;
    Rode (Compile e execute) seu sistema (pressionando F9).

    Note que a cada cadastro um novo registro aparece no DBGrid... Como podemos ver, o DBGrid lista as informações gravadas no banco de dados.

    Essa é uma noção básica sobre Imagem e DBGrid.


    Download da Source: [Somente membros podem ver os links. ]

    Muito obrigado pela atenção e desculpe a demora galerinha

    Last edited by tiagoassis; 02/07/2015 at 05:24 AM.

    Tiago Assis Softwares

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais