terça-feira, 30 de novembro de 2010

Multicamadas com DataSnap

Calvin Tang apresenta neste video, publicado no site da embarcadero, todo o poder e flexibilidade dos principais novos recursos da arquitetura DataSnap do Delphi. Vale a pena conferir!

http://edn.embarcadero.com/article/40950

quinta-feira, 11 de fevereiro de 2010

Evento Delphi Conference

O Delphi Conference, realizado no dia 24 de novembro em São Paulo teve vários pontos marcantes e um dos primordiais para o sucesso de qualquer evento é a organização. Parabéns Embarcadero! Tive a oportunidade de rever alguns colegas da comunidade Delphi, conhecer novos desenvolvedores e principalmente estar próximo de um dos principais nomes quando se fala em Delphi: David I. Ele fez a abertura do evento destacando todas as novidades relacionado a nova versão do Delphi e das tecnologias e ferramentas que compõem o All Access da empresa. Em resumo, temos “Acesso Livre e Completo” para desenvolvermos e gerenciarmos os nossos softwares de acordo com a nossa necessidade. Ele também destacou os projetos futuros da empresa, como o Projeto “X” - Cross Plataform Delphi/C++ Builder, ou seja, tem-se planos de rodarmos o Delphi no Mac, Linux, Windows, etc, e o projeto “Comodore”, para suporte total a 64bits! Sempre simpático e bem humorado David finalizou a apresentação agradecendo a oportunidade de estar novamente aqui no Brasil.

As palestras estavam cercadas dos mais variados assuntos, divididas em 4 salas simultâneas. O suporte a REST e JSON pode ser visto com Carlos Gabriel Arpine, através do exemplo de pesquisa de imagens no Google e Yahoo! Na primeira palestra que estive presente, Luiz Rizzato destacou a importãncia dos cuidados que deve-se tomar ao estruturar um sistema através de padrões de projeto e UML. Reaproveitamento, padronização, separação em camadas e balanceamento da estrutura de uma classe são conceitos fundamentais para se ter um projeto escalonável e bem definido. Muitas novidades do Delphi 2010 foram apresentadas, como Touch e Gesture com Andreano Lanusse e Atributos por Marcelo de Souza. Sem dúvida, como a versão 2009, as novidades e os recursos na linguagem auxiliam na produtividade, trazem melhorias para a codificação e possibilitam aplicações modernas, utilizando as tecnologias atuais. Aplicações Web tiveram seu espaço com Luciano Pimenta, no minicurso de uma aplicação de uma loja virtual utilizando ASP.NET e Delphi Prism e com Jackson Gomes, desmitificando o desenvolvimento Web em Win32 através da IntraWeb – Desenvolvimento rápido, ágil e sem mistérios!

Um dos destaques que gostaria de comentar foi a palestra do Rodrigo Leonhardt Silva, sobre Servidor de Aplicação DataSnap para Web no mundo real. Didaticamente perfeito, Rodrigo enumerou alguns dos novos recursos do DataSnap, como suporte ao protocolo HTTP e através de exemplos reais podemos ver o “poderoso” DataSnap servindo clientes heterogêneos como o Flex da Adobe e C# por exemplo, e claro, VCL Web e Win32 nativas através de TCP/IP. Há previsões de extender o framework para outras linguagens e ter acesso nativo ao servidor de aplicação! Não há duvidas, pois não importará a linguagem, o ambiente, a plataforma. As melhorias contínuas nesta tecnologia, que fortemente foi reestruturada na versão 2009 é por muitos considerado o alicerce principal de soluções robustas, escalonáveis e com alta performance.

As palestras finais estavam cercadas de assuntos diferenciados e estive presente na apresentação da Twitter API com Andreano Lanusse, que destacou a explosão deste fenômeno nos EUA. Ele demonstrou uma aplicação desktop que ele desenvolveu fazendo uso das API disponibilizadas pelo Twitter. Conforme alguns dados, o Twitter é uma forte ferramenta de publicidade e excelente oportunidade para alavancar os negócios de uma empresa.

Umas das espectativas para o lançamento do Delphi 2010 era o aguardado suporte ao banco Firebird através do framework DBExpress. A cada nova versão esperava-se pelo suporte nativo e finalmente Kelver Merlotti, com muito humor, demonstrou melhorias no framework, alguns recursos avançados na utilização das classes internas para excução de instruções SQL e controles transacionais, pool de conexões nativo, e também consultas ao banco Firebird, aplicando testes de performance e visualizações das instruções processadas. Os desenvolvedores Delphi e Firebird agradecem!

O Delphi Conference foi um sucesso e o evento proporcionou uma visão positiva sobre o Delphi, as tecnologias relacionadas e principalmente as perspectivas para o futuro. Estamos sem dúvida, muito bem servidos para qualquer necessidade! Não poderia terminar sem colocar a frase presente nas camisas sorteadas no evento em que todo desenvolvedor Delphi pode afirmar: My App is Faster Than Your App..

quinta-feira, 17 de dezembro de 2009

Updates 4 e 5 para Delphi e C++ Builder 2010 Disponíveis

Kris Houser disponibilizou os updates 4 e 5 para o Delphi e C++ Builder 2010.
O conteúdo do Release Notes e Instalação dos updates podem ser vistos e baixados no site da embarcadero:
http://edn.embarcadero.com/article/40174

terça-feira, 8 de dezembro de 2009

Slides e Exemplos Disponíveis

Andreano Lanusse, da  Embarcadero, disponibilizou para download os slides e exemplos das palestras da Delphi Conference, realizado em 24 de novembro em São Paulo. É um conteúdo valioso que deve ser estudado para serem utilizados
como referências em seus projetos. O artigo referente ao evento poderá ser visto na edição de janeiro da revista Active Delphi. Não deixem de ler!
Segue o link para download: http://www.andreanolanusse.com/blogpt/delphi-conference-brasil-sucesso/

quarta-feira, 2 de dezembro de 2009

Delphi para Linux e Mac em 2010

Entre as novidades que virão em breve e que foram comentadas no Delphi Conference, realizado em 24 de novembro é que teremos versões do Delphi para Linux e Mac, previstos para 2010.
Mairoes informações podem ser vistas em:
http://computerworld.uol.com.br/tecnologia/2009/11/26/delphi-tera-em-2010-versoes-para-linux-e-mac-os/

sexta-feira, 27 de novembro de 2009

Otimizando Chamadas a Formulários

Neste artigo será mostrada uma forma para otimizar as chamadas aos formulários de uma aplicação, realizada geralmente por itens de menu. É comum perceber em sistemas tradicionais chamadas estáticas a determinado formulário da aplicação relacionado ao evento onclick do item de menu, como segue:

procedure TForm1.Item1Click(Sender: TObject);
begin
if Form2 = nil then
Form2 := TForm2.Create(Application);
Form2.Show;
end;

procedure TForm1.Item2Click(Sender: TObject);
begin
if Form3 = nil then
Form3 := TForm3.Create(Application);
Form3.Show;
end;

A forma de chamada acima está correta, mas atente aos seguintes fatos:

- Código repetitivo nas chamadas aos formulários (só muda a variável FormX);
- Quanto maior o número de formulários maior a extensão e codificação da unit;

Para que os fatos descritos acima não existam utilizaremos 2(dois) recursos para a sua otimização:

- Criação de um único método nas chamadas a formulários para o evento OnClick dos itens de menu;
- Utilização da função GetClass para buscar a referência a classe desejada.

Criando o método para o TMenuItem

Iremos criar a definição do método LoadForm, do tipo TNotifyEvent, na seção protected do formulário principal,como segue:

protected
LoadForm(Sender: TObject);

Antes de implementar o código para o método LoadForm, iremos referenciar o método ao evento OnClick dos itens de menu existentes na aplicação, para que seja carregado dinamicmente o formulário desejado. Como podem existir itens de menu que não fazem a chamada a formulários, indicaremos através da propriedade Tag o valor correspondente para atribuir o método ao evento OnClick do item de menu. Para isso no evento OnCreate do formulário principal adicionaremos as seguintes linhas de código:

procedure TForm1.OnCreate(Sender:TObject)
var
vI, vJ: integer;
begin
for vI:= 0 to MainMenu1.Items.Count - 1 do
for vJ := 0 to TMenuItem(MainMenu1.Items[vI]).Count - 1 do
begin
if TMenuItem(MainMenu1.Items[vI]).Items[vJ].Tag = 1 then
TMenuItem(MainMenu1.Items[vI]).Items[vJ].OnClick := LoadForm;
end
end;

No código acima, estamos percorrendo todos os itens de menu existente o objeto TMainMenu da aplicação e verificamos o valor da propriedade Tag(= 1), e atribuímos ao evento o procedimento LoadForm. Com isto já estamos ganhando a vantagem de termos um único método para realizar a chamada aos formulários sem precisar codificar o evento OnClick de cada item de menu necessário.
Agora iremos implementar o método LoadForm, que servirá para carregar o formulário de acordo com o item de menu corrente. Será um método único para realizar a chamada para todos os formulários necessários dispostos no menu principal da aplicação. Para isso utilizaremos a função GetClass da unit Classes para obter a referência da classe passada através da string ‘T’(Padrão para iniciar nome de classe) + a proprieade name do item de menu atual. Após obter a referência é verificada se a classe já está instanciada ou não, para apenas realizar a sua visualização(Show) ou também realizar a sua criação(Create).

Segue abaixo a codificação do método após ter sido ativado a sua implementação com Ctrl+Shift+C.

procedure TForm1.LoadForm(Sender:TObject)
var
vClass: TPersistentClass;
vForm: TForm;
begin
vClass := GetClass(‘T’ + TMenuItem(Sender).Name);
if vClass <> nil then
begin
vForm := TForm(FindGlobalComponent(TMenuItem(Sender).Name));
if vForm = nil then
vForm := TFormClass(vClass).Create(nil);
vForm.Show;
end;
end;

Imaginem agora uma aplicação com 50(cinquenta) chamadas a formulários no menu principal realizada no modo tradicional! Haveria uma imensa codificação na unit além da referência a cada unidade de cada formulário na seção uses. Com o exemplo exposto apenas um único metodo é necessário sem a necessidade de referenciar qualquer formulário na unidade principal.