DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Integrando Aplicações Delphi com JavaScript

Podemos utilizar o nosso poderoso Delphi para se interagir com aplicações web, um exemplo pratico disso e utilizar o google maps em nossa aplicações

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Por Marcelo Fernandes,Marcos George

Bem pessoal, neste artigo mostarei alguns dos fantásticos recursos do dephi: como se pode interagir com suas aplicação web. Principalmente nos dias de hoje em que as aplicações web estão ganhando cada vez mais espaço no mercado, é importante entender como interagir e usar todo o poder do javascript, e como sua aplicação win32 feitas em delphi podem se beneficiar desta tecnologia.

Quais as vantagens

Nossas aplicações acessando recursos de web site  e até mesmo interagindo com eles. Um exemplo prático disso seria uma aplicação utilizando os maravilhosos recursos do Google maps.

Um exemplo prático

Bem, vamos  trabalhar diretamente com as API do Google maps.

  1. Crie uma aplicação normal no Delphi

Agora, vamos ta utilizar o componente  TWebBrowser da paleta internet, temos que adicionar a  uses  MSHTML para termos acesso  às interfaces para manipular o HTML e os objetos  dele.

  1. Coloque um componente TWebBrowser no Form;
  2. No evento OnShow do formulário coloque o seguinte:

procedure TfrmPrincipal.FormShow(Sender: TObject);
begin
  WebBrowser1.Navigate(ExtractFilePath(Application.ExeName) + 'google.html');
end;

  1. Bem, no meu caso eu criei um arquivo de HTML que contem as API’s e chamadas de função de javascript para que o Delphi possa chamar.
  2. Adicione  um TEdit e um TButton e no evento  OnClick do Button1  fazemos  assim :

procedure TfrmPrincipal.Button1Click(Sender: TObject);
Begin
 with WebBrowser1.Document as IHTMLDocument2 do
    parentWindow.execScript('showAddress("' + edBuscar.Text + '")', 'javascript')
end;


Isto fará com que  o nosso WebBrowser1 chame  e execute esta função javascript que esta dentro do nosso HTML.

function showAddress(address) {
      if (geoCoder) {
        geoCoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " não encontrado"); 
          } else {
              map.setCenter(point, 13);
            }
          }
        );
      }
    }

Esta função chama  a API do Google Maps para localizar um endereço e centralizar na nossa tela.

Isso e umas das coisas que podemos  estar colocando em nosso sistemas. Podemos traçar rotas  tão facilmente como localizar uma rua. Vamos à prática:

Coloque dois TEdit  na tela e mais um TButton  e no OnClick  coloque as linhas abaixo:

procedure TfrmPrincipal.Button2Click(Sender: TObject);
begin
 with WebBrowser1.Document as IHTMLDocument2 do
    parentWindow.execScript('setDirections("' + Edit1.text + '","' + edit2.Text + '")', 'javascript');
end;

Bem podemos ver que não mudou muita coisa e sim a função que foi chamado do Java script

function setDirections(fromAddress, toAddress) {
  gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale":+"en_US" , "getSteps":true});
}

Com isso ira traçar uma rota no mapa. “Legal!” você deve estar dizendo, “e agora, eu consigo pegar o trajeto igual tem no Google maps?”. Sim, conseguimos pegar esta rota também.

Adicione um Tmemo e mais um TButton na tela  e no OnClick adicione as linhas abaixo:

procedure TfrmPrincipal.Button3Click(Sender: TObject);
begin
  with TWebNav.Document as IHTMLDocument2 do
    with body.all as IHTMLElementCollection do
      with item('directions', 0) as HTMLDivElement do
        Memo1.Text := innerText;
end;

Como funciona? Através das interfaces do MSHTML temos acesso também aos elementos do HTML , neste caso, temos no nosso HTML um <div> no qual a API do Google Maps retornou as informações da rota, e através deste HTMLDivElement  conseguimos ler estas infomações e trazer para a nossa aplicação. Aqui trouxemos a informação para dentro do Memo1.

Outras possibilidades de uso

Agora que temos uma idéia de como funciona este recurso podemos imaginar várias outras possibilidades de uso:

  • você pode ter uma aplicação na web e precisar emitir cupom fiscal. Como? Temos a possibilidade de que sua aplicação traga o resultado em um <div> utilizando Ajax e seu aplicativo ler este <div>  e emitir um cupom
  • Você tamém poderá integrar  sua aplicação web com outros recursos da máquina.
  • Integração de seu sistema com websites  que contém informações ou até mesmo exportar informações para estes websites acessando suas funções javascript.

Conclusão

Com as idéias apresentadas e usando um pouco de criatividade você poderá expandir bastante o poder de sua aplicação web e continuar utilizando a linguagem que você já domina – o poderoso Delphi.


Links
http://www.cryer.co.uk/brian/index.htm


Marcelo Fernandes
Analista, programador e arquiteto na Questor Sistema. Trabalha com Delphi, desde da versão 5, e Firebird, Mysql desenvolvendo aplicações cliente-servidor. Formado em Tecnologia de Processamento de dados pela Cesumar, na cidade de Maringá-PR.
O que você achou deste post?

    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Adriano Santos
Olá Marcelo,

Gostaria de conversar contigo a respeito da produção de artigos para a revista ClubeDelphi.
Vi seu artigo e gostei bastante.

Poderia entrar em contato comigo?

E-mail e Msn: falecom@adrianosantos.pro.br

Abs

Adriano Santos

[há +1 ano] - Responder

 

Adriano Santos
Olá Marcelo,

Tudo jóia? Sou editor chefe da revista ClubeDelphi e o Gladstone me passou seu contato. Me informou que você tem interesse em escrever artigos, certo?

Vamos conversar a respeito? Quais assuntos você domina e deseja falar?
Meu adicione no msn para que possamos conversar se for o caso.

falecom@adrianosantos.pro.br

Adriano Santos
Director X-35 Consulting and Development
IT Manager SoftPark
Chief Editor Magazines ClubeDelphi && WebMobile
www.delphitodelphi.blogspot.com
www.adrianosantos.pro.br
www.devmedia.com.br
www.dug-sp.com
[há +1 ano] - Responder

 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03