E-Commerce

com Delphi e ASP.NET

Sobre o Autor
Guinther Pauli é autor de mais de 100 artigos publicados e do livro “Delphi
– Programação para Banco de Dados e Web”. É Bacharel em Sistemas de
Informação pelo Centro Universitário Franciscano (Unifra, Santa Maria – RS).
É desenvolvedor 5 estrelas Microsoft e certificado oficial MCP (Microsoft
Certified Profissional) e MCAD (Microsoft Certified Application Developer), em
C#, ASP.NET e Visual Studio .NET. Detém quatro certificações oficiais Borland:
Delphi Advanced pela Borland dos Estados Unidos, Delphi Web Development
Certified, Kylix Product Certified e Delphi Product Certified. Já ministrou
palestras para mais de 5 mil pessoas em todo o país. É Editor Geral da revista
ClubeDelphi (www.clubedelphi.net) e Editor Técnico da Revista WebMobile
Magazine (www.portalwebmobile.com.br). Pode ser contatado pelos endereços
guinther_pauli@hotmail.com ou guinther@clubedelphi.net. Possui um blog
no TheSpoke no endereço br.thespoke.net/MyBlog/Guinther/MyBlog.aspx
Participação especial: Rudolfo Pauli, ASP.NET Specialist e Borland Delphi
Certified, desenvolvedor do Centro de Processamento de dados (CPD) da
Universidade Federal de Santa Maria (UFSM), atuando na área de projetos Web
e Multicamadas.

Importante
Nenhuma parte deste curso, sem autorização prévia por escrito da editora,
poderá ser reproduzida, copiada ou transmitida, sejam quais forem os meios
empregados: eletrônicos, fotográficos, gravação ou quaisquer outros. Todos os
direitos reservados e protegidos pela lei 5.988 de 14/12/73.

1

E-Commerce
com Delphi e ASP.NET

Introdução

O

objetivo deste curso é ensinar você a utilizar os poderosos recursos
do ASP.NET para desenvolver aplicações para Web, com o Delphi 2005.
Durante todo o curso, você vai conhecer cada uma das funcionalidades
disponíveis, aplicando na prática os conhecimentos adquiridos, através de
exemplos passo a passo.
Começaremos conhecendo a IDE, suas opções e janelas, para que você possa
começar a se familiarizar com o ambiente de desenvolvimento. A seguir, você
conhecerá um pouco sobre o .NET Framework da Microsoft, como e porque
surgiu, objetivos e arquitetura. No capítulo sobre Fundamentos do
ASP.NET, você aprenderá a criar suas primeiras aplicações ASP.NET, conhecendo
os recursos básicos do framework. O capítulo seguinte, sobre WebForms e
WebControls, introduz a utilização de controles no lado servidor para criação
de formulários Web. Você conhecerá em detalhes cada um dos controles
disponíveis, principais propriedades, métodos e eventos.
O acesso a dados com ADO.NET é discutido em um capítulo a parte. Aqui
você vai aprender a acessar banco de dados e facilmente exibir informações
do Interbase em formulários Web, para que possam ser manipulados pelo
usuário no browser. Depois você conhcerá o DataSet, uma peça-chave da nova
arquitetura. No capítulo sobre DataBind, veremos como utilizar esse poderoso
recurso do ASP.NET, para vinculação de dados. Os principais controles para
exibição e manipulação de dados são vistos a seguir: Repeater, DataList e
DataGrid.
Validações são extremamente simples de serem feitas com ASP.NET, usando
os novos Validation Controls. Você fará na prática um exemplo que demonstra
a utilização desses controles. No próximo capítulo, sobre Cache e Estado, você
aprenderá a manipular sessões, objetos em cache e alguns segredos sobre
como otimizar a performance de sua aplicação Web.
Segurança, um importante fundamento de qualquer aplicativo, é discutido
em detalhes neste curso. Você aprenderá a tornar seguras suas aplicações
ASP.NET, configurando permissões, regras de acesso e autenticação. O capítulo
sobre configuração é uma referência sobre as principais opções disponíveis
nos arquivos de configuração do ASP.NET, que permitem ajustar várias
características e o comportamento de suas aplicações Web.
Você também apredenderá a criar User Controls e Custom Controls, para
facilmente compartilhar e reutilizar código entre diferentes aplicações. E
finalmente, você conhecerá e aprenderá como criar e consumir Web Services,
essa tecnologia que é um dos mais importantes fundamentos do .NET
Framework.
Ao final de cada capítulo (exceto os introdutórios), você será desafiado a
resolver um determinado problema. Usando os conhecimentos e técnicas
vistas em cada capítulo, o aluno deverá desenvolver uma solução e uma
aplicação ASP.NET, ajudando a consolidar o conteúdo. As soluções para todos

2

E-Commerce
com Delphi e ASP.NET

os exercícios podem ser encontradas no final do curso.
Caso esteja dando seus primeiros passos com o ASP.NET, não se preocupe,
todos os exercícios estão expostos de forma simples e usando método passo
a passo. Conhecer o básico sobre programação e acesso a banco de dados
ajudará. Para facilitar, cada capítulo é acompanhado de vídeo-aulas, para que
você possa assistir e conhecer os recursos apresentados.
No final do curso, você criará uma aplicação ASP.NET completa, onde a maioria
dos recursos vistos nos capítulos anteriores pode ser aplicado em um único
exemplo. Em caso de dúvida, sinta-se a vontade para entrar em contato com
os instrutores, através do fórum do aluno.
Tenha um bom curso, sucesso com os projetos ASP.NET!

3

98 ou Me (porém.com/netframework/technologyinfo/howtoget. codinome Diamondback. Você pode também fazer o download e obter mais informações sobre a instalação.NET Framework 1. A nova IDE se chama Borland Developer Studio e está na versão 3. e foi uma estratégia da Borland para concorrer com o MS Visual Studio. Como sabemos. O que poucos esperavam é que o Delphi for . você precisa estar utilizando necessariamente uma das seguintes versões do Windows: 2000 (SP2 recomendado). • Microsoft Visual J# .1 Redistributable • Microsoft XML Core Services (MSXML) 4.NET. O Delphi 2005.NET Framework.NET Framework 1. você deve ter instalado na sua máquina os ítens a seguir: • . • Microsoft Internet Explorer 6 SP1 ou superior.NET 1. unifica todas as versões do Delphi e representa um marco na história do produto. O Delphi 2005 não roda em Windows 95.0 SP2 (Delphi 2005) Todos esses ítens são distribuídos juntamente com o produto.com/delphi_net/pdf/delphi_net8_sysreqs. exceto no Windows 95). Além disso. Recomendo a leitura do arquivo install. Instalação Para instalar o Delphi 2005. o Delphi 7 já trazia uma versão do compilador Delphi para o . 2003 Server ou XP Professional – veja mais detalhes sobre os requisitos mínimos no documento borland. as aplicações finais ainda poderão ser executadas em todos esses sistemas. 4 . Essa IDE surgiu com a primeira versão do C#Builder. utilizando a linguagem Delphi ou C#. também mostrarei alguns recursos mais avançados e úteis. Darei prioridade aos novos recursos. mesmo tendo sido introduzidos em versões anteriores do produto. chamada Borland Developer Studio. No entanto.microsoft.pdf. Histórico O ambiente integrado de desenvolvimento do Delphi (IDE – Integrated Development Environment) permite o desenvolvimento RAD (Rapid Application Development) de aplicações para Windows (incluindo Win 32 e .txt para mais informações.1. A IDE do Delphi 2005 começou a ser projeta há cerca de quatro anos.NET A IDE do Delphi 2005 N este capítulo veremos uma introdução a IDE do Delphi 2005.1 SDK.NET.E-Commerce com Delphi e ASP.NET) e Web. incluídos a partir do Delphi 7.0. conhecendo suas principais funcionalidades. a partir do endereço msdn.NET (codinome Octane) se tornaria o Delphi 8 – e não um produto à parte – selando o compromisso da Borland com o . • . O projeto Galileo (codinome usado na época) definia uma IDE destinada ao desenvolvimento de aplicações para a nova plataforma da Microsoft.

NET ou C# ). utilizaremos a partir de agora a mesma IDE para desenvolver tanto aplicações Win32 quanto . as três opções são instaladas.NET! Para não haver confusão. você pode ocultar/mostrar barras. Figura 2. A Figura 1 mostra a IDE do Delphi 2005. é isso mesmo. A IDE do Delphi 2005 Menu e Barra de Ferramentas A Figura 2 mostra as barras de ferramentas do Delphi 2005. inclusive. Menus e ToolBars do Delphi 2005 Dica: Clique em File|New>Customize para personalizar o menu File|New 5 . Por padrão. Clicando sobre ela. O Delphi 2005 é basicamente a união do Delphi 7. um grupo de projetos com aplicações de diferentes tipos: a IDE se ajusta conforme a linguagem do projeto selecionado. Delphi for . Delphi for .NET ou C#. inserir/remover botões etc. com vários novos recursos na IDE. um pequeno ícone na toolbar principal indica qual a linguagem está atualmente ativa na IDE (Delphi Win 32 .NET A nova IDE do Delphi 2005 Com certeza a principal novidade do Delphi 2005 é o suporte ao desenvolvimento com múltiplas linguagens.E-Commerce com Delphi e ASP.NET e C#Builder. você pode escolher o que deseja instalar: Delphi Win32. Delphi 8 for . Dica: Durante a instalação do produto.Você pode ter. Figura 1. Isso se chama personalidade. clicando na opção custom. Sim.

Web Documents – permite a criação de páginas HTML. Delphi Projects – basicamente tudo o que tínhamos no Delphi 7. Other Files – itens que não se enquadram em nenhuma das categorias anteriores. Delphi for .NET Web Forms e Web Services. ECO.E-Commerce com Delphi e ASP. Unit Test – para a criação de testes unitários com o Delphi usando o DUnit. Inclui suporte para desenvolvimento ASP. Figura 3.NET.NET Web Forms e Web Services.NET usando o C#. que constantemente você usará para criar boas aplicações ou inserir novos itens a um projeto existente. documentos XML. templates. DataModules etc. Ele é um repositório de objetos. Web Snap. arquivos Java Script etc. incluindo ASP. Permite a criação de grupos de projetos.. wizards. Essa é uma característica forte da nova IDE. ECO etc. Delphi 2005 suporta desenvolvimento com Delphi for . Observe que agora as seções são dispostas em formato de TreeView. incluindo aplicações VCL Win32.NET Projects – aqui estão basicamente as opções que estavam disponíveis na IDE do Delphi 8.NET (com suporte limitado) etc. Intraweb etc.NET Object Repository A Figura 3 mostra o Object Repository do Delphi 2005. aplicações VB. VCL Forms (a versão adaptada da VCL para o .NET) etc. Os itens nessa opção são basicamente os que estavam disponíveis na IDE do C#Builder. Delphi for Win32 e C# Você pode adicionar um formulário ao Object Repository para que possa ser usado/compartilhado por outras aplicações ou outros desenvolvedores. Windows Forms. Active X. Web Services. 6 . formulários. Crystal Reports – para a criação de relatórios usando o Crystal. Temos as seguintes opções para criação de aplicações: C# Projects – para construção de aplicações . Windows Forms.

tutoriais e exemplos relacionados aos produtos da Borland. Figura 5. 7 . Customizando o menu File>New Tela Inicial Ao invés de iniciar com o tradicional formulário em branco. que possui links para acesso direto a sites de recursos. Além disso.E-Commerce com Delphi e ASP. acesse File>New>Customize e arraste para a caixa Menu Items as opções que você acessa com mais freqüência (Figura 5). editando diretamente o arquivo default.htm no diretório WelcomePage da instalação do BDS. Open File e Help. Para isso. são listados os últimos projetos abertos e links para os comandos New.NET Figura 4. Menus e ToolBars do Delphi 2005 Agora é possível personalizar os ítens que aparecem no menu File>New. Open Project. Dica: Você pode personalizar a página de boas-vindas da IDE do Delphi. temos agora um “mini-browser” exibindo a Welcome Page.

e assim por diante. ajustar o tamanho dos ícones etc. a Tool Palette exibe opções para a manipulação de diagramas UML. Você pode alterar esse comportamento escolhendo a opção Classic Unlocked na barra Desktop. Tool Palette exibe componentes. Tool Palette A paleta de componentes mudou radicalmente (Figura 6). Code Snipetts e muito mais 8 . você pode querer ter um layout para desenvolvimento Web e outro para Win32. Agora é mostrada em uma nova janela chamada Tool Palette – não se chama mais Component Palette e seu aspecto é semelhante ao da Component List das versões anteriores da IDE. criar categorias. recurso que foi bastante solicitado pelos desenvolvedores. Windows Forms ou Web Forms.. A Tool Palette também pode mostrar agora os ítens do Object Repository para criação rápida de projetos (esse recurso já existia no Delphi 8. se estiver trabalhando com o editor. Form Designer e Code Editor) não ficam mais “soltas”. A barra Desktops permite que seja salva a atual configuração de layout da IDE. pois a Tool Palette tem diferentes finalidades: se você estiver construindo uma aplicação VCL. Figura 6. digite as iniciais do ítem que está procurando e será feita uma pesquisa incremental. for. porém estava “oculto”). localizada por padrão ao lado direito do menu principal. NET.ítens do Object Repository. Aqui é utilizado o termo “ítem” no lugar de “componente”.E-Commerce com Delphi e ASP..) que ao serem clicados são adicionados ao editor na posição do cursor. exibe Code Snippets – templates de código comumente utilizados (como except. com posicionamento e tamanho de janelas e inspectors.NET Desktop As janelas utilizadas pela IDE (como Object Inspector.do etc. transferir ítens entre categorias. desmarque a opção Tools|Options>Environment Options>Delphi Options>VCL Designer>Embedded Designer. opções para criação de diagramas UML. Já se estiver utilizando o Visual Model Designer.to. Para ativar o estilo “solto” para aplicações VCL. Ao selecionar a paleta. Por exemplo. Dica: Você pode personalizar a Tool Palette de várias formas: customizar cores e efeitos gradiente. os ítens exibidos serão componentes apropriados ao tipo de aplicação em desenvolvimento. Tudo fica dentro da janela principal da IDE. Os componentes são filtrados e o texto da busca é realçado em negrito no nome do componente e no título da janela.

excluir.NET (usando a VCL. A IDE basicamente procura pelo arquivo bdsproj para verificar se o projeto já foi salvo/migrado na nova IDE. Um novo ítem é apresentado. Através dele você pode gerenciar os arquivos presentes no projeto (adicionar.). A opção Add Web Reference permite adicionar uma referência a um Web Service.NET) ou manter em Delphi Win32. 9 . Figura 7. Ao passar o mouse sobre essa barra. a uma Type Library COM ou a outro projeto. Project Manager: muitas novas opções e melhorias Dica: Você pode clicar no botão para que as janelas fiquem reduzidas a uma barra ao lado da IDE. O menu de contexto Add Reference permite adicionar uma referência a um novo assembly.NET Project Upgrade Quando você abrir no Diamondback um projeto VCL construído em versões anteriores do Delphi. listando todos os assemblies . dando suporte inclusive à busca usando UDDI. Project Upgrade: conversão de aplicações VCL para VCL.NET Project Manager O Project Manager já aparece aberto por padrão (Figura 8). A mesma opção está disponível no menu Project. a janela surgirá novamente. remover etc.NET usados pela aplicação. Figura 8. a IDE abrirá a caixa de diálogo Project Upgrade (Figura 7) perguntando se você deseja migrar os fontes do projeto para Delphi for .E-Commerce com Delphi e ASP.

Data Explorer: manipulação de BD a partir da IDE 10 . dando um clique de direita sobre um driver no Data Explorer. Também é possível copiar estruturas inteiras de bancos de dados: Para isso. Digite os comandos SQL desejados e clique no botão . Execução de comandos SQL de forma direta: dê um clique de direita sobre uma conexão e escolha SQL Window.E-Commerce com Delphi e ASP. Criação de tabelas: basta dar um clique de direita sobre o item Tables de uma conexão e escolher a opção New Table. porém ele é completamente integrado à IDE do Delphi 2005 (além de poder ser executado como uma aplicação independente). Migração de tabelas entre diferentes bancos de dados usando Copy e paste (isso mesmo!): clique de direita sobre uma tabela e escolha a opção Copy Table. Figura 9. Alteração da estrutura de tabelas: dê um clique de direita sobre uma tabela e escolha a opção Alter Table. Execução de stored procedures: dê um duplo clique em um stored procedure no Data Explorer para que seja exibido um editor. nele você pode preencher os parâmetros indicados e executar o procedure. clique de direita e escolha Paste Table. Vejamos alguns recursos do Data Explorer: • • • • • • • Visualização do conteúdo das tabelas e views: basta dar um duplo clique sobre uma tabela no Data Explorer para que seja mostrado um DataGrid junto ao editor.NET Data Explorer O Data Explorer (Figura 9) é uma ferramenta que lembra muito o antigo SQL Explorer. mostrando o conteúdo da tabela ou view. Em outra conexão. basta utilizar o recurso Migrate Data.

Debugger Options e Editor Options foram finalmente unificadas e agora estão acessíveis a partir do menu Tools|Options. exibir a estrutura de uma unit caso esteja no editor. a nova janela Structure (localizada por padrão em cima do Object Inspector) pode tomar várias formas: exibir o Object TreeView caso você esteja ajustando componentes em um formulário.NET. Não foi para menos. para configuração do HTML Designer. basta clicar de direita sobre a versão desejada e escolher a opção Revert. Structure Panel Se você observar a nova IDE. mas que pode ser bastante útil. selecione Tools|Options>Editor Options e altere o valor da opção File backup limit. do OptimizeIt e de aplicações ASP. Na lista você pode ver a data da revisão. do ECO. que exibe a estrutura de diretórios do servidor. autor etc. Options As janelas Environment Options. Para definir a quantidade de revisões a serem armazenadas. verá que não existem mais as janelas Object TreeView e Code Explorer. Para voltar a uma revisão anterior de um arquivo. claro (se comparado ao que faz o Borland StarTeam). mostrar a estrutura de tags de um arquivo aspx caso esteja criando uma aplicação ASP.NET History Manager Clicando na aba History na parte inferior do editor de código temos acesso a uma lista de versões para cada arquivo do projeto (Figura 10). Windows Forms Designer. Isso funciona da seguinte forma: toda vez que você salva um arquivo na IDE. Figura 10. a janela Structure toma a forma do painel esquerdo da interface cliente.NET etc. você pode comparar versões de arquivos. que você pode mais tarde consultar. Há ainda novas opções. 11 . Clicando na opção Diff. History Manager permite controlar versões do código-fonte É um controle de versão simples. verificar alterações ou restaurar. o Delphi 2005 armazena uma versão para ele. Se estiver visualizando o StarTeam Client embutido.E-Commerce com Delphi e ASP.

entre outros elementos. Você pode. Outro interessante recurso é o suporte a code-folding: você pode mostrar/ocultar a implementação de um método.NET Object Inspector O Object Inspector (Figura 11) é amplamente utilizado em qualquer tipo de aplicação na IDE. que divide as propriedades por categorias. localizadas na barra de status (isso já estava disponível em versões anteriores do Delphi. Clique sobre a janela com o botão direito e escolha Arrange>By Name. como interface ou implementation. O Object Inspector foi incrementado no Delphi 2005. Além disso. obviamente. basta clicar nos sinais “+” ou “-”. mas apenas usando-se teclas de atalho). por exemplo. Você normalmente o usará para definir propriedades e eventos para controles e componentes. Object Inspector com várias melhorias Code Editor O code editor é.E-Commerce com Delphi e ASP. clicar em Fold|Types para “esconder” toda a seção type da unit. O Object Inspector não é utilizado somente para configurar componentes: você também o utilizará para construir diagramas UML. O menu de contexto do editor possui duas novas opções: Fold e Unfold para manipulação do code-folding. a descrição de uma propriedade é automaticamente exibida na parte inferior da janela. poderá alternar para o estilo tradicional. ou de toda uma seção da unit. Dica: Se você não se acostumar com o novo layout do Object Inspector. duas abas – Code e Design – permitem alternar entre o designer e o editor de código. Se você estiver construindo uma aplicação Windows Forms. por exemplo. 12 . Figura 11. de membros de classe. páginas HTML e Web Forms. O editor tem ainda opções para manipulação de macros. Ao lado esquerdo do editor é mostrado o número da linha. usado para a edição de códigos na IDE. que também pode conter links para editores.

E-Commerce com Delphi e ASP. • Error Insight: mostra erros do compilador. • Tooltip symbol Insight: mostra informações sobre um identificador quando o mouse é repousado sobre ele. • Tooltip Help Insight: mostra no code editor uma declaração/ documentação de um identificador. O uso desse comando pode aumentar a velocidade de inicialização das aplicações executadas dentro da IDE e reduzir o uso de memória (isso é útil porque muitas vezes rodamos a aplicação sem acabar realmente usando o depurador). • Code Parameters: mostra os parâmetros requeridos por um método. mostra o conteúdo de uma variável quando o mouse é repousado sobre o identificador. •Teclas de atalho: •Ctrl + Space . Na verdade essa opção já existia na versão anterior do Delphi. • Tooltip Expression Evaluation: em modo de depuração. 13 . mas estava oculta por padrão. que podem ser configuradas a partir da janela Options: • Code Completion: completa código automaticamente.Code Completation •Ctrl + J – Code Template (veremos a seguir como configurar essa opção) •Ctrl + Shift + Space – Code Parameters Sem depuração O novo comando Run|Run Without Debugging permite rodar uma aplicação sem acionar o depurador integrado (que por padrão é ativado quando você aperta F9).NET Figura 12. Editor de código: novos recursos Code Insight Temos vários recursos para utilização no editor.

Uma diferença é que agora você não poderá visualizar mais de um formulário ou Data Module ao mesmo tempo (pois não ficam mais “flutuantes”.nfm em vez de . ao invés de em recursos. Na parte superior desse designer temos barras de ferramentas destinadas a ajustes nos controles visuais.nfm em Windows Forms ou Web Forms: valores de propriedades de qualquer componente serão inicializados no método privado InitializeComponent. e sim vinculados ao designer).NET). Ou seja. Você poderá agora utilizar facilmente. Como você verá. como C# e Java. A principais mudanças nos designers são notadas ao se desenvolver aplicações com o Windows Forms Designer. Outra mudança é que novos formulários no Delphi 2005 possuem a extensão . como VB. Há ainda o suporte a undo (e não apenas undelete). como posicionamento e espaçamento. não existe arquivo . ainda é possível usar controles ActiveX e COM a partir de uma aplicação . Uma grande diferença em relação ao trabalho com a VCL é que objetos não são representados em modo texto (assim como IDEs de outras linguagens.E-Commerce com Delphi e ASP.NET Components. Instalando componentes Continuando o tour pela IDE.dfm (para VCL. por exemplo. Componentes não-visuais. veja na Figura 13 a janela aberta acessandose o menu Component|Installed . Ainda assim. é possível usar arquivos .NET Form Designer Como o Delphi 2005 não mais apenas destinado ao desenvolvimento de aplicações VCL/CLX. Instalando componentes .NET ou C# (um grande avanço comparado aos antigos controles e bibliotecas ActiveX e objetos COM). ficam separados na parte inferior do formulário.NET. que fazem a representação de componentes centrada em código. O VCL Designer é basicamente o tradicional Form Designer do Delphi. temos novos designers.NET 14 . em sua aplicação Delphi. como faz a VCL). componentes desenvolvidos em outras linguagens. chamado no construtor do formulário. Figura 13. para efeitos de compatibilidade.dfm ou .dfm de aplicações VCL feitas no Delphi 7. ou anterior.

desde a equipe de desenvolvedores do Delphi 8 e do C#Builder. Pressione a barra de espaços para atirar nos nomes dos membros da equipe do Delphi. Clicando neste botão você entrará em um pequeno jogo. Surgirá a mensagem “Borland Rules!”.NET Reflection O menu Tools|Reflection é um atalho para o utilitário Reflection. Subby. Se você clicar em um assembly a partir do Project Manager|References poderá então visualizar o seu IL dentro da própria IDE (junto ao designer).). que está com novo formato. Além da documentação do Delphi 8. que permite examinar os metadados e o código IL gerado para um assembly (sua aplicação feita no Delphi 8. você poderá consultar a documentação completa do SDK do .NET e Web Services.exe (Figura 14). por exemplo). Curiosidade: O “ovo de páscoa” do Delphi 2005 é bastante original. Delphi MDA Team.NET Framework. Para visualizá-lo vá até a janela About e pressione T+E+A+M enquanto segura a tecla Alt. VCL. Aperte mais algumas vezes essas teclas e você verá um botão “Team” ao lado esquerdo. que descerão.E-Commerce com Delphi e ASP. você verá algumas figuras que mostram. 15 . até a fila dos carros deles estacionados na sede da Borland. Figura 14. e dicas de migração. Ao acertar nomes-chave (como Delphi Team. além de tutoriais passo a passo para criação de aplicações Windows Forms. Corbin Dunn etc.NET Help Outra mudança está no Help. Reflection: examinado os metadados de Assemblies .

E-Commerce com Delphi e ASP. o código com problema fica agora sublinhado (semelhante ao que faz o Word). dentro do próprio editor (Figura 16). São exibidos também links para a unit onde está declarado um determinado tipo. Clicando no link o código-fonte associado será aberto. Instalando componentes .NET Error Insight A IDE monitora constantemente seu código-fonte procurando erros. Além disso.NET 16 . Figura 15. componente etc. Error insight: mensagens de erro do compilador em forma de Hint e listadas na janela Structure Help Insight Um novo recurso da IDE permite que a documentação associada a um determinado ítem seja agora mostrada em uma janela semelhante a um hint. indicando na janela Structure possíveis problemas com o seu código. Repousando o mouse sobre o código você verá em um hint a mensagem de erro gerada pelo compilador. Observe o comportamento da IDE em resposta ao problema. Figura 16. A Figura 15 mostra um laço for sem o do e sem a declaração da variável i.

To-Do List A partir de agora vou apresentar alguns recursos já antigos da IDE. Figura 18. Exportando a lista de tarefas para HTML 17 . O To-Do List (Figura 18) especificar uma lista de tarefas a serem feitas em uma unit ou formulário. No code editor. use Shift+Ctrl+T para gerar um To-Do.NET Code Snippets Permitem incluir código rapidamente no editor. selecione um bloco de código no editor e arraste para a janela anterior enquanto segura a tecla ALT. Ao clicar no ítem do To-Do list. Pode ser exportado para HTML (Figura 19). o Delphi abre a unit e posiciona o cursor onde o código dever ser colocado. To-Do List: organize seu trabalho adicionando tarefas associadas ao código-fonte Figura 19. Code Snippets: templates de códigos Para inserir um template.E-Commerce com Delphi e ASP. Figura 17. a partir de templates. mas bastante úteis.

Dica: Para mais informações sobre Refactoring visite www. Refactorings devem garantir que a aplicação funcione da mesma forma após a reestruturação. métodos. A seguir vamos estudar em detalhes cada uma das opções disponíveis. visando melhorar sua legibilidade. você pode criar uma aplicação Windows Forms no Delphi 2005. Os testes unitários que garantirão se o código continua eficiente e funcional após os refactorings. reduzindo chances do sistema ter graves falhas após as modificações e minimizando a chance de introdução de bugs. classes. 18 . organização. Delphi Win32 e C# (algumas não estão disponíveis para algumas linguagens). Cada refactoring é uma pequena transformação aplicada ao código-fonte.refactoring.NET Refactoring “Refactoring é a técnica disciplinada de reestruturar um bloco de código existente. uma seqüência muito grande de refactorings pode produzir uma reestruturação significativa. A Figura 20 mostra o novo menu Refactor do Delphi 2005: Figura 20. Porém.E-Commerce com Delphi e ASP. alterando sua estrutura interna sem afetar o comportamento externo” (Martin Fowler). Refactoring está intimamente ligado a testes unitários. desmembrar códigos em rotinas menores etc. fazer a reestruturação do código de aplicações. a partir da própria IDE. como trocar nomes de variáveis.NET. Para fazer os testes.com Suporte a Refactoring na IDE do Delphi 2005 Provavelmente um dos recursos mais interessantes da IDE do Delphi 2005 seja o suporte a Refactoring (menu Refactor). Novas opções para Refactoring na IDE As opções estão disponíveis para desenvolvimento com Delphi for . adequação a um padrão etc. performance. Com isso podemos.

Figura 22. overload. é bastante provável que essa alteração tenha que ser feita em várias partes do código. onde o identificador é referenciado (métodos e variáveis). Refactoring: Preview 19 . Foo. Agora suponha que precisamos alterar o nome do primeiro método. que indica todos os trechos do código que sofrerão alterações.E-Commerce com Delphi e ASP. procedure Foo(A:Integer). ou aparte Shift+Ctrl+E. Renomeando métodos Será exibida a caixa de diálogo mostrada na Figura 22.NET Rename: métodos Quando alteramos o nome de um identificador em sua declaração. overload. Figura 21. Selecione-o na declaração e ative o menu Refactor>Rename. e indique o novo nome do método conforme mostrado na Figura 21. Foo(5). funcionando como um “preview”. adicione o seguinte código na seção public da classe do formulário (a seguir aperte Shit+Ctrl+C): procedure Foo. No Form_Load do formulário digite o seguinte (dê um duplo clique no designer): Foo(). que não recebe parâmetros. Foo. Em nossa aplicação Windows Forms.

EventArgs).TWinForm1_Load(sender: System. • Remove All Refactorings . Rename: variáveis Também podemos usar o recurso de Refactoring para renomear variáveis.desfaz as modificações feitas pela opção anterior. o Delphi aplica a alteração imediatamente. • Remove Refactoring (Del) – limpa um Refactoring da lista da janela Refactorings. sem exibir o código afetado na janela Refactoring.ToString()). clique de direita e escolha a opção Refactoring>Rename (ou use o menu principal). var i: integer. observe que o Delphi ajustou o seguinte: • A declaração do método na seção interface.Object. Após o Refactoring.1 do MessageBox. Figura 23. Por exemplo. end. primeira e segunda. Selecione a variável “i”.Count . é possível realizar uma das seguintes ações: • Refactor (Ctrl+R) para aplicar as alterações.NET A seguir. digite o seguinte código no Form_Load: procedure TWinForm1.limpa todas os refactorings da lista. • As chamadas feitas ao método no Form_Load.Show(i. • O cabeçalho da implementação. Renomeando variáveis Note que alterei o nome da variável para Num.E-Commerce com Delphi e ASP. Aperte o botão Refactor. • Undo Refactoring (Ctrl + Z) . será mostrada a Figura 23. e: System. 20 . begin for i := 0 to Controls. Se você desmarcar a opção View References before refactoring.

Declarando variáveis automaticamente O resultado obtido com base nas opções da figura pode ser visto a seguir (em negrito): procedure TWinForm1. Com isso. Error Insight do Delphi indicando variáveis não declaradas Selecione a variável não declarada. begin Num := 10. retire a declaração da variável Num. É claro. e: System.E-Commerce com Delphi e ASP. Figura 25.Count . 21 .Show(Num. mantive aqui apenas para fins didáticos. clique de direita sobre ela e escolha a opção Declare Variable (Shift+Ctrl+V). end. será exibida a seguinte caixa de diálogo da Figura 25. o Delphi indicará que a variável não está declarada (note o Error Insight em ação na Figura 24). var Num: Integer. a inicialização da variável no bloco anterior não faz sentido. Figura 24.TWinForm1_Load(sender: System. se é um array (com dimensões) e se você quer que o Delphi inicialize a variável.Object. Nela você pode informar o tipo na variável a ser declarada. for Num := 0 to Controls.ToString()). Você também pode usar o ítem disponível no menu Refactor.NET Declare Variable: declarando variáveis automaticamente Ainda usando o código anterior.EventArgs).1 do MessageBox.

E-Commerce com Delphi e ASP. EventArgs). Mensagem é indicado como não declarado.Form) . declarado no Form_Load da classe: procedure TWinForm1. Por exemplo. strict protected. private Mensagem: string. escolha o que deseja renomear (clique Tab para alternar) e digite o novo valor. Será mostrada a caixa de diálogo da Figura 26..NET Declare Field: adicionando campos a uma classe Um campo (Field) é semelhante a uma variável. Selecione o identificador e escolha a opção Declare Field (Shift+Ctrl+D) no menu de contexto. strict private.Object.Windows. Considere o seguinte bloco de código. porém pertence a uma classe. métodos.TWinForm1_Load(sender: System. A alteração será refletida instantaneamente em todos os locais do código selecionado (veja a Figura 27). selecione um determinado bloco de código e repare que aparecerá um pequeno ícone ao lado esquerdo do editor. variáveis etc.Forms. Clique sobre o ícone. e: System. O resultado pode ser visto no código a seguir: TWinForm1 = class(System. 22 . end. se é um array e o especificador de visibilidade da classe (private. referenciados em vários pontos do código-fonte. public e published). protected.begin Mensagem := ‘Ola Mundo’. Sync Edit Esse recurso permite que você altere de uma só vez o nome de classes.. Figura 26. Declarando campos automaticamente Aqui podemos especificar o tipo do campo (o Delphi já detecta por padrão com base no contexto da mesma).

E-Commerce
com Delphi e ASP.NET

Figura 27. Sync Edit altera todas as referências ao identificador enquanto você digita

Extract Method
À medida que vamos adicionando código aos nossos métodos, eles vão se
tornando mais complexos e sua lógica mais difícil de ser compreendida. Um
procedimento comum é “desmembrar” o método em rotinas menores, e
incluir a chamada ao método criado no local original onde estava o código.
Imagine o seguinte código no Form_Load:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
begin
MessageBox.Show(‘Ola Mundo’);
MessageBox.Show(‘Delphi 2005’);
MessageBox.Show(‘Refactoring’);
end;

Selecione todas as linhas que contêm o MessageBox, que clique em
Refactor>Extract Method (Ctrl+Shift+M). O Delphi mostará a caixa de diálog da
Figura 28, onde você pode informar o nome do novo método a ser criado.

Figura 28. Extract Method: extraindo métodos de um bloco de código

Clicando em Ok, o código deve agora estar semelhante ao mostrado a
seguir:
procedure TWinForm1.MostraMensagens;
begin
MessageBox.Show(‘Ola Mundo’);
MessageBox.Show(‘Delphi 2005’);
MessageBox.Show(‘Refactoring’);
end;

23

E-Commerce
com Delphi e ASP.NET

procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
begin
MostraMensagens;
end;

O Delphi retira todo o código selecionado do local original, move para o novo
método (que já é declarado na seção private) e inclui a chamada.
Agora imagine a seguinte situação, um tanto mais complexa:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
var

n1,n2,n3: integer;

begin

n1 := 10;
n2 := 20;
n3 := n1 + n2;
MessageBox.Show(‘O resultado da soma é ‘ + n3.ToString());

end;

Imagine que fôssemos extrair somente o código que mostra o resultado da
soma em n3. Nesse caso, se o código fosse extraído, a variável n3 não estaria
mais disponível no novo método, pois obviamente saiu do escopo. O Delphi é
capaz de detectar esse comportamento e automaticamente incluir a variável
na passagem de parâmetros para o novo método, como mostrado a seguir:
procedure TWinForm1.MostraSoma(n3: Integer);
begin
MessageBox.Show(‘O resultado da soma é ‘ + n3.ToString);
end;
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
var
n1,n2,n3: integer;
begin
n1 := 10;
n2 := 20;
n3 := n1 + n2;
MostraSoma(n3);
end;

Extract Resource String

Resource Strings (strings de recurso) são declaradas de forma especial quando
seu executável/DLL é compilado. Dessa forma, usando um editor de recursos,
você pode facilmente “abrir” a aplicação compilada e alterar as strings, sem
a necessidade de fazer sua recompilação. Isso é ideal para aplicações que
precisam ser traduzidas para múltiplos idiomas, por exemplo. A palavra
reservada resourcestring do Delphi Language permite a declaração de strings
de recurso.
Imagine o seguinte bloco de código, que levanta uma exceção com uma
mensagem específica:
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
begin
raise Exception.Create(‘Você efetou uma operação ilegal’);
end;

24

E-Commerce
com Delphi e ASP.NET

Clique de direita sobre a string e escolha Extract Resource String (Shift+Ctrl+L).
O Delphi mostrará a caixa de diálogo da Figura 29, onde você pode informar
o nome da nova string:

Figura 29. Extraindo string de recursos

Seu código agora deve ficar semelhante ao mostrado a seguir:
resourcestring
StrVocêEfetouUmaOper = ‘Você efetou uma operação ilegal’;
...
procedure TWinForm1.TWinForm1_Load(sender: System.Object;
e: System.EventArgs);
begin
raise Exception.Create(StrVocêEfetouUmaOper);
end;

Find Unit
Uma última dica sobre Refactoring. Considere o seguinte bloco de código,
colocado em uma aplicação VCL:
procedure TForm1.FormCreate(Sender: TObject);
begin
Color := clBlue;
end;

Supondo que a unit Graphics, que declara o identificador clBlue, não
esteja na seção uses. Selecionando clBlue e acessando o menu de contexto
Refactoring>Find Unit (Ctrl+Shift+A) fará ser aberta a caixa de diálogo mostrada
na Figura 30. Nela podemos procurar por identificador (nesse caso já detectado)
e escolher se a referência à unit será colocada na seção implementation ou
interface.

Figura 30. Adicionando uma unit automaticamente à cláusula uses

25

DataSnap. Classes.“Delphi 2005 VCL”) etc. em negrito: uses Windows. Configurando os pacotes do Delphi 2005 • Existe um utilitário chamado Delphi Configuration Manager que permite criar “versões” da IDE do Delphi de acordo com o tipo de aplicação que você está desenvolvendo. Para cada ”versão” da IDE.net 26 . Outro utilitário semelhante pode ser encontrado em www.au/~jed/dcm.htm. IntraWeb etc.codeline.“Delphi 2005 ASP. Variants.alphalink. Windows Forms.E-Commerce com Delphi e ASP. Controls. você pode configurar a IDE para carregar somente os pacotes necessários para o desenvolvimento com ASP. Isso permite deixar a IDE muito mais rápida. SysUtils. o utilitário cria um ícone na área de trabalho (ex. Messages. Para fazer o download.NET”. Forms. acesse www. tirando a VCL. Graphics. Dialogs. NET e Delphi.com.NET O resultado pode ser visto no código a seguir. Por exemplo. C#.

como XML e Web Services. acabam os problemas de versionamento de DLLs (a chamada “DLL Hell”). mas código intermediário. Permitir a distribuição simplificada de aplicações (também conhecida como “distribuição por XCOPY”). eliminando problemas de performance.E-Commerce com Delphi e ASP. poderá utilizar com facilidade qualquer linguagem . Desenvolvimento focado na Web. VB.NET Framework O . SOAP e XML. conhecendo as classes do . O GAC (Global Assembly Cache) faz o controle automático de versões de assembly. Abolir a necessidade de registro de bibliotecas e objetos.NET Framework é uma plataforma que simplifica o desenvolvimento da aplicações. focada na Internet e baseada em padrões consolidados do mercado. Objetivos do . dando fim a era COM (embora ainda seja possível usar objetos COM no . Permitir a integração entre linguagens. utilizando padrões abertos como o HTTP. compiladores para o . gerenciado e robusto para a execução de aplicações (uma máquina virtual). Ser o sucessor do modelo atual de programação Win32.NET possa ser facilmente integrado com outros códigos.) Acredite. Oferecer software como um serviço.NET não geram mais instruções nativas da CPU. causados por linguagens baseadas em script ou código interpretado. Ser baseado em padrões da indústria. Delphi etc. programar em uma linguagem específica não será mais tão importante: com . Utilização de um ambiente seguro. ou o uso de GUIDs. baseando-se em um modelo único de desenvolvimento e oferecendo uma biblioteca de classes comum (a mesma utilizada no C#.NET.NET Framework. sem a necessidade de registros ou configurações adicionais.NET).NET você passará a programar para uma plataforma.NET • • • • • • • • • • • • 27 Oferecer um ambiente integrado para desenvolvimento baseado na orientação a objetos. garantindo que todo código baseado no .NET Introdução ao . A iniciativa foi anunciada em julho de 2000 e oferece um rico conjunto de classes e objetos destinados a criação de aplicações. Oferecer um ambiente seguro para execução de código. que podem ser executados localmente ou remotamente. fazendo com . Definir um novo modelo de desenvolvimento baseado em componentes. como Windows e Web. Manter a experiência do desenvolvedor através de uma variedade de tipos de aplicações.NET.

a CLR efetua constantes verificações na memória da aplicação. garantindo a sua performance e integridade. etc. fundamentos e utilização. introduzindo a independência de sistema operacional. Veja na Figura 1 um diagrama que resume a arquitetura de aplicações .dll.NET é um ambiente de execução fortemente tipado. • Verificação de tipos – não é possível a utilização de ponteiros sem tipos. utilização de uma máquina virtual e código gerenciado.NET.NET Framework. 28 . Entre as atribuições da CLR estão: • Gerenciar a memória . vamos examinar detalhadamente cada um dos elementos presentes no . • Realizar constantes verificações no código para garantir a segurança. o . • Efetuar a compilação de código intermediário (discutido a seguir). Figura 1. Common Language RunTime (CLR) A CLR é a máquina virtual do .NET define uma infra-estrutura básica para o desenvolvimento de aplicações A seguir. • Gerenciar o Garbage Collection – o “coletor de lixo” da CLR se encarrega de liberar objetos alocados e não liberados pelo desenvolvedor.dll. gdi32.). • Execução de threads e execução de código gerenciado. • Ser um competidor para o Java. A plataforma .E-Commerce com Delphi e ASP. suas características.NET que o programador use um conjunto robusto de classes ao invés de chamar APIs diretamente (DLLs como user32. Sem dúvida é o “kernel” de todo o framework e reponsável por toda a funcionalidade de qualquer aplicação escrita para a plataforma.NET e é uma das peças-chave da plataforma. como veremos a seguir. Vários outros aspectos estão diretamente relacionados à máquina virtual.

“Descompilando” código . se for fornecida uma CLR para outro sistema operacional.entrypoint .maxstack 0 IL_0000: nop IL_0001: ret } // end of method Class1::Main Fique tranqüilo. ocorre quando compilamos nosso código-fonte usando o compilador da linguagem (C#. Assim. VB.custom instance void [mscorlib]System.Microsoft Intermediate Language Compiladores de linguagens (como C#.ctor() = ( 01 00 00 00 ) // Code size 2 (0x2) .exe(Figura 2).NET são compiladas duas vezes.NET Framework (CLR) identifica qual 29 . compiladores geram código gerenciado. extraído a partir da “descompilação” de uma aplicação de console: .1\Bin).NET\SDK\v1. Delphi etc. Você pode examinar o código intermediário de assemblies .NET Framework (C:\Arquivos de programas\Microsoft. O trecho a seguir mostra um exemplo de código intermediário. distribuído com o SDK do .) não geram mais código nativo da CPU e do sistema operacional. Quando a aplicação é executada pela primeira vez. Ao invés disso. código para rodar na plataforma.method private hidebysig static void Main(string[] args) cil managed { . a máquina virtual do .E-Commerce com Delphi e ASP. VB.). como acontecia até agora. Figura 2.NET com o ILDASM. não é preciso (apesar de ser possível) escrever diretamente em IL. ou seja. em linguagem intermediária.NET usando a ferramenta Ildasm. O resultado da compilação é um Assembly .NET. Delphi etc.exe O compilador JIT Aplicações . A primeira. seu código compilado continua o mesmo. Imagine isso como sendo algo entre linguagem de máquina e código-fonte.STAThreadAttribute::. como falamos anteriormente.NET MSIL .

Ou seja. cada Assembly é versionado (ex. Assemblies Um Assembly é um importante conceito no . Side By Side Execution e Manifest O GAC – Global Assembly Cache é o local onde o . Ou seja.0) internamente. a grosso modo. Quando a aplicação for executada novamente.NET.E-Commerce com Delphi e ASP. XP etc. A CLR é um ambiente totalmente seguro. graças às informações armazenadas no manifest da aplicação. podendo ser um aplicação (.NET armazena todos os Assemblies (bibliotecas DLLs) compartilhadas por várias aplicações. ou ainda usar um extensão do explorer do Windows. A possibilidade de existirem várias versões da mesma DLL física rodando na mesma máquina. na mesma máquina.NET é chamado de código gerenciado (Managed Code). a CLR considera a versão compilada.NET Framework. Managed Code Todo código compilado para . Ele é essencialmente uma unidade básica de distribuição. bastando abrir o diretório C:\Windows\assembly a partir do Shell (Figura 3). GAC. podemos ter. que gera o executável nativo da plataforma.0. problema conhecido como “DLL Hell”. No . cada uma sendo utilizada por uma aplicação.0.) e se encarrega de acionar o JIT (compilador Just in Time). 30 . NT. é chamado de Side By Side Execution (execução lado a lado). para Win32 por exemplo.exe do SDK para instalar e remover Assemblies do GAC. 1. O código compilado nativo para o sistema operacional é chamado de Unmanaged Code. Você pode utilizar o gacutil. A máquina virtual pode então fazer constantes verificações de tipo para garantir a segurança na execução do código. 2000. duas versões da mesma DLL sendo executadas ao mesmo tempo.EXE) ou uma biblioteca (. já deve ter passado por um problema bastante comum: uma nova versão da DLL é utilizada na máquina e a aplicação que a usava deixa de funcionar. o produto final (o executável) tem a mesma performance de uma aplicação nativa. Costumo dizer. Se você já desenvolveu aplicações para Windows que utilizam DLL. Não há brechas para execução de códigos maliciosos que possam prejudicar o funcionamento da aplicação e do sistema operacional como um todo.DLL) ou ainda ser formado por um conjunto delas.NET sistema operacional está sendo utilizado (Windows 98. que o GAC seria como um “System32 versionado”. A aplicação usará a DLL que foi utilizada no momento da sua compilação.

NET isso muda drasticamente. Dessa forma.NET Framework é permitir a integração entre linguagens.Data. Outras vezes. Object. a CLS (Common Language Specification) define convenções e regras destinadas a garantir a interoperabilidade entre diferentes linguagens (C#. Você não podia. usando somente o código binário (em formato MSIL – Microsoft Intermediate Language) gerado pelo compilador da outra linguagem! Não é necessário possuir o código-fonte.File. a integração entre linguagens.). OLE (Object Linking and Embedding). Delphi etc.E-Commerce com Delphi e ASP. Em todos os casos a integração é praticamente rudimentar. a VCL do Borland Delphi. estender um objeto COM escrito em VB declarando uma classe descendente em Delphi. componentes ou aplicações nunca foi algo simples. System. 31 . classes e APIs (por exemplo a MFC da Microsoft. Todas as linguagens feitas para o . somente interfaces.NET. o que poderia aumentar a curva de aprendizado caso um desenvolvedor precisasse utilizar outra ferramenta de desenvolvimento ou linguagem. Com o .Common Language Specification e CTS Common Type System Um dos principais objetivos do .Dataset podem ser utilizados em qualquer linguagem que possua um compilador para . os tipos System. como pchar e cardinal. por exemplo. como herança.String. era preciso declarar uma rotina externa e utilizar tipos básicos da API do Windows. Várias tecnologias surgiram com esse objetivo: o COM (Component Object Model). etc. System.NET. ActiveX etc.IO. VB.NET. System. Além disso.NET Figura 3. VB. baseando-se em um modelo único de desenvolvimento e oferecendo uma biblioteca de classes comum. a mesma utilizada no C#. Além disso. tratamento de exceção e polimorfismo.). através de uma especificação chamada CTS (Common Type System). Quem nunca precisou acessar a partir de sua aplicação uma DLL escrita em outra linguagem? As Type Libraries até que facilitavam um pouco esse processo. cada linguagem definia um conjunto próprio de tipos. você pode tirar proveito de todos os recursos oferecidos pela POO entre diferentes linguagens. DDE (Dynamic Data Exchange). GAC faz controle de versão de assemblies automaticamente: é o fim do DLL Hell CLS .NET utilizam os mesmos tipos básicos. Delphi etc. Por exemplo. Antes do .

números etc.manipulação de strings e textos.Web.NET. • System.Reflection . o namespace é System.UI . Para o desenvolvimento de aplicações visuais para Windows.Cache em ASP.NET.Configuration . 32 . contendo as respectivas classes para as finalidades indicadas: • System.desenvolvimento multi-tarefa.NET Framework é sua extensa biblioteca de classes e objetos. as classes foram organizadas em namespaces. temos classes para realizar praticamente qualquer tarefa de programação: trabalhar com arquivos. • System. • System.Security . • System. • System.NET .Runtime.Serialization .Threading .localização de aplicações (cultura).Web.Forms .reflexão no . Com isso. • System. Para facilitar. conectar a um banco de dados.Interoperabilidade .Remoting . • System. todas as classes básicas do framework estão localizadas no namespace System.NET e COM. E assim por diante. moeda.Web. NET.Runtime.NET Framework Class Library e Namespaces Provavelmente um dos melhores recursos do . No . • System.InteropServices . • System. • System.Windows.classe para criação aplicações COM+. No .Data . • System.Runtime.classes base para os principais protocolos da Internet.Windows.criação de aplicações visuais para Web com ASP.criação de aplicações GUI com Windows Form.Net .NET. construir/consumir Web Services. • System.Data.Configuração ASP. que são estruturas lógicas destinadas a agrupar classes e tipos com funcionalidades semelhantes. • System.EnterpriseServices .IO . • System. • System.aplicações de objetos distribuídos.Text .NET. Por exemplo.Forms.serialização de objetos. incluíndo formato de data.Services .NET.manipulação de arquivos.programação com Web Services usando ASP.Globalization . criar aplicações GUI ou para Web etc.E-Commerce com Delphi e ASP. As classes destinadas ao desenvolvimento para banco de dados estão sob o namespace System.conectividade com fontes de dados usando ADO.NET Framework. Figura 4. A Figura 4 mostra os principais namespaces do Framework. classes são organizadas logicamente em namespaces Veja alguns dos principais namespaces do framework.configuração de segurança. fica muito fácil (e intuitivo) a localização de e organização de classes no framework.NET Web Forms.Web. • System.Caching .

Object. tutoriais. microsoft. Ou sendo mais “radical” ainda: s := 10. Ou ainda. Para permitir a utilização de tipos Value como se fossem realmente objetos. incluindo exemplos. i.NET. s : string.processamento de documentos XML. Existem dois tipos de objetos no .NET Framework é totalmente orientado a objetos.NET utiliza um recurso chamado Boxing. desde inteiros.ToString(). onde existe uma extensa documentação sobre o assunto. Assemblies são unidades físicas.com.Mobile . Isso significa dizer que tudo no framework é um objeto. begin i := 10. Um Assembly pode definir vários namespaces. Referência Para mais informações sobre o .NET: • Reference: um objeto que é referenciado através de um endereço na pilha.Web. Por exemplo. • Value: são alocados diretamente na pilha. consulte a documentação do SDK. Não confunda namespace com Assemblies. O processo inverso é conhecido como UnBoxing. Geralmente utilizados nos tipos primitivos. System. Para sua referência futura. strings etc. enquanto namespace é simplesmente uma forma de organizar logicamente classes relacionadas.protocolos POP3 e SMTP.Web. o . Todos descendem obrigatoriamente de System. você pode ter o seguinte: var i: integer. System. Nota: Para uma lista completa de todos os namespaces. consulte o endereço msdn. como inteiros. Tipos de Objetos O . compilei no quadro a seguir um pequeno glossário de termos que provavelmente farão parte a partir de agora do seu dia a dia como desenvolvedor .desenvolvimento Mobile com ASP.NET • • • System.Mail . um ponteiro tipado.ToString(). strings até objetos de acesso a dados. permitindo que você possa chamar métodos e acessar suas propriedades. um namespace pode ter classes definidas em vários tipos diferentes assembly. diagramas etc. sempre contém um valor e não podem ser nulos.NET Framework.Xml .NET 33 .E-Commerce com Delphi e ASP.

MetaData. CIL e VES (veja a seguir).dll). Download e Instalação do .org/) para que outras empresas pudessem oferecer diferentes implementações. algumas aplicações podem parar de funcionar.NET. pelo menos em teoria.ecma-international. • Assembly – é a unidade básica de distribuição do . se você conhece Java. • CIL – Common Intermediate Language – compiladores construídos para a plataforma . • CLS – Common Language Specification – subconjunto do CTS.NET. • NameSpaces – no .NET. A especificação CLI inclui também as especificações do CTS. Delphi etc). • Managed Code – código compilado para a plataforma .NET Framework. pense nisso como algo semelhante ao bytecode. Para aqueles que conhecem o Java.NET Framework SDK e Redistributable podem ser obtidos a partir dos endereços: www. • GAC – Global Assembly Cache – normalmente você copia uma DLL para o diretório de sistema do Windows quando precisa compartilhá-la entre várias aplicações.microsoft. que é basicamente um conjunto de informações que descrevem os arquivos que o assembly contém e de que outros arquivos ele depende. NameSpaces permitem organizar tipos. Um assembly pode ser formado de um simples arquivo (. O GAC termina com isso. classes e identificadores.com/downloads/details. dados como imagens e recursos. o CLR é muito semelhante à JVM (máquina virtual Java). CLS. geram código intermediário (IL – Intermediate Language). seu código compilado possa rodar futuramente em diferentes plataformas.NET Framework • CLI – Common Language Infrastructure: é um dos principais fundamentos da plataforma . o que permite que. liberando recursos (como objetos) que não estejam mais sendo utilizados. desenhado para suportar diversas linguagens de programação que podem interagir entre si. quando uma nova versão da DLL é fornecida. define convenções e regras destinados a garantir a interoperabilidade entre diferentes linguagens (C#. incluindo herança. VB. Novamente. Entre suas principais funções.E-Commerce com Delphi e ASP. que é gerenciado pelo CLR. Unmanaged Code é o código de aplicações compiladas que não são gerenciadas pelo CLR e são nativas do processador. estão: conversão do código IL (Intermediate Language – linguagem intermediária) em código nativo da plataforma.exe ou .NET Framework O .aspx?FamilyID=9b3a2ca6-3647-40709f41-a333c6b9181d&DisplayLang=en 34 . • FCL – Framework Class Library – conjunto de classes do . • CTS – Common Type System – especificação que define um sistema comum de tipos (valor ou referência) que podem ser utilizados em diferentes linguagens de programação. • Manifest – cada assembly possui um manifesto. podendo conter o código IL. Ao invés disso. permitindo que você instale diferentes versões de um mesmo assembly: cada aplicação usará a versão para a qual foi compilada (recurso conhecido como side-byside execution – execução lado a lado). gerenciamento de memória automático (Garbage Collection) e verificações de segurança.NET não geram instruções nativas do processador. • CLR – Common Language RunTime – implementação da Microsoft para a especificação CLI.NET. execução das aplicações . ou ser construído a partir de vários arquivos.NET Framework. A Microsoft submeteu essa especificação à ECMA (European Computer Manufacturer’s Association – www.NET Mini-glossário do . manipulação de exceções e polimorfismo. • GC – Garbage Collector – mecanismo associado ao CLR que realiza a “coleta de lixo” (garbage collection). • JIT – Just-In-Time Compiler – mecanismo associado ao CLR que permite a compilação do código IL em código nativo da plataforma no momento da sua execução. CLI é uma especificação que define um ambiente virtual de execução (VM – virtual machine).

Para isso.microsoft. Caso tenha instalado o .microsoft.4322>aspnet_regiis.com/downloads/details.exe –i ECMA www.NET Framework antes do IIS.E-Commerce com Delphi e ASP.com/net/ecma .1. você pode usar o Adicionar>Remover Programas do Painel de Controle.ecma-international.aspx?FamilyID=262d25e3-f589-48428157-034d1e7cf3a3&DisplayLang=en Configuração do ASP.NET deste curso. é necessário executar a seguinte linha de comando: • • • • • 35 Links C:\WINDOWS\Microsoft.NET www.NET no IIS • Para rodar as páginas ASP. é preciso que você tenha o Internet Information Services instalado.org Links para as especificações msdn.NET\Framework\v1.

Criando uma Aplicação Web Forms Para facilitar. Olá Mundo ASP.NET Web Application (veja a figura a seguir). um TextBox e um Label. no ítem Delphi for . arquivos envolvidos. inicie uma nova aplicação clicando em File>New>Other.NET Neste capítulo vamos examinar alguns fundamentos básicos do desenvolvimento de aplicações ASP.NET Fundamentos do ASP. Vamos conhecer a estrutura de aplicações. vamos criar uma aplicação. Figura 2.NET Web Application). modelo de execução e conheceremos os principais objetos e classes do framework.E-Commerce com Delphi e ASP. A seguir.NET.NET No formulário principal. de forma que os conceitos serão expostos a seguir. coloque um Button. facilitando o entendimento dos fundamentos do desenvolvimento Web com o ASP. Seu formulário deve estar semelhante ao mostrado na Figura 2. No Delphi 2005.NET! 36 . O exemplo será extremamente simples. Criando uma aplicação ASP. Figura 1.NET Projects.NET. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. selecione o ítem ASP.

Text := TextBox1. clique no menu Run>Run. Execute e teste a aplicação (Figura 3).E-Commerce com Delphi e ASP.NET Os principais componentes da arquitetura ASP. Nota: Apesar de utilizarmos controles do lado servidor nos exemplos deste capítulo (Button.NET (Figura 4) são os Web Forms.Text. ASP. Arquitetura ASP. Se receber uma mensagem de erro do debugger. Figura 4. Com base neste exemplo.NET No evento Click do botão digite o seguinte: Label1. Aplicação estilo “Ola Mundo no ASP.NET. texto e Server Controls. vamos examinar alguns detalhes sobre aplicações ASP. Figura 3. eles não serão discutidos em detalhes nesta parte do curso. DLLs compiladas geram HTML dinâmico no servidor Web.).NET 37 . Arquivos de code-behind contêm a lógica da aplicação para o formulário associado. TextBox etc.NET Server Controls. Arquitetura de aplicações ASP.NET” Dica: Para executar a aplicação. Um Web Form contém elementos HTML. arquivos de Code-behind e DLLs compiladas. mas em capítulos seguintes. use a opção Run>Run without debugging.

2. O browser emite uma requisição HTTP ao servidor. Um dispositivo do framework ASP.E-Commerce com Delphi e ASP. O browser emite uma requisição HTTP ao servidor. O CLR carrega e executa imediatamente o código MSIL que já havia sido compilado durante a primeira requisição do usuário.NET Modelo de Execução A Figura 5 mostra o modelo de execução do ASP.NET. 2. • Global.aspx – página Web com controles e código html/aspx.config – arquivo de configuração da aplicação. podemos integrar facilmente 38 .NET executa um parser que interpreta o código-fonte e identifica todas as suas dependências. Esse é recurso conhecido como code-behind. Figura 5. 4.código intermediário). diferente do ASP. 3. • WebForm1.NET (CLR – Common Language Runtime) carrega e executa o código MSIL.asax – arquivo com código para responder aos eventos à nível de aplicação. Modelo de execução do ASP. há uma separação clara entre o código de interface (arquivo aspx) e o código servidor (arquivo .NET Arquivos Gerados Os seguintes arquivos foram gerados na aplicação: • NomeProjeto.dll – assembly compilado. • Web. em código MSIL.pas – contém a implementação dos eventos e código servidor responsável pelo processamento da página.pas). A página é compilada em MSIL (Microsoft Intermediate Language . Code-Behind Observe que. Quando algum usuário requisita a mesma página Web pela segunda vez. • WebForm1. a seguinte série de eventos ocorre: 1. Com isso. que funciona da seguinte forma: 1. O runtime do .

pas” AutoEventWireup=”false” Inherits=”OlaMundo. métodos e eventos.NET programadores e Web Designers em uma mesma equipe de desenvolvimento.0 Transitional//EN” > <HTML> <HEAD> <title></title> </HEAD> <body ms_positioning=”GridLayout”> <form runat=”server” ID=”Form1”> <p> <asp:TextBox id=”TextBox1” runat=”server”> </asp:TextBox> <asp:Button id=”Button1” runat=”server” text=”Button”></asp:Button> </p> <p> <asp:Label id=”Label1” runat=”server”>Label </asp:Label> </p> </form> </body> </HTML> 39 . O arquivo aspx pode ser modificado sem a necessidade de recompilação do projeto na IDE. escolha de um ítem em uma caixa de seleção e assim por diante. Por exemplo. o código é sempre compilado.E-Commerce com Delphi e ASP. que facilitam e muito a criação de formulários Web. NET é desenvolvimento RAD para Web. podemos desenvolver aplicações para Web de forma muito semelhante ao que fazíamos ao desenvolver aplicações para Windows. que podem ser herdados e reutilizados através de múltiplas aplicações. Isso é desenvolvimento POO. ASP.WebForm1” %> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4. Programação orientada a eventos O conceito de eventos no lado servidor facilita a inclusão de código em resposta a requisições e ações feitas sobre controles de tela. é muito simples interceptar e fornecer uma resposta/saída para um clique em um botão.NET introduz o conceito de controles no lado servidor. Cada controle possui propriedades. o que garante a performance superior do ASP. utilizando recursos visuais e drag & drop da IDE. Web Forms e Controles no servidor O ASP.NET.aspx criada na aplicação anterior: <%@ Page language=”c#” Codebehind=”WebForm1. Com isso. Além disso. Estrutura do documento aspx Vamos analisar o código e a estrutura da página WebForm1.

por exemplo). A tag form define como grupos de controles serão processados. POSITION: absolute. LEFT: 22px. Estão disponíveis duas opções: • FlowLayout – controles ajustam-se automaticamente na tela. Repare ainda o atributo runat nos controles. LEFT: 190px. LEFT: 22px. dependendo do tamanho da janela do browser. TOP: 54px”>Label</span> </form> </body> </html> Observe que cada controle tem um ID e que o ASP.definem como grupos de controles serão processados. • GridLayout – controles são fixados na página através de coordenadas absolutas. indicando que os mesmos irão rodar no servidor Web.NET usa estilos para posicionar os mesmos em coordenadas absolutas de tela. determinando como os controles e o texto serão posicionados.NET Analisando o código. o código que é enviado ao browser é HTML puro. Veja o código HTML gerado para o Web Form anterior: <html> <head> <title></title> </head> <body ms_positioning=”GridLayout”> <form name=”_ctl0” method=”post” action=”WebForm1. POSITION: absolute. 40 .NET é capaz de detectar o browser utilizado e enviar o código compatível com o mesmo. podemos decompor as funcionalidades de um Web Form em três níveis de atributos: • atributos da página (page attributes) . o atributo ms_positioning diz respeito ao layout da página.E-Commerce com Delphi e ASP. Por exemplo. apenas um formulário server-side poderá estar presente em uma página aspx. • atributos do formulário (form attributes) . Os atributos da tag body definem a aparência dos objetos que serão mostrados no browser. ajustado para o valor server. ele pode suprimir a utilização de Java Script se o mesmo não suportar (browsers mais antigos. O browser jamais “enxerga” o código aspx ou do arquivo fonte de code-behind. • atributos do corpo da página (body attributes) . O ASP. Apesar de você poder ter diversos formulários HTML em uma página. POSITION: absolute. Por exemplo.aspx. TOP: 22px” /> <span id=”Label1” style=”Z-INDEX: 3. TOP: 22px” /> <input type=”submit” name=”Button1” value=”Button” id=”Button1” style=”Z-INDEX: 2. A tag @Page define atributos específicos da página que serão usados pelo page parser do ASP.aspx” id=”_ctl0”> <input type=”hidden” name=”__VIEWSTATE” value=”dDwtMTA4MzE0MjEwNTs7PnBEsKiGxbH4nju5tJEN0hxXcynQ” /> <input name=”TextBox1” type=”text” id=”TextBox1” style=”Z-INDEX: 1. com algum Java Script.NET e pelo compilador.definem como uma página será mostrada.definem funções globais. Estrutura do documento HTML Obviamente. você pode incluir apenas uma tag @Page por arquivo .

begin Response.System. Vamos fazer um exemplo prático que mostra o uso do objeto. Algumas de suas principais propriedades são Cache.E-Commerce com Delphi e ASP. end.Hour > 12 then result := ‘Boa-tarde! Hoje é {0}’. selecione o ítem ASP. Filter e Buffer. Coloque no evento Load de um formulário. Criando uma aplicação ASP. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. A seguir.NET Response Response é declarado no namespace System. procedure TWebForm1. end. Cookies. Aplicação em execução 41 .Page_Load(sender: System.Format( GetSaudacao.String. É usado para encapsular respostas HTTP enviados pelo servidor Web ao browser. dando um duplo clique no Web Form.Object.Now)). No Delphi 2005. function GetSaudacao: System.NET Web Application). Alguns dos seus principais métodos são Redirect e Write. A Figura 7 mostra o exemplo em execução.Hour > 18 then result := ‘Boa-noite! Hoje é {0}’. begin result := ‘Bom-dia! Hoje é {0}!’. if DateTime.string.Web e é um objeto do tipo HTTPResponse. EventArgs).Write(System. Figura 7.NET Web Application (veja a figura a seguir).Now.NET Projects.NET O código a seguir demonstra a utilização do objeto. Figura 6. inicie uma nova aplicação clicando em File>New>Other.DateTime. no ítem Delphi for . e: System.Now. if DateTime.

Request.NET O código a seguir demonstra a utilização do objeto (coloque no evento Load de um formulário).Write(Format(‘PhysicalPath: {0} <hr>’.Write(Format(‘UserHostAddress: {0} <hr>’. EventArgs).UserHostAddress)).Write(Format(‘UserAgent: {0} <hr>’.NET Request Request é declarado no namespace System. end. Algumas de suas principais propriedades são QueryString.Write(Format(‘FilePath: {0} <hr>’. Response. selecione o ítem ASP. Response.FilePath)).Web e é um objeto do tipo HTTPRequest. Request. Response. parâmetros.Request. Response. 42 .): procedure TWebForm1. Response. variáveis etc.Path)).Request. Request.Write(Format(‘Path: {0} <hr>’. É usado para capturar informações enviadas pelo browser para o servidor durante o processo de uma requisição HTTP. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.Write(Format(‘RequestType: {0} <hr>’. IP. inicie uma nova aplicação clicando em File>New>Other.Request.RequestType)).HttpMethod)). begin with System.UserHostName)). Response. Criando uma aplicação ASP. Figura 8. Cookies e Files.E-Commerce com Delphi e ASP. e: System. end. Response. no ítem Delphi for .Write(Format(‘ApplicationPath: {0} <hr>’.Request.NET Projects.Request. Response. Response. No Delphi 2005. Response.Request.Write(Format(‘Url: {0} <hr>’.Write(Format(‘PhysicalApplicationPath: {0} <hr>’.Request.Write(Format(‘UserHostName: {0} <hr>’.Url)).PhysicalApplicationPath)).Object. A seguir.Headers)).NET Web Application (veja a figura a seguir). Request.Page_Load(sender: System.PhysicalPath)). Response.String do begin Response.Write(Format(‘HttpMethod: {0} <hr>’.Request.Write(Format(‘Headers: {0} <hr>’. exibindo no browser informações sobre a requisição (caminho.NET Web Application).UserAgent)).ApplicationPath)).

permitindo que o servidor armazene no browser informações sobre o cliente. no ítem Delphi for . Usando o objeto Request Cookies HTTPCookie é uma classe declarada no namespace System. Figura 9.NET Projects. Cookies são largamente utilizados por qualquer aplicação Web. Quando você visitar o site novamente. inicie uma nova aplicação clicando em File>New>Other. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. quando você entra em um Web Site e preenche um formulário com seus dados. A seguir. No Delphi 2005.NET Web Application (veja a figura a seguir).E-Commerce com Delphi e ASP. Por exemplo. o servidor é capaz de identificá-lo fazendo a leitura do respectivo cookie. 43 . selecione o ítem ASP.NET Web Application).NET A Figura 9 mosta o exemplo em execução.Web. o servidor pode gravar um cookie na sua máquina. usada para capturar/salvar informações na máquina cliente (browser).

AddDays(3).Text). EventArgs).Page_Load(sender: System.Today.String.NET Figura 10. sempre que o usuário “logar”. end.Button1_Click(sender: System.Web. Request. e: System.Format(‘Seja bem-vindo {0}’. e: System. procedure TWebForm1.Cookies[‘Usuario’] <> nil then Label1. solicitamos o nome do usuário na primeira vez que ele entra no site. Formulário principal da aplicação O código a seguir mostra os manipuladores para os eventos Click do botão e Load do formulário.Web. um Button e um Label (Figura 11). EventArgs). Response. A partir daí. gravando essa informação em um Cookie. var ck: System.Create(‘Usuario’.Expires := DateTime.HttpCookie. Figura 12.Value). begin // Cria Cookie.Add(ck). coloque um TextBox.NET No formulário principal. Figura 11.Text := System.HttpCookie.Object. verificamos se o Cookie existe (e não expirou) e damos uma mensagem de boas-vindas: procedure TWebForm1. Criando uma aplicação ASP. end.Cookies.Object. ck. Usando Cookies 44 . expira em 3 dias ck := System. begin if Request. No exemplo.E-Commerce com Delphi e ASP.TextBox1.Cookies[‘Usuario’].

No Delphi 2005.Page_Load(sender: System. inicie uma nova aplicação clicando em File>New>Other. Figura 14. selecione o ítem ASP. Figura 13.Object. A seguir.NET Web Application (veja a figura a seguir). precisamos saber se a requisição feita é a primeira ou é uma resposta subseqüente. EventArgs).NET Projects.Write(‘IsPostBack (não é a primeira)’).NET No formulário principal. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. no ítem Delphi for . Veja a aplicação em execução nas Figuras 14 e 15. Testando o IsPostBack 45 . coloque um Button e no evento Load do formulário digite: procedure TWebForm1.NET IsPostBack O evento Load de um formulário é sempre disparado quando uma requisição é enviada ao servidor. Criando uma aplicação ASP. No entanto.NET Web Application). begin if not IsPostBack then Response.Write(‘Primeira requisição’) else Response. e: System. Isso é possível através da verificação da propriedade IsPostBack do objeto Page. end. em algumas situações.E-Commerce com Delphi e ASP.

no ítem Delphi for .NET O código a seguir.NET Web Application). o MapPath. A seguir.E-Commerce com Delphi e ASP. 46 . Figura 15. IsPostBack permite identificar se a requisição é a primeira Server Server é declarado no namespace System.NET Web Application (veja a figura a seguir). como: CreateObject. Possui vários métodos utilizados no processamento de requisições HTTP. Figura 16. No Delphi 2005. que deve ser colocado no evento Load do form. inicie uma nova aplicação clicando em File>New>Other. selecione o ítem ASP. Criando uma aplicação ASP.NET Clique no botão neste momento. Deve ser usado sempre que possível. pois a indicação do caminho completo ao invés do relativo diretamente no código pode fazer com que sua aplicação pare de funcionar.NET Projects. CreateObjectFromClsid. que permite obter o caminho físico de um arquivo no disco. mostra como usar um importante método desse objeto. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. MapPath e Transfer. caso seja instalada em um local diferente do caminho utilizado em tempo de desenvolvimento.Web e é um objeto do tipo HTTPServerUtility.

A seguir. O método Transfer do objeto Server é outra forma de chamar uma página aspx (da mesma aplicação). DataSets. EventArgs). Figura 17. Criando uma aplicação ASP. Figura 18. begin // Retorna c:\inetpub\wwwroot\Cap04Ex06\WebForm1.Write(Server. porém permite passar dados diretamente no servidor de um formulário para outro.Redirect e Server.Page_Load(sender: System.NET Web Application). A Figura 17 mostra a aplicação em execução. vamos usar o Redirect para passar um valor digitado em um formulário para outro.aspx’)). você deve utilizar parâmetros na URL (como limitação de tamanho e uso de tipos de dados primitivos). que podem ser objetos. conexões etc. inicie uma nova aplicação clicando em File>New>Other.aspx Response. selecione o ítem ASP. Para passar dados de uma página para outra. e: System. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.NET Web Application (veja a figura a seguir). end.NET 47 .E-Commerce com Delphi e ASP. No Delphi 2005.MapPath(‘WebForm1.NET procedure TWebForm1.NET Projects. no ítem Delphi for .Transfer O método Redirect do objeto Response redireciona o usuário para uma nova página (URL). que pode ser tanto um site da Web externo ao projeto ou uma página aspx da própria aplicação. Em um primeiro momento. Vamos criar um exemplo que demonstra a utilização de ambas as técnicas. Aplicação em execução Response.Object.

aspx?Nome=’ + TextBox1.NET Page. begin Response. EventArgs). dê um clique de direita no nome da aplicação e a seguir selecione New>Other>New ASP.Button1_Click(sender: System. Isso passa o valor digitado no TextBox para a página WebForm2.Text). mude a linha do Redirect para: Server.Transfer(‘WebForm2. No evento Click do Button.Handler).Object.aspx. No primeiro formulário.Write(‘Olá ‘ + Request. digite o seguinte: procedure TWebForm2. digite o seguinte: procedure TWebForm1. E o evento Load do segundo formulário para: Response. Ao clicar em um produto. Dica: Para adicionar um novo formulário ao projeto.aspx’).QueryString[‘Nome’]). Por exemplo.E-Commerce com Delphi e ASP.Object. A URL formada pelo método Redirect anterior será algo do tipo: http://localhost/caminho/WebForm2. com a descrição e foto. obtendo mais informações sobre o mesmo. e: System.Text) 48 . EventArgs). obtidos a partir de uma consulta ao banco de dados. Aqui usamos QueryString do Request para recuperar o valor passado no primeiro formulário (Figura 19). end.NET Files>ASP. Passando informações entre páginas Esse recurso é bastante utilizado em vários tipos de aplicações Web. Para ver como funciona o outro método. poderíamos ter em uma página uma lista de produtos.Page_Load(sender: System. e: System.Redirect(‘WebForm2.aspx?Nome=Guinther No evento Load do segundo formulário. a partir do Project Manager.Write(‘Olá ‘ + TWebForm1(Context.NET Adicione um segundo formulário aspx ao projeto.TextBox1. passamos o código do mesmo para o outro formulário. que se encarregará de fazer uma consulta detalhada ao banco de dados. coloque um Button e um TextBox. end. begin Response. Figura 19.

altere seu especificador de visibilidade para public. tornando possível o acesso direto ao objeto. No Delphi 2005.NET Coloque os seguintes controles no formulário: Button. no ítem Delphi for . Figura 20. A seguir. TextBox e ListBox (Figura 21).Handler para o tipo do primeito WebForm.NET permite a utilização de alguns recursos especiais para recuperar o estado de controles.NET Projects. inicie uma nova aplicação clicando em File>New>Other. É claro. Criando uma aplicação ASP. Formulário principal da aplicação 49 . Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. Isso significa dizer que o servidor trata cada requisição cliente como se fosse uma nova solicitação.E-Commerce com Delphi e ASP. No código. Figura 21. fazemos um typecast em Context. o ASP.NET Web Application).NET Nota: Para ter acesso ao TextBox1 a partir de outra classe. selecione o ítem ASP.NET são state-less. Nenhuma informação é armazenada na memória do servidor após o envio da página HTML para o browser. Não é necessária a passagem de qualquer valor por URL. ViewState Aplicações ASP.NET Web Application (veja a figura a seguir).

Se toda requisição é tratada como se fosse uma nova. como Cache. o ASP. é mantido na memória do servidor entre as requisições. que deve estar semelhante ao mostrado a seguir: <input type=”hidden” name=”__VIEWSTATE” value=”dDwxODQ3MTM0NzMyO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0PHQ8O3A8bD xpPDA+O2k8MT47aTwyPjtpPDM+Oz47bDxwPE9sw6EgTXVuZG8gQVNQLk5FVCE7T2zDoSBNdW5 kbyBBU1AuTkVUIT47cDxFdSBtYW50ZW5obyBtZXUgZXN0YWRvIGVudHJlIHJlcXVlc3RzITtF dSBtYW50ZW5obyBtZXUgZXN0YWRvIGVudHJlIHJlcXVlc3RzIT47cDxVc2FuZG8gbyBWaWV3U 3RhdGU7VXNhbmRvIG8gVmlld1N0YXRlPjtwPFRlc3RlO1Rlc3RlPjs+Pjs+Ozs+Oz4+Oz4+Oz 7ZZcwCSIWouRv7D8d3ZO5Ume8Tyg==” /> Os dados de cada controle ficam“codificados”neste campo do tipo Hidden. 50 . Session etc.Items.Text).) deve ter ficado curioso como o ASP. como os ítens digitados persistiram? O recurso conhecido como View State possibilita que os controles armazenem automaticamente seu estado entre chamadas sucessivas (requisições) a uma mesma página. Assim. absolutamente NADA. Isso adiciona ao ListBox o texto digitado no TextBox.Add(TextBox1.NET No evento Click do botão digite: procedure TWebForm1. e: System. Figura 22. Além disso. Você pode visualizar esse recurso em funcionamento através do código fonte HTML gerado para a nossa página. ViewState faz o gerenciamento automático do estado de controles Se você já desenvolveu em alguma outra linguagem para Web (Java.NET pode “devolver” ao controle suas propriedades originais a cada requisição. Tudo de forma automática. veremos como adicionar nossos próprios objetos ao ViewState e como usar outros tipos de objetos para tratamento de sessão. ASP etc. end. Mais adiante neste curso esse recurso será explorado em mais detalhes.Button1_Click(sender: System.E-Commerce com Delphi e ASP.Object. begin ListBox1. pois NADA. Execute a aplicação e faça um teste adicionando vários ítens ao ListBox (Figura 22). PHP. isso garante a escalabilidade da solução. que é recuperado a cada requisição. Por exemplo.NET consegue manter os ítens digitados na lista. mesmo entre as requisições. EventArgs).

mostrar uma mensagem de erro ao usuário (usar um try except). Quando o usuário clicar no Button. A solução para este exercício pode ser encontrada nos apêndices do curso. exibir a soma dos dois números. passar o valor digitado nos dois TextBoxes como parâmetro da URL em um Redirect para o segundo WebForm. 51 . No primeiro Web Form. Se não for possível fazer a soma (os parâmetros não forem números. A seguir. Neste segundo WebForm. fazendo a conversão dos parâmetros da URL. por exemplo).NET com duas páginas ASPX. adaptar o mesmo exemplo para que use Cookies para guardar os valores do primeiro WebForm e recuperar no segundo WebForm. mantendo a mesma funcionalidade.NET Exercício Resolvido Criar uma aplicação ASP. colocar dois TextBoxes e um Button.E-Commerce com Delphi e ASP.

barras de ferramentas e outros elementos reutilizáveis. • User Controls – utilizados para adicionar elementos que se repetem em diversas páginas aspx.html www. Links • • • 52 Referência dos elementos HTML www.E-Commerce com Delphi e ASP. por exemplo). A lista a seguir mostra os HTML Controls e as respectivas tags HTML que eles geram.NET destinados a criação de aplicações Web Forms. Seu modelo de objetos não reflete necessariamente a sintaxe HTML. HTML Controls Os HTML Controls representam elementos HTML diretamente. Primeiro. bastando para isso adicionar o atributo RunAt = Server na definição do elemento no arquivo aspx.w3schools. Também podem rodar no servidor. • Validation Controls – são um tipo especial de Web Server Control. métodos e eventos.NET divide os tipos de controles. São geralmente usados na construção de menus. do que simples botões e caixas de textos. utilizados para validar entradas de usuário nos outros controles.com/reference/html40/alist.asp .com/html/html_reference. • Web Server Controls – são objetos que possuem uma implementação bem mais robusta que os HTML Server Controls.NET Web Forms e Controls N este capítulo vamos conhecer em detalhes os controles disponíveis no ASP. Tipos de Servers Controls Podemos dividir os Server Controls em quatro categorias: • HTML Server Controls – modelo de objetos que possuem estrutura bastante semelhante aos elementos HTML (tags) que eles geram. é importante saber como o ASP. eles permitem a verificação de um campo requerido. Para cada um. São indicados para a migração de formulários HTML para aspx. permitindo a construção de controles bem mais sofisticados (calendários.htmlhelp. examinaremos suas principais propriedades. Por exemplo. se um valor está em uma determinada faixa de valores específicos ou se é de um determinado tipo.

para gerar tabela de dados Para gerar tabela de dados Lista de opções. gerando um input type=”submit” Cria um calendário que pode ser bastante personalizado Cria um controle de checagem Cria uma lista de controle de checagem Um dos principais componentes do ASP.NET Controle Exemplo de Tag HTML gerada <a href = “pagina.NET. gerando a tag img src Mostra uma imagem que pode responder a um click de mouse Exibe uma label (texto) Botão que funciona como hyperLink Lista de opções selecionáveis Usado para inserir texto diretamente no código HTML. estilo ComboBox do Windows Forms Usado para criar links entre páginas Mostra uma imagem.aspx”></a> <input type=”button” value=”Button”> <input> <textarea></textarea> <input type=”password”> <input type=”submit” value=”Submit”> <input type=”reset” value=”Reset”> <input type=”image” src=”imagem.aspx”>Anchor</a> <img alt=”” src=”imagem.jpg”> <table border = “1”><tr><td>1</td></tr></table> <span>Span</span> <div>Div</div> <div ms_positioning=”FlowLayout”>Div</div> <div ms_positioning=”GridLayout”>Div</div> <hr> Controle Exemplo da tag HTML gerada Usado para fazer banners em páginas Um botão.E-Commerce com Delphi e ASP. exatamente como em aplicações Windows Forms Container para controles gerados dinamicamente no servidor Cria um botão de rádio para marcação Cria uma lista de botões de rádio para marcação Permite exibir ítens de uma lista (fonte de dados por ex.) usando templates Cria uma tabela (table) Usado para entrada de dados Mostra o conteúdo de um documento XML 53 . sem estilos Cria uma painel.jpg”> <input type=”checkbox”> <input type=”radio”> <select><option selected=”true”>1 </option><option>2</option></select> <select size=”2”><option>1</option><option>2 </option></select> <input type=”hidden”> <input type=”file”> <a href=”pagina.

Criando uma aplicação ASP. Básicos: Label e TextBox No Delphi 2005. Figura 1.NET No formulário principal colque três TextBoxes e um Label (Figura 2). no ítem Delphi for . O controle TextBox é usado para entrada de dados e pode assumir três diferentes formatos: 54 .NET Projects. que geram código HTML mais complexo e não representam diretamente elementos HTML simples. A lista a seguir mostra os Web Controls e uma breve descrição de sua funcionalidade.NET Web Application (veja a figura a seguir).NET Web Controls Os Web Controls são controles mais especializados.NET Web Application). O texto a ser exibido é configurado na propriedade Text. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. inicie uma nova aplicação clicando em File>New>Other. selecione o ítem ASP. Figura 2. Formulário principal da aplicação O controle Label permite que seja exibido um determinado texto estático em um Web Form.E-Commerce com Delphi e ASP. A seguir. que também pode conter uma declaração HTML.

end. no ítem Delphi for . AutoPostBack é uma importante propriedade disponível na maioria dos controles do ASP. dando um duplo clique na área branca ao lado do nome do evento. que pode ser SingleLine.NET • Entrada simples dados (padrão).Text := (Sender as TextBox). Figura 3. Wrap indica se o texto deve ser quebrado quando em modo MultiLine. adicione normalmente o evento no primeiro controle. Para os demais. A propriedade Columns do TextBox o tamanho horizontal do controle em caracteres. LinkButton e ImageButton No Delphi 2005. • Entrada de senhas. Rows indica o tamanho vertical em linhas quando o controle é configurado como MultiLine.NET Projects. Para alterar o comportamento anterior. Configure essa propriedade para True em todos os TextBoxes. MaxLenght especifica o tamanho máximo em caracteres. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. Ela indica se o controle irá disparar um evento imediatamente após a sua ocorrência ou somente quando o formulário for submetido. 55 . procedure TWebForm1. Dica: Para apontar os três manipuladores para o mesmo método.EventArgs). A seguir. • Entra de textos com múltiplas linhas.NET. use a propriedade TextMode do controle. MultiLine ou Password (use um para cada TextBox). Usando os controles básicos do ASP. inicie uma nova aplicação clicando em File>New>Other. selecione o ítem ASP.TextBox1_TextChanged(sender: System.Object.NET Botões: Button.ToUpper.NET Web Application).Text.E-Commerce com Delphi e ASP. selecione o evento já definido ao invés de dar o duplo clique. e: System. que mostra na Label o texto informado em caixa alta. begin Label1. Temos um único manipulador para o evento TextChanged dos três TextBoxes.NET Web Application (veja a figura a seguir).

A propriedade CausesValidation indica se o um Click no controle deve disparar as rotinas para validação da página. AlternateText indica o texto que deve ser mostrado caso a imagem não possa ser exibida no browser. Use a propriedade Text do Button para configurar seu texto.NET Os três tipos de botões disponíveis no ASP. LinkButton e ImageButton (coloque um de cada tipo no formulário). Para esse evento. Utilize o evento Click para inserir um manipulador no servidor em resposta ao evento de Click. porém ele é renderizado com um link HTML que pode submeter os dados para o formulário.NET Figura 6.E-Commerce com Delphi e ASP.NET Figura 4. Criando uma aplicação ASP. Para o ImageButton. Como alternativa. Usando botões em páginas ASP. O LinkButton é semelhante aos botões anteriores.NET são Button. é passado o valor de CommandName e CommandArgument do controle. As Figuras 5 e 6 mostram um exemplo de utilização dos botões. Figura 5. use a propriedade ImageURL para indicar a imagem usada no botão. Todos disparam um submit ao servidor quando clicados. vistas a seguir. Aplicação em execução 56 . você pode usar o evento Command para fornecer um manipulador no servidor em resposta ao Click no controle.

quatro Labels e um Button no formulário.NET Projects. por exemplo. inicie uma nova aplicação clicando em File>New>Other.E-Commerce com Delphi e ASP. A seguir.NET Web Application (veja a figura a seguir). que possam vir de uma tabela do banco de dados. Figura 7. Quando você selecionar um 57 .NET RadioButton e RadioButtonList No Delphi 2005. Somente um ítem do grupo pode estar selecionado. Figura 8. no ítem Delphi for . Criando uma aplicação ASP.NET Coloque quatro RadioButtons no formulário.NET Web Application). Formulário principal da aplicação RadioButtons representam uma lista de opções mutuamente exclusivas. Use a propriedade Text do RadioButton para indicar o seu texto. O RadioButtonList facilita a exibição de vários ítens. Use GroupName para agrupar vários RadioButtons relacionados. ajustando suas propriedades Text e posicionamento conforme mostrado na Figura 8. selecione o ítem ASP. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.

NET Projects.Text. EventArgs). No Delphi 2005. inicie uma nova aplicação clicando em File>New>Other.Text .Text := RadioButton2.NET Web Application). A propriedade Checked indica se o item está marcado. Figura 9.Text := ‘Comida preferida: ‘ + Label1. end.Text := RadioButton4.Checked then Label2.E-Commerce com Delphi e ASP. no ítem Delphi for . RadioButtonList Vamos fazer um exemplo com o RadioButtonList. Label1.Text else if RadioButton2. e: System. todos os demais RadioButtons que pertencem ao mesmo grupo serão desmarcados.NET item nele.Text else if RadioButton4.Object. Os RadioButtons devem ser organizados em dois grupos. Usando RadioButtons Aqui está o código que deve ser colocado no Click do botão: procedure TWebForm1.Text. mostramos os itens selecionados em dois Labels.Text := RadioButton1. A Figura 9 mostra o formulário em execução. A seguir.Checked then Label2. O RadioButtonList permite que você adicione os ítens diretamente em sua propriedade Items.Checked then Label1.Text := RadioButton3. selecione o ítem ASP.Button1_Click(sender: System.Checked then Label1. begin if RadioButton1. Ao clicar no botão. if RadioButton3.Text := ‘Esporte preferida: ‘ + Label2.Text . Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.NET Web Application (veja a figura a seguir). “Comida” e “Esporte” (use a propriedade GroupName). 58 . Label2. ou que traga os valores a partir de uma fonte de dados.

No exemplo. Criando uma aplicação ASP. usando a propriedade Items.Button1_Click(sender: System. O evento SelectedIndexChanged é disparado quando um ítem é selecionado. coloquei algumas cores (Figura 11).SelectedValue = ‘V’ then Button1. if RadioButtonList1. Verde e Laranja).Orange else Button1.índice = ‘ + RadioButtonList1.E-Commerce com Delphi e ASP.o índice do ítem selecionado (inicia em “0”).NET Figura 10. • SelectedValue . 59 . end.SelectedValue = ‘L’ then Button1.SelectedIndex.Blue else if RadioButtonList1.BackColor := Color. begin Button1. você pode usar o seguinte: • SelectedItem .BackColor := Color. Ítens do RadioButtonList Para recuperar o valor selecionado servidor.Text := RadioButtonList1.Green else if RadioButtonList1.ToString + ‘ .ToString.SelectedValue = ‘A’ then Button1. exibindo ainda em seu Text o texto e o índice do ítem corrente. • SelectedIndex . Se quiser que o mesmo seja executado imediatamente.BackColor := Color. EventArgs). com o texto completo. No evento Click do botão configuro a cor de fundo do mesmo com base no ítem selecionado (SelectedValue). Para cada cor (Azul.Text := ‘Por favor selecione uma cor’. adicionei um valor (Value) de retorno (A. você pode fornecer um texto para ser mostrado (Text) e o valor que é retornado ao servidor (Value).Object.V e L). e: System. A Figura 12 mostra o exemplo em execução usando o RadioButtonList. Observe que para cada ítem.NET Coloque um Button e um RadioButtonList no formulário e adicione alguns ítens nele. procedure TWebForm2.SelectedItem. lembre-se configurar o AutoPostBack = True.o ítem selecionado.o valor especificado para o ítem. Figura 11.

NET Figura 12.NET Projects. no ítem Delphi for . A seguir. 60 . Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.NET Web Application (veja a figura a seguir). vertical ou horizontal. DataTextField. inicie uma nova aplicação clicando em File>New>Other. Figura 13. selecione o ítem ASP. Personalizando o RadioButtonList Nota: As propriedades DataSource. quando estudarmos DataBindings.E-Commerce com Delphi e ASP. CheckBox No Delphi 2005.NET Web Application). em tabela ou flow.número de colunas. • RepeaterDirection – direção dos ítens. • RepeaterLayout – como são mostrados os ítens. DataMember. Usando RadioButtonList As seguintes propriedades podem ser configuradas para ajustar o layout do controle (Figura 13): • RepeaterColumns . DatatTextFormat e DataValueField são discutidas mais adiante.

Text indica o texto do controle. Sua propriedade Checked indica se foi marcado ou não. Usando um CheckBox 61 .E-Commerce com Delphi e ASP. Figura 15.CheckBox1_CheckedChanged(sender: System.Visible := CheckBox1.NET Figura 14.EventArgs). Formulário principal da aplicação O controle CheckBox é semelhante ao RadioButton. ajustando os textos e posicionamento conforme mostrado na Figura 15.Object.NET No formulário principal. Figura 16.Checked. begin TextBox1. No exemplo configuramos o TextBox como tendo Visible = False e o AutoPostBack do CheckBox como True. exceto pelo fato que podemos ter vários controles desse tipo marcados em um formulário. Criando uma aplicação ASP. coloque um CheckBox e um TextBox. O evento CheckedChanged é disparado quando o usuário altera a seleção. No evento CheckedChanged do controle mostramos ou não o TextBox de acordo com a escolha do usuário: procedure TWebForm1. e: System. end.

CheckBoxList1. A Figura 18 mostra o exemplo de uso do controle.Items.NET Web Application).’S’)).E-Commerce com Delphi e ASP.Create(‘StrikeOut’. por exemplo. EventArgs). e: System. no Page_Load: procedure TWebForm1. Figura 17.Create(‘Italic’.Add(ListItem.Add(ListItem. Figura 18. end.Items.NET Web Application (veja a figura a seguir). na propriedade Items. Usando um DataSouce. ao invés de adicionar os ítens estaticamente. end. no ítem Delphi for . os dados podem vir diretamente uma tabela do banco de dados.Add(ListItem. begin if not (IsPostBack) then begin CheckBoxList1.Items.Items.NET CheckBoxList No Delphi 2005.’I’)).Page_Load(sender: System.NET Projects. Criando uma aplicação ASP.Object. CheckBoxList1. inicie uma nova aplicação clicando em File>New>Other. Formulário principal da aplicação O controle CheckBoxList permite exibir uma lista de opções para serem marcadas. adicionei os valores em tempo de execução. Para variar um pouco. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.’U’)).NET Coloque um CheckBoxList e uma Label no formulário. selecione o ítem ASP.Add(ListItem. 62 . A seguir.’B’)).Create(‘Bold’.Create(‘Underlinee’. CheckBoxList1.

Items[3]. RepeaterDirection e RepeaterLayout.Items[0].Selected. begin Label1.NET Projects.E-Commerce com Delphi e ASP. end.EventArgs).Italic := CheckBoxList1.Selected.Items[1].Underline := CheckBoxList1.NET Web Application (veja a figura a seguir).e: System.Items[2]. inicie uma nova aplicação clicando em File>New>Other.Font.Font. Object. Usando um CheckBoxList CheckBoxList tem as mesmas propriedades do RadioButtonList para ajuste de layout.NET Web Application). no ítem Delphi for . Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. Figura 19.NET No evento SelectedIndexChanged do controle configuramos a formatação de uma Label conforme a escolha do usuário (lembre-se de configurar o AutoPostBack para True): procedure TWebForm1. 63 . Label1.Strikeout := CheckBoxList1.Bold := CheckBoxList1.Selected.Font. Label1.CheckBoxList1_SelectedIndexChanged(sender: System. selecione o ítem ASP. DropDownList No Delphi 2005. como RepeaterColumns. Label1. A seguir.Font.Selected.

quando estudarmos DataBindings. • SelectedValue .E-Commerce com Delphi e ASP. O evento SelectedIndexChanged é disparado quando um ítem é selecionado. Para recuperar o valor selecionado servidor. lembre-se configurar o AutoPostBack = True.NET Figura 20. Pode fazer o mesmo papel de um RadioButtonList.o índice do ítem selecionado (inicia em “0”). Aqui colocamos três DropDownList com AutoPostBack = True e um Label. ou que traga os valores a partir de uma fonte de dados. DataTextField.NET O DropDownList tem papel semelhante ao ComboBox do Windows Forms.o ítem selecionado. Formulário principal da aplicação 64 . As propriedades DataSource. Adicione os ítens diretamente em sua propriedade Items. Figura 21. DatatTextFormat e DataValueField são discutidas mais adiante. A Figura 21 mostra um exemplo de utilização do controle. Neste exemplo. você pode fornecer um texto para ser mostrado (Text) e o valor que é retornado ao servidor (Value). DataMember. • SelectedIndex . você pode usar o seguinte: • SelectedItem . Se quiser que o mesmo seja executado imediatamente. Criando uma aplicação ASP. coloque o controle no formulário e adicione alguns ítens nele. Observe que para cada ítem.o valor especificado para o ítem. porém ocupando bem menos espaço em tela. com o texto completo.

m := Convert.SelectedItem.data. d.ToString).TotalDays. Figura 22.SelectedItem. for i := 1800 to 2005 do DropDownList3.ToString + ‘ dias de vida’.DropDownList2_SelectedIndexChanged(sender: System. A seguir.Items.Add(i. Object. 65 .ToInt32(DropDownList3.Text := ‘Você tem ‘ + dif. begin d := Convert.E-Commerce com Delphi e ASP. data := DateTime. EventArgs). no ítem Delphi for .Items. Label1.Items. a := Convert. end. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.Create(a. var data: DateTime.Add(i.SelectedItem. end. a aplicação mostra na Label a quantidade de dias entre hoje e a data informada.Object.EventArgs).m.ToString).Page_Load(sender: System.Text).Text). e: System. e: System.ToInt32(DropDownList1. for i := 1 to 12 do DropDownList2. var i: integer.Today . Usando um DropDownList ListBox No Delphi 2005.ToString). end. inicie uma nova aplicação clicando em File>New>Other. begin if not (IsPostBack) then begin for i := 1 to 31 do DropDownList1.d). selecione o ítem ASP.m.NET Projects. Apontamos o evento SelectedIndexChanged de todos os controles para o mesmo manipulador: procedure TWebForm1.NET No Page_Load carregamos os controles: procedure TWebForm1.a: integer. dif: TimeSpan.Text).NET Web Application). dif := DateTime.Add(i. Com isso.NET Web Application (veja a figura a seguir).ToInt32(DropDownList2.

o índice do ítem selecionado (inicia em “0”). Usando um ListBox 66 . A propriedade Rows indica o número de linhas a serem exibidas no controle. A Figura 24 mostra um exemplo de uso do controle. Formulário principal da aplicação Quando o botão é clicado.Text). • SelectedIndex . EventArgs).SelectedItem. procedure TWebForm1.E-Commerce com Delphi e ASP. As seguintes propriedades indicam o ítem selecionado: • SelectedItem . Figura 24. Figura 25. Criando uma aplicação ASP. vistos até aqui. com o texto completo. • SelectedValue . Na propriedade Ítems indicamos os ítens a serem exibidos no controle. adicionamos o ítem selecionado ao segundo ListBox.Button1_Click(sender: System. usando a propriedade Items.add(ListBox1. end.NET Figura 23. e: System.Items.o valor especificado para o ítem. Suas propriedades são semelhantes as dos demais controles de seleção.o ítem selecionado.Object.NET O controle ListBox pode ser usado para apresentar uma lista de opções. Coloquei alguns ítens no primeiro ListBox. begin ListBox2.

Sua propriedade ImageUrl indica a imagem que deve ser exibida. Figura 26. DataTextField.NET As propriedades DataSource. O usuário escolha sua data de nascimento e ao clicar no botão exibimos uma figura representando seu signo.NET Web Application). DatatTextFormat e DataValueField são discutidas mais adiante. um Button e um Image. Criando uma aplicação ASP. A seguir. AlternateText indica o texto que deve ser mostrado caso a imagem não possa ser exibida no browser. Image No Delphi 2005.NET Projects. quando estudarmos DataBindings.NET Web Application (veja a figura a seguir). inicie uma nova aplicação clicando em File>New>Other.NET O componente Image é usado par exibir imagens em um formulário aspx. O exemplo da Figura 27 contém dois DropDownListBoxes. no ítem Delphi for . Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. Formulário principal da aplicação 67 .E-Commerce com Delphi e ASP. Figura 27. selecione o ítem ASP. DataMember.

O manipulador para o evento Click do botão é mostrado a seguir (para facilitar.Object.Page_Load(sender: System. Mes : integer.). end.String. if ((mes=3) and (dia>=21)) or ((mes=4) and (dia<=20)) then Signo := ‘Áries’. var Dia. mantendo a nomenclatura usada no código (“Touro.NET Veja o código para o Page_Load: procedure TWebForm1. end. Usando o controle Image 68 . for i := 1 to 12 do DropDownList2.Text).ToString). semelhante ao teste // anterior Label1.SelectedItem. e: System.Text).ImageUrl := System.Text := ‘O seu signo é ‘ + Signo. EventArgs). Figura 28.bmp” etc.ToInt32(DropDownList1. Image1.Add(i.Button1_Click(sender: System. inclui o teste para apenas dois signos.ToString). end. e: System.Object.SelectedItem. // Inclua o teste para os demais signos aqui.[Signo]).bmp’. EventArgs).”Áries.Format(‘{0}. você deve gravar no mesmo diretório da aplicação uma imagem que represente cada signo.bmp”. Para testar o exemplo. Mes := Convert.Items.ToInt32(DropDownList2. begin if not (IsPostBack) then begin for i := 1 to 31 do DropDownList1. Signo : string. var i: integer. begin Dia := Convert.Items. basta copiar o código do teste a ajustar as datas para testar os demais): procedure TWebForm1.E-Commerce com Delphi e ASP. if ((mes=4) and (dia>=21)) or ((mes=5) and (dia<=20)) then Signo := ‘Touro’.Add(i.

selecione o ítem ASP.E-Commerce com Delphi e ASP. Cada Panel contém controles internos. A propriedade Visible do Panel2 deve ser colocada como False.NET Projects. Figura 29. inicie uma nova aplicação clicando em File>New>Other. O exemplo de Figura 30 contém dois Buttons e dois Panels. Criando uma aplicação ASP. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. no ítem Delphi for . Figura 30. A seguir.NET Web Application).NET Web Application (veja a figura a seguir).NET Panel No Delphi 2005. Formulário principal da aplicação 69 .NET O componente Panel serve como um container para outros componentes colocados no Web Form.

Visible := False.Visible := False. Panel2. begin Panel2. Figura 31. procedure TWebForm1.Button1_Click(sender: EventArgs). EventArgs).NET Projects.Object.NET Web Application (veja a figura a seguir).Visible := True. begin Panel1. Criando uma aplicação ASP. Usando Panels Calendar No Delphi 2005. inicie uma nova aplicação clicando em File>New>Other.Button2_Click(sender: System. Panel1. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP.Visible := True. System. e: System. Figura 32.Object. end. end.NET 70 . A seguir. no ítem Delphi for . e: System.NET O código a seguir mostra os manipuladores para os eventos Click de Button1 e Button2: procedure TWebForm1.E-Commerce com Delphi e ASP.NET Web Application). selecione o ítem ASP.

NET Web Application). 71 . Figura 34. Lembre-se de dar um nome (Name) para aplicação na janela que aparecerá a seguir (New ASP. e: System. SelectorStyle TitleStyle. Use a propriedade DayHeaderStyle. semana ou mês.ToString(‘dd/MM/yyyy’). DayStyle.Text := ‘Data selecionada: ‘ + Calendar1. com várias opções de customização e layout. A seguir. NextPrevStyle. begin Label1. inserimos o seguinte manipulador no evento SelectionChanged: procedure TWebForm1. no ítem Delphi for . que pode ser dia. SelectDayStyle. end. Usando Calendar AdRotator No Delphi 2005.NET O componente Calendar permite exibir um calendário para seleção de datas.EventArgs). Figura 33. OtherMonthDayStyle.Calendar1_SelectionChanged(sender: System. O exemplo da Figura 33 mostra em um Label a data selecionada no calendário.NET Web Application (veja a figura a seguir). inicie uma nova aplicação clicando em File>New>Other.E-Commerce com Delphi e ASP. selecione o ítem ASP.NET Projects. Formulário principal da aplicação Para isso.SelectedDate.Object. TodayDayStyle e WeekendDayStyle para personalizar cada um dos estilos do calendário. SelectionMode indica o tipo de seleção feita.

jpg</ImageUrl> <NavigateUrl>http://www.NET Figura 35. chamadas respectivamente de imagem1.jpg</ImageUrl> <NavigateUrl>http://www. Figura 36.com. selecionada randomicamente. Tem uma característica especial: permite randomizar uma lista de imagens.jpg e imagem2.portalwebmobile.br</NavigateUrl> <AlternateText>Portal WebMobile</AlternateText> <Keyword>Web Mobile</Keyword> </Ad> </Advertisements> Coloque duas imagens no mesmo diretório da aplicação. 72 .jpg. coloque-o no formulário um AdRotator.xml. cada usuário que entrar no site verá uma imagem diferente.E-Commerce com Delphi e ASP.net</NavigateUrl> <AlternateText>ClubeDelphi</AlternateText> <Keyword>Delphi</Keyword> </Ad> <Ad> <ImageUrl>imagem2. Para ver como o componente funciona.clubedelphi. que é mostrado a seguir: <Advertisements> <Ad> <ImageUrl>imagem1. Cada vez que o formulário é exibido. uma imagem randomizada lida a partir do arquivo XML é mostrada (Figura 37). Criando uma aplicação ASP.NET O componente AdRotator é usado para exibir uma banner na página. Formulário principal da aplicação Aponte sua propriedade AdvertisementFile para o arquivo imagens.

em pixels A Figura 38 mostra um exemplo de utilização dessas propriedades em alguns controles: Figura 38. Dotted. Ridge e Solid. NotSet. Veja a seguir uma lista das principais propriedades: Propriedade AccessKey BackColor BorderStyle BorderWidth Font-Bold Font-Italic Font-Name Font-Names Font-Overline Font-Size Font-StrikeOut Font-Underline ForeColor Height TabIndex ToolTip Width Descrição Indica a tecla de atalho para selecionar um controle (Alt + AccessKey) Cor de fundo do controle Estilo da borda do controle. Double. que permitem configurar sua aparência e estilo. Formatando controles 73 . Possíveis valores: Dashed. quando o mouse repousa sobre ele Tamanho do controle. AdRotator permite exibir banners na aplicação Formatação de controles A maioria dos Web Controls vistos até aqui.E-Commerce com Delphi e ASP. None. possuem propriedades em comum. Outset. Groove. em pixels Ordem de tabulação do controle Hint do controle.NET Figura 37. Inset. Tamanho da borda em pixels Se o texto do controle é mostrado em negrito Se o texto do controle é mostrado em itálico Nome da fonte usada no controle Lista de nomes de fontes possívels para serem usadas no controle Coloca uma linha sobre o texto Tamanho em pixels do texto do controle Mostra o texto “riscado” Sublinha o texto do controle Cor de frente do controle Altura do controle.

E-Commerce com Delphi e ASP. basta definir o nome da classe CSS para a propriedade CssClass. No arquivo aspx.TestStyle { FONT: 12pt tahoma. defina o seguinte estilo. Para fazer um teste. coloque um Label. basta digitar “TestStyle” na propriedade CssClass dos controles para que eles usem o estilo definido (Figura 39). Figura 39. em uma nova aplicação. COLOR: blue } </style> Agora. dentro do elemente Head: <style> . Usando estilos CSS 74 .NET Usando estilos Para usar estilos em Web Controls. um TextBox e um ListBox.

75 . obter o número do cookie para ser utilizado na operação corrente. Utilize Buttons para os números e ImageButtons para as operações (coloque algumas imagens personalizadas para soma. Implemente as funcionalidades de memória.). As funcionalidades da calculadora devem ser implementadas em um classe em um arquivo a parte. gravar o valor atual do textBox em um cookie.NET. Quando o usuário apertar em um botão para “Gravar em Memória”.E-Commerce com Delphi e ASP. em Flow Layout. Quando ele clicar em “Recuperar Memória”. O resultado das operações deve ser exibido em um TextBox. subtração etc. Utilize um HTML Table para organizar os controles. A solução para o exercício pode ser encontrada nos apêndices do curso.NET Exercício resolvido Crie uma calculadora usando controles ASP.