Professional Documents
Culture Documents
Net
ndice Capitulo I Definies......................................................................................................2 Capitulo II O ASP.NET..................................................................................................4 Introduo.....................................................................................................................4 ASP.NET, HTML, C# e DELPHI.NET ......................................................................4 Operadores de atribuio, comparao e lgicos.........................................................5 Operadores de aritmticos............................................................................................5 Operadores de incremento e decremento......................................................................6 Contadores....................................................................................................................6 Tipos/Variveis.............................................................................................................6 Tipos Vetores................................................................................................................6 Capitulo III Estruturas lgicas........................................................................................7 Estruturas .....................................................................................................................7 Estrutura de bloco.........................................................................................................7 Estrutura de deciso simples ........................................................................................7 Estrutura de deciso multipla ......................................................................................7 Estruturas de repetio..................................................................................................8 Capitulo IV Instalao do Internet Information Server..................................................8 Instalao de IIS em Windows XP profissional...........................................................8 Acessar ao servidor web ..............................................................................................9 Ativando e Desativando o IIS em Windows XP profissional....................................10 Capitulo V Escolhendo uma ferramenta.......................................................................12 Apresentao do Delphi 2005.....................................................................................12 Escolhendo uma linguagem intermediria.................................................................13 Apresentao do Visual Studio 2005...............................................................................15 Escolhendo uma linguagem intermediria.................................................................15 Capitulo VII Conhecendo uma IL................................................................................17 A pgina de cdigos C# (Codificao para ferramenta DELPHI 2005). ..................17 A pgina de cdigos Delphi.NET (Codificao para ferramenta DELPHI 2005). . . .18 A pgina de cdigos C# (Codificao para ferramenta VISUAL STUDIO 2005). . .19 Projeto 01 Conhecendo objetos...............................................................................20 Projeto 02 Conhecendo objetos...............................................................................21 Projeto 03 Conhecendo objetos...............................................................................22 Projeto 04 Conhecendo objetos...............................................................................24 Projeto 05 Conhecendo objetos...............................................................................25 Capitulo VII Trabalhando com estruturas....................................................................26 Projeto 06 Tomando uma deciso simples..............................................................26 Projeto 07 Permitindo ou negando acesso a uma pgina.........................................28 Projeto 08 Montando um menu...............................................................................31 Projeto 09 Ampliando uma imagem........................................................................35 Capitulo VIII Trabalhando com bases de dados...........................................................39 Projeto 11 Testando a existncia e a senha de um usurio .....................................43 Projeto 12 Um menu Animado! ..............................................................................48 Projeto 13 Incluindo, excluindo e alterando dados em uma tabela Mtodo I Utilizando o Borland Data Provider............................................................................52 Projeto 14 Incluindo, excluindo e alterando dados em uma tabela Mtodo II Utilizando Data Components.......................................................................................55
Capitulo I Definies
1. Sistema Operacional Conjunto de pequenos softwares capazes de controlar as diversas funes de um hardware. Exemplos: WINDOWS, LINUX, DOS, UNIX... etc 2. Linguagem Conjunto de cdigos capazes de descrever uma ao a ser realizada por um processador ou sistema computacional. 3. Aplicaes Todo desenvolvimento baseado em uma linguagem desenvolvido para um nico fim.
5. 6.
.NET Tecnologia da Microsoft para desenvolvimentos de Web Services; CLR (Common Language Runtime) Ambiente de tempo de execuo que fornece os servios necessrios a todas as aplicaes .NET (compilao, gerenciamento de memria e garbage collection); 7. Assemblies Comandos compilados para assembler disponveis na web para utilizao em CLR; 8. Biblioteca de classes Conjunto de assemblies distribudos em classes de acordo com suas funcionalidades; 9. ASP.NET (Active Server Pages) Tecnologia da Microsoft baseada em servidor que permite desenvolvimentos de pginas Web dinmicas e interativas; 10. ADO.NET (Activex Data Object) Tecnologia .Net que permite aos desenvolvedores criar aplicaes para vrias origens de dados; 11. VCL for .NET (Visual Component Library) Tecnologia Borland que permite aos desenvolvedores criar aplicaes Web integrando as tecnologias ADO.NET e ASP.NET; 12. Web Services
So chamadas de procedimento remoto feitas na internet utilizando XML como formato de mensagem de comunicao e http/HTTPs como meio de comunicao; 13. RPC (Remote Procedure Calls) Chamada de Procedimento Remoto (internet) atravs de um protocolo de comunicao; 14. Protocolo http (HiperText Markup Language) Linguagem de programao usada para criar uma pgina Web 15. XML (Extensible Markup Languagem) Linguagem de formato flexvel baseada em texto para publicao por meios eletrnicos, utilizada na passagem de mensagens entre clientes do Web Service; 16. SOAP (Simple Object Access Protocol) Protocolo para Web Service baseado no padro XML utilizado para invocar chamadas de RPC; 17. WSDL (Web Service Description Language) Linguagem baseada em XML utilizada para descrever os recursos de um Web Service; 18. UDDI (Universal Description, Discovery and Integration) um registro pblico para armazenamento de informaes sobre e para publicao de Web Services; 19. Servidor Equipamento onde esta armazenada uma soluo de Web Service; 20. Cliente Cada um dos usurios de uma soluo de Web Service; 21. Plataforma (Windows, Linux, etc) Base estrutural sobre a qual ser aplicada a soluo de Web Service; 22. Ferramenta de desenvolvimento (Delphi, Visual Studio) Aplicativo utilizado para desenvolvimento da soluo de Web Service;
23.
Linguagem Intermediria IL (Delphi.NET(pascal), C#, Visual Basic) a linguagem utilizada como fonte para o desenvolvimento de Web Service. A microsoft resolve denominar as ILs como MSIL (Microsoft Intermediate Language); Observaes:
d)
e) Existem muitos componentes reutilizveis de terceiros disponveis na internet, pesquise no google .NET Components
f)
O W3C (World Wide Consortium) uma agncia reguladora sem fins lucrativos, onde se encontram especificaes, diretrizes, softwares e ferramentas relevantes ao uso da World Wide Web (www.w3c.org). g) Outras tecnologias WEB:
JSP (Java Server Page); PHP (Personal Home Page); Cold Fusion; ISAPI; NISAPI; IDC/HTX.
Capitulo II O ASP.NET
Introduo ASP.NET (Active Server Pages.NET) compe a forma de se criar pginas da Internet utilizando-se a plataforma .NET. Esta plataforma prov uma srie de servios, atravs de classes existentes no Microsoft .NET Framework. Com ele, possvel a construo no apenas de pginas Web, mas tambm, de aplicativos desktop, aplicativos para dispositivos mveis, objetos de negcios, web services, etc. Pode-se dizer que a plataforma .NET similar plataforma Java, que tambm oferece diversos servios. Dentre suas principais diferenas, destacam-se as seguintes caractersticas: a plataforma Java utiliza a linguagem de programao Java e seus aplicativos so hbridos (compilados e interpretados, caracterstica que permite que os aplicativos sejam multi-plataforma); enquanto que em .NET, pode-se utilizar Visual Basic.NET, C++, JScript.NET, Delphi.NET ou C#, e os aplicativos gerados so compilados em uma linguagem chamada MSIL (Microsoft Intermediate Language). No caso das pginas ASP.NET, sua compilao realizada no momento em que elas so chamadas pela primeira vez atravs do browser, que apresenta o contedo final em HTML (Hypertext Markup Language). A execuo de pginas ASP.NET requer a utilizao do IIS (Internet Information Server), alm da instalao do .NET Framework SDK. As pginas ASP.NET podem ser escritas utilizando-se editores de textos planos, tal como Bloco de Notas e Vi. Porm, existem vrias ferramentas que auxiliam o desenvolvimento de pginas ASP.NET. Algumas das ferramentas de maior destaque so: - Microsoft ASP.NET Web Matrix - um software especfico para construo de aplicativos para a Web que utilizam a plataforma .NET. bastante leve (1,3 Mb), apesar de prover muitos recursos de desenvolvimento. uma ferramenta gratuita, podendo ser baixada em http://www.asp.net/webmatrix/. - Macromedia Dreamweaver MX seguindo a tradio de suas verses anteriores, este software suporta vrias tecnologias (ASP, ASP.NET, JSP, PHP, CSS, Java, XML, entre outras). Uma verso para teste pode ser encontrada em http://www.dreamweaver.com. - Microsoft Visual Studio .NET considerado pela Microsoft, o seu principal ambiente de desenvolvimento, suportando a criao de solues baseadas na plataforma .NET, incluindo-se aplicativos desktop, ASP.NET, web services, classes, aplicativos para dispositivos mveis, entre outros. Sua pgina na Internet http://msdn.microsoft.com/vstudio/. - Delphi for .NET ambiente de desenvolvimento integrado da Borland para construo de aplicaes .NET ou desktop,ambas com viso ALM (Application Lifecycle Desenvelopment), que acompanha todo o ciclo de vida da aplicao. Sua pgina na internet http://www.borland.com. ASP.NET, HTML, C# e DELPHI.NET As pginas ASP.NET produzem arquivos de extenso .aspx. Normalmente, elas so divididas em duas sees principais: HTML e uma linguagem intermediria-IL (C Sharp representado por C#, Delphi.NET(pascal), Visual Basic). Assim, o cdigo IL colocado dentro do elemento script, antes do cdigo HTML propriamente. necessrio ainda, que seja explicitada a linguagem que est sendo utilizada, o que feito com uso da diretiva Page Language, que adicionada no incio do cdigo da pgina. Um exemplo simples de uma pgina ASP.NET o seguinte:
1 2 3 4 5 6
<%@ Page Language="C#" %> <script runat="server"> void limpar(object sender, EventArgs e) { Label2.Text = " "; } </script>
CODIGO ASP.NET
7 <html> CODIGO HTML 8 <body> 9 <form runat="server"> 10 <div align="center"> 11 <asp:Label id="Label1" runat="server" font-size="Large" font-bold="True"> Pgina de 12 Exemplo</asp:Label> 13 <asp:Label id="Label2" runat="server">Esta uma pgina de exemplo, onde exemplificada 14 a diviso entre o cdigo HTML e ASP.NET</asp:Label> 15 <asp:Button id="Button1" onclick="limpar" runat="server" text="Limpar"/> 16 </div> 17 </form> 18 </body> 19 </html>
Nota-se, que o elemento script possui um atributo runat, que possui o valor server. Isto significa que todo o contedo deste elemento estar sendo executado no servidor. Isto necessrio pelo fato de ser o servidor, o lugar onde est instalado o .NET framework (o cliente no necessariamente o ter instalado). As linguagens C# e Delphi.NET possuem algumas caractersticas prprias, porm suas estruturas sob do ponto de vista lgico so semelhantes. A Code Gear atual detentora do Delphi resolve chamar de Delphi.NET a codificao PASCAL, portanto para fins didticos, tambm o farei. Operadores de atribuio, comparao e lgicos Operador Atribuio Comparao Diferente Menor que Maior que Menor ou igual Maior ou igual E (lgico) Ou (lgico) No (lgico) No exclusivo Operadores de aritmticos Operador Adio Subtrao Multiplicao Diviso simples Diviso de inteiro Mdulo Potenciao Delphi.NET + * / div mod No existe C# + * / / % ^ Delphi.NET := = <> < > <= >= and or not xor C# = == != < > <= >= && || ! ^
Operadores de incremento e decremento Operador Incremento Decremento Contadores Operador Contador Tipos/Variveis Tipo Inteiro de 8 bits com sinal Inteiro de 8 bits sem sinal Inteiro de 16 bits com sinal Inteiro de 16 bits sem sinal Inteiro de 32 bits com sinal Inteiro de 32 bits sem sinal Inteiro de 64 bits com sinal Inteiro de 64 bits sem sinal Flutuante simples Flutuante duplo Decimal fixo Monetrio Data/hora Variante Caracter de 1 byte Caracter de 2 bytes String fixo String dinmica de 1 byte String dinmica de 2 byte Booleano Tipos Vetores Array Definido pelo usurio Delphi.NET X: array[a..n] of tipo Exemplo: X:Array[0..7] of string; X: array of tipo Obs: utilize SET LENGTH( ) para alocar memria ao array Exemplo: X array of string; Set length(X,30); C# Tipo X[n] Exemplo: int X[8]; No definido Delphi.NET ShortInt Byte Smallint Word Integer Cardinal Int64 Uint64 Single Double No existe Currency TDateTime Variant, OleVariant Ansichar Char, WideChar ShortString AnsiString String, WideString Boolean C# sbyte byte short ushort int uint long ulong float double decimal No existe No existe No existe No existe char No existe No existe string bool Delphi.NET x:= x+ n C# x+=n Delphi.NET Inc( ) Dec( ) C# ++ --
Dinmicos
Registros Por definio a chamada de registros tanto em Delphi.NET como em C#, se d atravs
de estruturas. Delphi.NET C#
Type Public struct MyRec MyRec = record { I : Integer; int I; d: Double; double d; end; } Obs: Ao se trabalhar com um registro use um ponto para acessar seus campos Exemplo: Var N: MyRec; begin N.i :=23; N.d := 3.4; end;
Estruturas As estruturas so comandos que possuem um incio, um corpo e um fim, onde o corpo pode conter outros comandos ou estruturas. Estrutura de bloco Utilizada para agrupar comandos. Lgica Comeo aqui so colocados comandos da estrutura fim Delphi.NET begin aqui so colocados comandos da estrutura end C# { aqui so colocados comandos da estrutura }
os
os
os
Estrutura de deciso simples A estrutura de deciso simples permite ao processador desviar o fluxo da aplicao em funo de uma deciso lgica condicionada. Lgica Se condio ento comeo comandos executados se a condio for verdadeira fim seno comeo comandos executados se a condio no for verdadeira fim Delphi.NET if condio then begin comandos executados se a condio for verdadeira end else begin comandos executados se a condio no for verdadeira end; C# If condio { comandos executados se a condio for verdadeira } else { comandos executados se a condio no for verdadeira }
Estrutura de deciso multipla A estrutura de deciso multipla permite ao processador desviar o fluxo da aplicao em funo de diversas decises lgicas condicionadas a uma nica questo. Lgica Caso varivel faa Caso 1: comandos Delphi.NET case varivel of C# switch (varivel) {
case 1: comandos; break; case 2: comandos; break; case n:comandos; break; default: comandos; }
Estruturas de repetio As estruturas de repetio criam blocos de comandos que se repetem de forma controlada. Lgica Comando ENQUANTO: Enquanto condio faa Comece Comandos Fim do enquanto Comando CONTE: Conte varivel de valor 1 at valor 2 faa comece comandos fim Delphi.NET while condio do begin comandos; end; for var:=val1 to val2 do begin Comandos; end; C# while (condio) { comandos; } for (int var=val1;i>valor; i++) { Comandos; }
Como o objetivo principal demonstrar ao leitor as tcnicas para programao Web utilizando-se da ferramenta Delphi 2005, trataremos cada exemplo abordado, nas duas linguagens (Delphi.NET (Delphi Net) e C# (ASP.Net), sempre com a imparcialidade necessria.
2) No Painel de controle, selecionar a opo de "Adicionar ou remover programas" e na janela que sai, clicar sobre o cone da esquerda marcado como "Selecionar ou remover componentes de Windows".
Agora nos mostra a janela para selecionar os componentes adicionais de Windows que esto disponveis. Na lista, marquei a opo "Servios de Internet Information Server (IIS)". Por padro se selecionam alguns componentes, dentro dos que oferece a instalao de IIS. Ns podemos escolher que componentes desejei instalar apertando o boto marcado como "Detalhes". Entre os possveis componentes se encontram as extenses de Frontpage, documentao, servios adicionais de IIS, um servidor de FTP (para a transferncia de arquivos com o servidor por FTP), inclusive de SMTP (para o envio de correios eletrnicos).
Uma vez instalado os componentes desejados, podemos apertar o boto de "Seguinte" para comear a instalao, que demorar uns minutos. Acessar ao servidor web Podemos acessar ao servidor web para comprovar se foi instalado corretamente IIS. Para isso, simplesmente devemos escrever http://localhost em Internet Explorer e dever aparecer uma pgina
web informando que IIS est corretamente instalado. Alm disso, aparecer a documentao de IIS em uma janela emergente, se tiver sido instalada.
Ativando e Desativando o IIS em Windows XP profissional Quando o IIS estiver parado, isto o servio no foi iniciado ou foi interrompido por um motivo qualquer, torna-se impossvel a exibio de pginas a partir de determinados servidores, surgindo a seguinte tela:
Para ativar o IIS proceda conforme descrito: Clique em iniciar; Painel de controle; Ferramentas administrativas; Internet Information Services.
Status do IIS
Inicializa o IIS
Para iniciar ou reinicializar o administrador do IIS e os servios dependentes deste proceda da seguinte forma: Clique em iniciar; Painel de controle; Ferramentas administrativas; Servios; Servios de Administrao do IIS.
Ao se reiniciar os Servios de administrao do IIS, os servios de publicao na Web, SMTP e FTP tambm sero reiniciados.
Capitulo
Apresentao do Delphi 2005 Tela de Abertura
Mdulos carregados
Aps o carregamento dos mdulos o delphi mostrar a sua tela inicial, atravs da qual definiremos que tipo de aplicativo faremos e com qual linguagem intermediria iremos trabalhar.
Menu Principal Barra de ferramentas Regio de estrutura Gerente de projeto Configurao de objetos Paleta de componentes
Uma vez carregado o Delphi definiremos o tipo do aplicativo que queremos desenvolver:
2. 3. 4. 5.
c. Search (procura): Operaes de busca e troca; View (visualiza): Promove a visualizao de janelas, formulrios, units e helps; e. Refactor: Operaes de renomeao, localizao, declaraes de variveis; f. Project: Operaes de incluso, excluso, compilao de Units; g. Run (executar): Executa, compila projetos; h. Component (componentes): Instala e habilita componentes ou pacotes; i. Tools (ferramentas): Executa aplicativos externos ao delphi; j. Star Team (equipe estrela): Define um grupo para desenvolvimento comum; k. Window (janela): Permite o controle de janelas; e l. Help (ajuda): Chama arquivos de ajuda. Structure: Aponta para as estruturas (procedimentos, bibliotecas, variveis), existentes em um projeto; Object inspector: Descreve as propriedades e os eventos dos objetos utilizados em um projeto; Project Manager: Aponta para todas as pginas anexadas ao projeto; Tool palete: Paleta de componentes, armazena todos os objetos disponveis para utilizao no projeto. d.
Escolhendo uma linguagem intermediria A deciso para definio da linguagem a ser empregada em um projeto delphi ocorre no momento da sua criao. Clique na opo File; Selecione New;
Para montar a aplicao usando C# como IL: Escolha a opo: File... New... ASP.NET Web Application C#Builder
Aps escolher a opo acima devemos indicar o diretrio onde ser armazenada a aplicao:
Para montar a aplicao usando Delphi.Net como IL: Escolha a opo: File... New... ASP.NET Web Application Delphi for .Net
Para ambas linguagens o delphi far os mesmos questionamentos a respeito do projeto a ser criado, solicitando o nome para aplicao, o local onde sero armazenadas as pginas e qual o servidor a ser utilizado. A figura a seguir demonstra tal questionrio.
Indica o nome para aplicao Indica o local para as pginas Indica qual o servidor
Quando no se menciona um nome para a aplicao o delphi sugerir o nome padro WebApplication acompanhado do nmero seqencial das pastas contidas na pasta padro C:\netpub\wwwroot\.
Menu principal Barra de ferramentas Pgina inicial Lista dos ltimos projetos
rea de desenvolvimento
Uma vez carregado o Visual Studio definiremos o tipo do aplicativo que queremos desenvolver: Menu Principal: Regio onde so mantidos os comandos do Visual Studio referentes a: a. File (arquivo): Operaes com arquivos (novo, abrir, salvar, fechar, sair); b. Edit (editar): Realiza operaes de copia, colagem, excluso, desfazer, refazer e seleo; c. View (visualiza): Promove a visualizao de janelas, formulrios, codes e helps; d. Tools (ferramentas): Habilita ferramentas de apoio ao visual studio; e. Window (janela): Permite o controle de janelas; f. Comunity: (comunidade): Permite contato com comunidades web do visual studio; e g. Help (ajuda): Chama arquivos de ajuda. Escolhendo uma linguagem intermediria A deciso para definio da linguagem a ser empregada em uma aplicao do Visual Studio ocorre no momento da sua criao. Clique na opo File; Selecione New;
Cria um novo projeto local Cria uma novo projeto web Cria uma novo modelo de arquivo
Como o foco deste estudo a programao web escolheremos a opo Web Site
Cria uma novo site de web com ASPNET Cria o local onde estar o site
Uma vez definido que tipo de aplicativo e com qual linguagem intermediria iremos trabalhar o visual studio abre o formulrio para confeco do site.
Caixa de ferramentas (objetos) Lista todos as pginas da aplicao Mostra as propriedades e eventos dos objetos Mostra o formulrio (desenho) Mostra o cdigo ASP
Bibliotecas
namespace UsandoC { /// <summary> /// Summary description for WebForm1. /// </summary>
Identificao da pgina
private void Page_Load(object sender, System.EventArgs e) { Comandos executados // Put user code to initialize the page here } a pgina carregada
#region Web Form Designer generated code override protected void OnInit(EventArgs e) { Comandos executados quando // // CODEGEN: This call is required by the ASP.NET Web Form Designer. o componente inicializado // InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { Declarao de procedimentos this.button1.Click += new System.EventHandler(this.button1_Click); this.Load += new System.EventHandler(this.Page_Load); por objetos } inicializados #endregion private void button1_Click(object sender, System.EventArgs e) Aps #endregion deve-se { descrever os procedimentos label1.Text=label2.Text; utilizados na pgina. } } } A pgina de cdigos Delphi.NET (Codificao para ferramenta DELPHI 2005). Usando Delphi.NET, tem-se: unit WebForm1; interface uses System.Collections, System.ComponentModel, System.Data, System.Drawing, System.Web, System.Web.SessionState, System.Web.UI, System.Web.UI.WebControls, System.Web.UI.HtmlControls; type TWebForm1 = class(System.Web.UI.Page) {$REGION 'Designer Managed Code'} strict private procedure InitializeComponent;
Declarao da pgina
B ib lio te c a
procedure Button1_Click(sender: System.Object; e: System.EventArgs); {$ENDREGION} strict private procedure Page_Load(sender: System.Object; e: System.EventArgs); strict protected Button1: System.Web.UI.WebControls.Button; Label1: System.Web.UI.WebControls.Label; Declarao dos objetos Label2: System.Web.UI.WebControls.Label; procedure OnInit(e: EventArgs); override; usados private { Private Declarations } Declarao de variveis privadas public { Public Declarations } Declarao de variveis privadas end;
implementation {$REGION 'Designer Managed Code'} Aps implementation deve-se /// <summary> descrever os procedimentos /// Required method for Designer support -- do not modify utilizados na pgina. /// the contents of this method with the code editor. /// </summary> procedure TWebForm1.InitializeComponent; begin Include(Self.Button1.Click, Self.Button1_Click); Include(Self.Load, Self.Page_Load); end; {$ENDREGION} procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here Comandos executados quando a pgina carregada end; procedure TWebForm1.OnInit(e: EventArgs); begin // // Required for Designer support // InitializeComponent; inherited OnInit(e); end;
procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); begin Label1.Text:=Label2.Text; end; end. A pgina de cdigos C# (Codificao para ferramenta VISUAL STUDIO 2005). Usando C#, tem-se: using using using using System; System.Data; System.Configuration; System.Web;
Bibliotecas
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } }
Projeto 01 Conhecendo objetos O objetivo deste exemplo ambientalizar o leitor com os objetos, suas propriedades e eventos. A parte visual do projeto a mesma tanto para o Visual Studio como para Delphi, apenas a parte literal (codificao) ser especfica. A Pagina:
Ajuste dos objetos: Neste primeiro exemplo usei um objeto Panel e trs objetos Button, o efeito desejado alterar a cor do panel mediante um click sobre o boto desejado. No Delphi 2005 este ajuste feito no Object Inspector No Visual Studio 2005 este ajuste feito no ToolBox Delphi Paleta Visual Studio Paleta Objeto Button1 WebControls Standard Button2 Button3 Panel1 Terminada a confeco da pgina necessrio escrever os procedimentos na pgina de codificaes utilizando a IL escolhida: Escrevendo cdigos em C# (Visual Studio): protected void Amarelo_Click(object sender, EventArgs e) { Propriedade Text ID Text ID Text ID Valor Amarelo Amarelo Vermelho Vermelho Azul Azul Evento Amarelo_Click Vermelho_Click Azul_Click
Panel1.BackColor = System.Drawing.Color.Yellow; } protected void Vermelho_Click(object sender, EventArgs e) { Panel1.BackColor = System.Drawing.Color.Red; } protected void Azul_Click(object sender, EventArgs e) { Panel1.BackColor = System.Drawing.Color.Blue; } Escrevendo cdigos em Delphi.NET (Delphi): procedure TWebForm1.Azul_Click(sender: System.Object; e: System.EventArgs); begin panel1.BackColor := System.Drawing.Color.get_Blue; end; procedure TWebForm1.Vermelho_Click(sender: System.Object; e: System.EventArgs); begin panel1.BackColor := System.Drawing.Color.get_Red; end; procedure TWebForm1.Amarelo_Click(sender: System.Object; e: System.EventArgs); begin panel1.BackColor := System.Drawing.Color.get_Yellow; end; OBSERVAES: - Note a presena da biblioteca System.Drawing, que responsvel pela liberao do mtodo color tanto no Delphi como no Visual Studio. A incluso da biblioteca System.Drawing na clausula USES do Delphi, ou na clausula USING do Visual Studio, promovera uma reduo na linha de cdigo dos comando clicks executados. procedure TWebForm1.Amarelo_Click(sender: System.Object; e: System.EventArgs); begin panel1.BackColor := Color.get_Yellow; end; Projeto 02 Conhecendo objetos O objetivo deste exemplo ambientalizar o leitor com os objetos, suas propriedades e eventos. Neste exemplo usei um objeto dropdownlist, trs objetos label e um objeto button, o efeito desejado identificar a opo selecionada no dropdownlist e transferir para os labels o item selecionado e o seu valor correspondente mediante um click sobre o boto. A pgina:
Delphi Paleta
Objeto
Label1 Label2 Label3
Propriedade
Text ID Text ID Text ID Membros
Valor
Indique uma opo: Itemlido Item: Valorlido Valor: Opcoes Propriedades Text Value Opo 01 Valor 01 Opo 02 Valor 02 Opo 03 Valor 03 Ler item
Evento
WebControls
Standard Dropdownlist1
Items
Button1
Text
Button1_Click
} Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); begin itemlido.Text := 'Opo selecionada:' + opcoes.SelectedItem.ToString; valorlido.Text := 'Valor correspondente:' + opcoes.SelectedValue; end; Exerccio 01 Monte uma aplicao capaz de alterar a cor de um objeto panel, baseado-se no valor contido em um dropdownlist. Projeto 03 Conhecendo objetos O objetivo deste exemplo ambientalizar o leitor com os objetos, suas propriedades e eventos. Neste exemplo usei um objeto label, dois objetos textbox e dois objetos button, o efeito desejado mostrar a diferena entre as operaes de soma de valores numricos (inteiros) e valores literais (strings) mediante um click sobre o boto especfico. A pgina:
Delphi Paleta
WebControls
Standard
Valor 1 valor: 2 valor: Resultado Resultado Soma como inteiro Soma como literal Valor1 Valor2
Evento
Button1_Click Button2_Click
Neste exemplo tive a necessidade de criar 03 (trs) variveis do tipo inteiro, observe as diferentes formas de criao das variveis privadas entre as linguagens C# e Delphi.NET. Criando as variveis em C# (Visual Studio): public partial { private int a private int b private int c class _Default : System.Web.UI.Page = 0; = 0; = 0;
Criando as variveis em Delphi.NET (Delphi.NET): private { Private Declarations } var a,b,c:integer; Escrevendo cdigos em C# (Visual Studio): protected { try { a b c void Button1_Click(object sender, EventArgs e)
= Convert.ToInt32(Valor1.Text); = Convert.ToInt32(Valor2.Text); = a + b;
} catch { Resultado.Text = "Voce digitou um caracter que no pode ser convertido para inteiro!"; }
} protected void Button2_Click(object sender, EventArgs e) { Resultado.Text = "O resultado a unio do 1 valor com o 2 valor: " + Valor1.Text + Valor2.Text; } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); begin try a := convert.toint32(valor1.Text); b := convert.toint32(valor2.Text); c := a + b; resultado.Text := 'O resultado a soma do 1 valor com o 2 valor:' + c.ToString; except resultado.Text := 'Voce digitou um caracter que no pode ser convertido para inteiro!'; end; end; procedure TWebForm1.Button2_Click(sender: System.Object; e: System.EventArgs); begin resultado.Text := 'O resultado a unio do 1 valor com o 2 valor:' + valor1.Text + valor2.Text; end; Projeto 04 Conhecendo objetos O objetivo deste exemplo ambientalizar o leitor com os objetos, suas propriedades e eventos. Neste exemplo usei um objeto radiobuttonlist, um objeto image e um objeto button, o efeito desejado carregar uma imagem baseada no valor contido no radiobuttonlist mediante um click sobre o boto aplicar. A pgina:
Delphi Paleta
Propriedade Text ID ID
Valor Aplicar Aplicar voar Membros Propriedades Text Value Voa Voaparadireita.gif para direita Voa Voaparaesquerda.gif para esquerda
Evento Aplicar_Click
WebControls
Escrevendo cdigos em C# (Visual Studio): protected void Aplicar_Click(object sender, EventArgs e) { Image1.ImageUrl = "~/" + Voar.SelectedValue; } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Aplicar_Click(sender: System.Object; e: System.EventArgs); begin Image1.ImageUrl := './' + Voar.SelectedValue.ToString; end; Projeto 05 Conhecendo objetos O objetivo deste exemplo ambientalizar o leitor com os objetos, suas propriedades e eventos. Neste exemplo usei cinco objetos labels, cinco objetos textboxs, um objeto button, um objeto requiredfieldvalidator, um objeto comparevalidator, dois objetos regularexpressionvalidators e um objeto rangevalidator, o efeito desejado validar entradas mediante um click sobre o boto validar. A pgina:
Standard
Objeto Label1 Label2 Label3 Label4 Label5 Button1 Textbox1 Textbox2 Textbox3 Textbox4 Textbox5 RequiredFieldValidator1
Propriedade Text Text Text Text Text Text ID ID ID ID ID ErrorMessage Controltovalidate ErrorMessage Controltovalidate Operator Type Valuetocompare ErrorMessage
Validation
CompareValidator1
RegularExpressionValidator1
Valor Nome: Quantidade: CEP: Site: Pedidos: Validar Nome Qtdade CEP Site Pedidos (Campo Obrigatrio) Nome Quantidade Excede de 500 Qtdade LessThan Integer 500 Digite 99999-
Evento
Controltovalidate Validationexpression ErrorMessage RegularExpressionValidator2 Controltovalidate Validationexpression ErrorMessage RangeValidator1 Controltovalidate Maximumvalue Minimumvalue Type
999 CEP \d{5}(-\d{3})? Endereo URL Invlido: digite http://..... Site http://([\w-]+\.) +[\w-]+(/ [\w./? %&=]*)? Pedido mnimo 1 e mximo 5 Pedidos 5 1 Integer
Escrevendo cdigos em C# (Visual Studio): Nenhum cdigo descrito Escrevendo cdigos em Delphi.NET (Delphi.NET): Nenhum cdigo descrito
} }
Projeto 06 Tomando uma deciso simples O objetivo deste exemplo verificar se o valor digitado pelo usurio igual a uma constante imbutida nas linhas de cdigo do exemplo. Neste exemplo usei trs objetos labels, dois objetos textboxs e um objeto button, o efeito desejado validar o usurio e sua senha mediante um click sobre o boto validar. A pgina:
Delphi Paleta
WebControls
Standard
TextBox1 TextBox2
Valor
Evento
Usurio: Senha:
Resultado False Usurio: 10
Button1
Validar_click
Escrevendo cdigos em C# (Visual Studio): protected void Validar_Click(object sender, EventArgs e) { if (Usuario.Text == "GONDRA") { if (Senha.Text == "DRAGON") { Resultado.Text = "Acesso permitido!"; } else { Resultado.Text = "Senha invlida!"; } } else { Resultado.Text = "Acesso negado!"; } Resultado.Visible = true; } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Validar_Click(sender: System.Object; e: System.EventArgs); begin if usuario.Text = 'GONDRA' then if senha.Text = 'DRAGON' then resultado.Text := 'Acesso permitido!' else resultado.Text := 'Senha invlida!' else resultado.Text := 'Acesso negado!';
end; Projeto 07 Permitindo ou negando acesso a uma pgina O objetivo deste exemplo verificar se o usurio tem permisso ou no para abrir uma nova pgina. Neste exemplo usei duas pginas: Na primeira coloquei dois objetos labels, um objeto dropdownlist e um objeto button, na segunda pgina coloquei apenas um label e um button. O efeito desejado permitir ou negar o acesso segunda pgina, de acordo com o valor selecionado no dropdownlist1 da primeira pgina validando assim o usurio mediante um click sobre o boto validar. A pgina 01:
Delphi Paleta
Objeto Label1
Label2
WebControls
Standard
Button1
Dropdownlist1
Items
ID
Valor Usurios: Acesso negado! Size Large Bold True Resultado False Validar Validar Propriedades Membros Text Value Gondra Gondra 0 Tio Tio 1 Zefa Zefa 2 Usuarios
Evento
Validar_click
Antes de incrementar o procedimento Validar_click, conveniente que voc adicione uma nova pgina a sua aplicao. Para adicionar uma nova pgina com Visual Studio:
Escrevendo cdigos em C# (Visual Studio): private void validar_Click(object sender, System.EventArgs e) { if (Convert.ToInt32(Usuarios.SelectedValue) == 0) { Session["acesso"] = Usuarios.SelectedItem.ToString(); Response.Redirect("WebForm2.aspx"); } else { Resultado.Visible = true; } } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Validar_Click(sender: System.Object; e: System.EventArgs); begin if convert.ToInt32(Usuarios.SelectedValue) = 0 then begin session['acesso'] := Usuarios.SelectedItem.ToString; response.Redirect('WebForm2.aspx'); end else Resultado.Visible := true; end; Para se anexar uma nova pgina a aplicao proceda da seguinte forma: Anexando uma pgina em aplicao C#: Click sobre: File New Other
Anexando uma pgina em aplicao Delphi.NET (Delphi.NET): Click sobre: File New Other Selecione: Delphi for .Net Projects New ASP.NET Files E escolha: ASP.NET Page
A pgina 02:
Evento
Retornar_Click
Nesta pgina foi usado um procedimento especial denominado Page Load, que disparado sempre que a pgina carregada. O objetivo deste procedimento neste exerccio mostrar o nome do usurio selecionado na pgina anterior. Observe a presena do comando SESSION, este comando utilizado para transferir parmetros, alocando valores em uma varivel pblica, e a presena do RESPOSE.REDIRECT usado para redirecionar pginas. Escrevendo cdigos em C#: public class WebForm2 : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { // Transferencia do nome do usuario acessado.Text = "Usurio:" + Session["acesso"].ToString(); } private void retornar_Click(object sender, System.EventArgs e) { Response.Redirect("webform1.aspx"); } } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm2.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here acessado.Text:='Usurio:' + session['acesso'].ToString; end; procedure TWebForm2.Retornar_Click(sender: System.Object; e: System.EventArgs); begin response.Redirect('webform1.aspx'); end; Projeto 08 Montando um menu O objetivo deste exemplo promover a navegao entre pginas de uma aplicao baseando-se na escolha de uma opo de um menu. Neste exemplo usei 07 pginas: Na primeira coloquei quatro objetos buttons e dois objetos listboxs, nas demais pginas coloquei apenas um label e um button. O efeito desejado permitir o acesso as pginas, de acordo com o valor selecionado no listbox1 da primeira pgina mediante um click sobre o boto aplicar. A pgina 01:
Objeto Button1
Valor Cadastros Cadastros 1 Consultas Consultas 2 Aplicar Aplicar Sair Sair Opccadastro Propriedades Membros Livros Almanaques Revistas Opcconsulta Propriedades Membros Livros Almanaques Revistas
Evento Cadastros_Click
Consultas_Click
Aplicar_Click Sair_Click
Listbox1
Items
ID Listbox2
Items
Dados para IL: IL C# Delphi.NET Application ASP.NET Web C#Builder Application Namespace cs08 pas08 Diretrio
C:\WebCurso\CSharp\Exemplo08 C:\WebCurso\Delphi.NET\Exemplo08
Escrevendo cdigos em C#: Obs: No esquea que as clausulas public class, Page_load e on_init j existem na pgina devemos apenas completar com o cdigo nescessario. public class WebForm1 : System.Web.UI.Page { // esta varivel identificar o menu que desejo abrir. private string escolha = ""; private void Page_Load(object sender, System.EventArgs e) {
// Put user code to initialize the page here Opccadastro.Visible = false; Opcconsulta.Visible = false; } private void Cadastros_Click(object sender, System.EventArgs e) { Session[menu] = Cadastros.CommandArgument; Opcconsulta.Visible = false; Opccadastro.Visible = true; } private void Consultas_Click(object sender, System.EventArgs e) { Session[menu] = Consultas.CommandArgument; Opccadastro.Visible = false; Opcconsulta.Visible = true; } private void Aplicar_Click(object sender, System.EventArgs e) { escolha = Session["menu"].ToString(); switch (escolha) { case "1": { Response.Redirect(Opccadastro.SelectedValue); break; } case "2": { Response.Redirect(Opcconsulta.SelectedValue); break; } } } private void sair_Click(object sender, System.EventArgs e) { Response.Close(); } }
Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs); begin // TODO: Put user code to initialize the page here Opccadastro.Visible := false; Opcconsulta.Visible := false; end; procedure TWebForm1.sair_Click(sender: System.Object; e: System.EventArgs); begin Response.Close();
procedure TWebForm1.Aplicar_Click(sender: System.Object; e: System.EventArgs); var escolha:integer; begin escolha := Convert.ToInt16(Session['menu']); case escolha of 1: Response.Redirect(Opccadastro.SelectedValue); 2: Response.Redirect(Opcconsulta.SelectedValue); end; end; procedure TWebForm1.Consultas_Click(sender: System.Object; e: System.EventArgs); begin session['menu'] := Consultas.CommandArgument; Opccadastro.Visible := false; Opcconsulta.Visible := true; end; procedure TWebForm1.Cadastros_Click(sender: System.Object; e: System.EventArgs); begin Opcconsulta.Visible := false; Opccadastro.Visible := true; Session['menu'] := Cadastros.CommandArgument; end; As pginas 02 a 07: As pginas 02 at 07 possuem a mesma aparncia no entanto seus namespaces so diferenciados e precisam ser salvas. Para se anexar a pgina 02, proceda como no exerccio anterior. To logo tenha anexado a pgina 02 click em: File Save As... Em seguida: Localize o diretrio C:\WebCurso\CSharp\Exemplo08 se estiver desenvolvendo em C# ou C:\WebCurso\Delphi.NET\Exemplo08 se estiver desenvolvendo em Delphi.NET em seguida altere o nome de webform2.aspx para CadLivros.aspx Repita o processo para as seguintes pginas: CadAlmanaques.aspx; CadRevistas.aspx; ConLivros.aspx;
ConRevistas.aspx A pgina:
Objeto
Evento
Label1
Text ( O valor desta propriedade muda para cada pgina, conforme descrita ao lado)
Valor Cadastro de Livros Cadastro de Almanaques Cadastro de Revistas Consulta de Livros Consulta de Almanaques Consulta de Revistas Retorna_Click
Button1
ID Text
Retorna Retorna
Escrevendo cdigos em C#: private void button1_Click(object sender, System.EventArgs e) { Response.Redirect("webform1.aspx"); } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm2.Button1_Click(sender: System.Object; e: System.EventArgs); begin Response.Redirect('webform1.aspx'); end; Projeto 09 Ampliando uma imagem O objetivo deste exemplo abrir uma nova pgina ampliando uma imagem contida em um imagebutton montado na pgina 01, a partir do click efetuado sobre o boto. Neste exemplo usei 02 pginas: Na primeira coloquei um label e um imagebutton e na segunda nenhum objeto colocado, apenas o evento page_load disparado O efeito desejado ampliar uma imagem contida em um imagebutton em uma nova pgina.
Evento ImageButton1_Click
Escrevendo cdigos em C#: private void imageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e) { Response.Redirect("Canaletto.jpg"); } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.ImageButton1_Click(sender: System.Object;e:System.Web.UI.Image Click eventArgs); begin Response.Redirect('Canaletto.jpg'); end; Na segunda pgina no coloquei nenhum evento, apenas trabalhei na clausula class, criando uma varivel de memria baseada na classe System.Drawing.Image, responsvel pela verificao, converso carregamento de imagens do sistema e no evento page_load, que como j mencionei disparado quando a pgina carregada. Escrevendo cdigos em C#: public class WebForm2 : System.Web.UI.Page { // criao da varivel im que se comportar como um objeto tipo image public System.Drawing.Image im; private void Page_Load(object sender, System.EventArgs e) { // carrega a imagem do disco para a varvel im
im = System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+"Canaletto.jpg");
} Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm2.Page_Load(sender: System.Object; e: System.EventArgs); // TODO: Put user code to initialize the page here // criao da varivel im que se comportar como um objeto tipo image var im:System.Drawing.Image; begin // carrega a imagem do disco
im := System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+'Canaletto.jpg'); end; Exerccio 02 Monte uma aplicao capaz de ampliar a imagem de uma das obras contida na lista de obras de um dos artistas contido na listas de artistas, conforme esquema abaixo.
Jean-Franois Millet
Soluo proposta: Para solucionar este exerccio existem diversas formas a depender da linha lgica escolhida pelo desenvolvedor. Eu resolvi utilizar dois labels, dois dropdownlists, dois buttons e um imagebutton. A pgina
DropDownList1
Items
Valor Aplicar Aplicar Visualizar Visualizar Obras Autor: Obras: Autor Propriedades Membros Antonio Cavaletto JeanFranois Millet Caspar David Friedrich
Miniatura _Click
ImageButton1
public class WebForm1 : System.Web.UI.Page { // criao das variveis de ambiente public System.Drawing.Image im; public int escolha; private void miniatura_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
im=System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+obras.SelectedItem.ToString()+".jpg");
Response.Redirect(obras.SelectedItem.ToString()+".jpg"); } private void visualizar_Click(object sender, System.EventArgs e) { miniatura.ImageUrl = obras.SelectedItem.ToString()+".jpg"; } private void Aplicar_Click(object sender, System.EventArgs e) { obras.Items.Clear(); escolha = autores.SelectedIndex; switch (escolha) { case 0: { obras.Items.Add("O Molhe"); obras.Items.Add("A Ponte do Rialto"); break; } case 1: { obras.Items.Add("As Respigadeiras"); obras.Items.Add("A primavera"); break; } case 2: { obras.Items.Add("A arvore dos corvos"); break; } } } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.miniatura_Click(sender: System.Object;e:System.Web.UI.ImageClickEventArgs ); var
im:System.Drawing.Image; begin im := System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+obras.SelectedItem.ToString+'.jpg'); Response.Redirect(obras.SelectedItem.ToString+'.jpg'); end; procedure TWebForm1.visualizar_Click(sender: System.Object; e: System.EventArgs); begin miniatura.ImageUrl := obras.SelectedItem.ToString+'.jpg'; end; procedure TWebForm1.Aplicar_Click(sender: System.Object; e: System.EventArgs); begin obras.Items.Clear; case autores.SelectedIndex of 0:begin obras.Items.Add('O Molhe'); obras.Items.Add('A Ponte do Rialto'); end; 1:begin obras.Items.Add('As Respigadeiras'); obras.Items.Add('A primavera'); end; 2:begin obras.Items.Add('A arvore dos corvos'); end; end; end;
Tabela de clientes: CPF 123.123.123-12 145.235.568-89 663.569.985-89 665.562.898-56 125.568.968-63 Note que: Nome Jose dos Santos Ana Fontes Jose dos Santos Ana Borges Antonio Bispo Nasciment o 20/01/1980 20/02/1986 14/05/1984 14/05/1984 18/12/1986 Peso 66 45 78 52 66 Cidade Cabrob Aracaju Aracaju Maca Aracaju Cep 50120-000 49056-120 48659-250 31120-000 49056-120 Estado PE SE AL RJ SE
Cada linha pertence a um determinado cliente; Existem valores que se repetem em determinadas colunas, porm as informaes armazenadas na coluna CPF no se repetem, isto , cada CPF pertence a um NICO cliente. As informaes armazenadas nas colunas CPF, Cep e Estado possuem um tamanho prdefinido; Na coluna peso seu preenchimento ser sempre numrico, na coluna estado ser sempre literal, o nascimento ser sempre uma data e as demais colunas podem receber tanto nmeros como literais. Com base nas notaes acima podemos concluir que as colunas possuem as seguintes caractersticas: Nome: Toda coluna possui um nome para identificao (CPF, Nome, Nascimento, Peso, Cidade, Cep e estado. Tipo: Toda coluna possui um tipo especfico. Tamanho: Toda coluna possui um tamanho mximo para armazenamento de informaes. Chave: Algumas colunas podero receber a identificao de chave de ndice o que lhe permite a unicidade dos dados. Nulao: Algumas colunas recebero um atributo que lhe permite permanecer sem valor mesmo aps a gravao dos dados. Observando as caractersticas acima podemos montar a estrutura responsvel pelo armazenamento de dados dos clientes, isto , a tabela de clientes: Chave Nome da coluna CPF Nome Nascimento Peso Cidade Estado Tipo da coluna Character Character Data Inteiro curto Character Character Tamanho da coluna 14 50 8 4 30 2 Aceita nulo
Para escrever tabelas para utilizao em web precisa-se de um tipo especial de aplicativo denominado SGBD (Sistema Gerenciador de Banco de Dados), Existem vrios SGBDs no mercado, todos eficientes capazes de administrar suas bases de dados e tabelas. Exemplos: MSSQL, MYSQL, Postgree, Oracle, etc... Para o nosso curso escolhi o MSSQL em sua verso 2000.
O MSSQL
Trata-se de um Sistema Gerenciador de Bancos de Dados, Relacionais, SGBDR, que funciona unicamente sob sistema operacional Windows NT. Para trabalhar com esta ferramenta a Microsoft fornece o ISQL, tanto em interface DOS quanto em interface Windows. Alm disso, podemos nos comunicar com o banco a partir de APIs do Windows, fazendo uso da camada de comunicao DBLibrary, ou via ODBC. A interface com o usurio pode ser construda em Visual Basic ou Visual C++, para acesso atravs da DB-Library (que d total controle sobre as funes do banco), ou via VB, VC++, Visual Fox Pro, Access, Excel, Word, para acesso via ODBC. Tambm podemos utilizar o acesso atravs de protocolo TCP/IP e linguagem HTML, caracterizando aplicaes de INTRA/INTER/EXTRANET; o acesso ao banco propriamente dito, entre a camada de conexo a bancos de dados e o Web Server, ser realizado via ODBC. Utilize o Enterprise Manager para criar administrar bases SQL-Server Criando uma base de dados:
Indica um novo local para criao da base Local onde base ser criada
Base criada
Tabela criada
Existe mais de uma forma acessar uma tabela, veremos agora uma delas: Projeto 11 Testando a existncia e a senha de um usurio
O objetivo deste exemplo verificar se o usurio existe na tabela acesso e se a senha digitada igual a constante na coluna senha da tabela;. Estrutura da tabela:
Insira 04 usurios: Usuario Gondra Fabio Ana Maria Senha Dragon Ramos 123456 121212 Nivel 0 1 2 1
Neste exemplo usei trs objetos labels, dois objetos textboxs, um objeto button, um BdpConnection e um BdbDataAdapter, o efeito desejado validar o usurio e sua senha mediante um click sobre o boto validar. A pgina:
Objeto Label1 Label2 Label3 Textbox1 Textbox2 Button1 BdpConnection BdbDataAdapter DataSet1 Dados para IL:
Propriedade Text Text ID ID Maxlength ID Maxlength TextMode Text ID Name Name Name
Valor Usurio: Senha: Resultado Usuario 10 Senha 6 Password Validar Validar Conexo Adaptador DSAcesso
Evento
Validar_click
Diretrio
C:\WebCurso\CSharp\Exemplo11 C:\WebCurso\Delphi.NET\Exemplo11
Application
Estabelecendo a conexo Click com o boto direito sobre o BdpConnection: Adicione uma nova conexo (ADD); Indique o Database (a base de dados); Indique o HostName (o nome do servidor);
Teste a conexo Configurando o adaptador Click com o boto direito sobre o BdpDataAdapter e selecione Configure Data Adapter...:
Escolha a tabela acesso; Marque a opo Optimize; e click sobre Generate SQL:
Escrevendo cdigos em C#: private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here resultado.Text=""; } private void Validar_Click(object sender, System.EventArgs e) { Adaptador.Active=false;
Adaptador.SelectCommand.CommandText="select * from acesso where usuario="+"'"+usuario.Text+"'";
Adaptador.Active=true; if (dsacesso.Tables["acesso"].Rows.Count ==0) { usuario.Text=""; resultado.Text="Usurio no existe!"; } else { resultado.Text=""; if (senha.Text !=(dsacesso.Tables["acesso"].Rows[0]["senha"].ToString())) {
resultado.Text="Senha invlida!"; } else { resultado.Text=""; Session["permissao"]=dsacesso.Tables["acesso"].Rows[0]["nivel"].ToString(); Server.Transfer("Menu.aspx"); } } } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.Validar_Click(sender: System.Object; e: System.EventArgs); begin Adaptador.Active:=false; Adaptador.SelectCommand.CommandText:='select * from acesso where usuario='''+usuario.text+''''; Adaptador.Active:=true; if (dSAcesso.Tables['acesso'].rows.count = 0 ) then begin usuario.Text:=''; Resultado.Text:='Usurio no existe!'; end else begin resultado.Text:=''; if senha.Text <>(dSAcesso.Tables['acesso'].Rows[0]['senha'].ToString) then resultado.Text:='Senha invlida!' else begin resultado.Text:=''; session['permissao']:=dSAcesso.Tables['acesso'].Rows[0]['nivel'].ToString; server.Transfer('Menu.aspx'); end; end; end;
Projeto 12 Um menu Animado! O objetivo deste exemplo mostrar a interao entre scripts Java e ASP.Net com C# ou Delphi.Net. A pgina
Neste exemplo foram usados apenas objetos HTML com orientao aos objetos descritos na paleta HTML Elements. HTML Input Input HR DIV DIV SELECT Objeto Html textbox Html textbox Html horizontal rule Html Label Html Label Html ListBox Propriedade Name Name Size onmouseover onmouseover name onclick disabled name onclick disabled background onload onunload Valor Relgio message 3 abrecadastros() abremovimentos() opcadastro paginacadastros() True opcadastro paginacadastros() True Dock.jpg Start() KillClock()
Application
Diretrio
C:\WebCurso\CSharp\Exemplo12 C:\WebCurso\Delphi.NET\Exemplo12
A pgina descrita a seguir compem codificao HTML utilizando-se de JAVASCRIPT: <%@ Page Language="c#" Debug="true" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="cs12.WebForm1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html> <head> <title></title> </head> <body background="Dock.jpg" onload="Start()" onunload="KillClock()" ms_positioning="GridLayout"> <form runat="server"><input style="Z-INDEX: 1; LEFT: 890px; WIDTH: 68px; POSITION: absolute; TOP: 10px; HEIGHT: 22px; BACKGROUND-COLOR: blue" size="1" name="relogio"> <input style="FONT-SIZE: 20px; Z-INDEX: 2; LEFT: 19px; WIDTH: 356px; POSITION: absolute; TOP: 36px; HEIGHT: 32px; BACKGROUND-COLOR: blue" readonly="true" size="40" value="Passe o mouse sob a opo desejada. " name="message"> <div onmouseover="abrecadastros()" style="DISPLAY: inline; Z-INDEX: 5; LEFT: 22px; WIDTH: 99px; POSITION: absolute; TOP: 75px; HEIGHT: 19px" ms_positioning="FlowLayout">Cadastros </div><select style="Z-INDEX: 8; LEFT: 19px; WIDTH: 103px; POSITION: absolute; TOP: 94px; HEIGHT: 107px; BACKGROUND-COLOR: blue" disabled="true" onclick="paginacadastros()" size="2" name="opcadastro"> <option value="http://localhost/WebApplication2/WFLivros.aspx">Livros</option>
<option value="http://localhost/WebApplication2/WFRevistas.aspx">Revistas</option> <option value="http://localhost/WebApplication2/WFAlmanaques.aspx">Almanaques</option>
<option value="http://localhost/WebApplication2/WFClientes.aspx">Clientes</option> <option value="http://localhost/WebApplication2/WFFornecedores.aspx">Fornecedores</option> </select> <div onmouseover="abremovimentos()" style="DISPLAY: inline; Z-INDEX: 5; LEFT: 128px; WIDTH: 99px; POSITION: absolute; TOP: 75px; HEIGHT: 19px" ms_positioning="FlowLayout">Movimentos </div><select style="Z-INDEX: 8; LEFT: 125px; WIDTH: 103px; COLOR: black; POSITION: absolute; TOP: 94px; HEIGHT: 107px; BACKGROUND-COLOR: blue" disabled="true" onclick="paginamovimentos()" size="2" name="opmovimento"> <option value="http://localhost/WebApplication2/WFlocacao.aspx">Locao</option>
<optionvalue="http://localhost/WebApplication2/WFDevolucao.aspx">Devoluo</option> <option value="http://localhost/WebApplication2/WFCompras.aspx">Compras</option>
</select> <hr style="Z-INDEX: 9; LEFT: 6px; WIDTH: 100%; POSITION: absolute; TOP: 33px; HEIGHT: 3px" width="100%" size="3"> <label
<!-// Esta funo mostra e atualiza a hora para um objeto Input ((FUNO ATUALIZA A HORA))) var clockID = 0; function UpdateClock() { if(clockID) { clearTimeout(clockID); clockID = 0; } var tDate = new Date(); document.forms[0].relogio.value = "" + tDate.getHours() + ":" + tDate.getMinutes() + ":" + tDate.getSeconds(); clockID = setTimeout("UpdateClock()", 1000); } function StartClock() { clockID = setTimeout("UpdateClock()", 500); } function KillClock() { if(clockID) { clearTimeout(clockID); clockID = 0; } } // FIM DA FUNO ATUALIZA A HORA))) // FUNO SCROLL TEXTO - TEXTO ROTATIVO var timerID=null var run=false count = 0 // counter of cycles ScrollSpeed = 200; // milliseconds between scrolls ScrollChars = 1; // chars scrolled per time period function Stop() { if(run) clearRimeout(timerID) run=false } function Start() { StartClock() Stop(); Marquee() }
} // funes de menu function abrecadastros() { document.forms[0].opcadastro.disabled = false; document.forms[0].opmovimento.disabled = true; document.forms[0].opcadastro.style.color="White"; } function abremovimentos() { document.forms[0].opcadastro.disabled = true; document.forms[0].opmovimento.disabled = false; document.forms[0].opmovimento.style.color="White"; } // funes de abertura de pginas function paginacadastros() { document.location document.forms[0].opcadastro.options[document.forms[0].opcadastro.selectedIndex].value } function paginamovimentos() { document.location document.forms[0].opmovimento.options[document.forms[0].opmovimento.selectedIndex].value } //--> </script> </body> </html>
Projeto 13 Incluindo, excluindo e alterando dados em uma tabela Mtodo I Utilizando o Borland Data Provider. O objetivo deste exemplo montar uma pgina capaz de incluir, excluir ou alterar dados contidos em uma tabela mediante um click sobre o boto desejado, fazendo a conexo com objetos da paleta Borland Data Provider. Estrutura da tabela:
Salve a tabela com o nome de curso No esquea de liberar a permisso do usurio ASPNET ao dados da tabela. A pgina:
Objeto Label1 Label2 Label3 Label4 Label5 Label6 Textbox1 Textbox2 Textbox3
Propriedade Text Font bold Text Font bold Text Text Text Text ID ID ID ID
Dropdownlist1
Items
Imageurl Text ID Text ID Text ID Name Name Connection Tables SQL Select command
BdbDataAdapter
SQL Insert command SQL Delete command DataSet1 DBWebDataSource1 DBWebNavigator1 Dataset Name Name Datasource ID Dbdatasource Tablename ID Dbdatasource Tablename
Valor Druidas Web-Systema true Cadastro de cursos true Cdigo: Descrio: Carga horria Valor wcodigo wdescricao wvalor wcarga Propriedades Membros Items Value 20 horas 20 horas 20 horas 40 horas 40 horas 40 horas 60 horas 60 horas 60 horas 80 horas 80 horas 80 horas .\images\druidas.gif Adicionar adicionar Remover remover Alterar alterar conexao adaptador conexao curso SELECT Codigo, Descricao, Valor, Carga_horaria FROM dbo.Curso UPDATE dbo.Curso SET Codigo = ?, Descricao = ?, Valor = ?, Carga_horaria = ? WHERE Codigo = ? INSERT INTO dbo.Curso (Codigo, Descricao, Valor, Carga_horaria ) VALUES ( ?, ?, ?, ?) DELETE FROM dbo.Curso WHERE Codigo = ? dscurso dscurso dadoscurso dscurso navegador dadoscurso Curso gradededados dadoscurso Curso
Evento
IL C# Delphi.NET
Application
Diretrio
C:\WebCurso\CSharp\Exemplo13 C:\WebCurso\Delphi.NET\Exemplo13
Escrevendo cdigos em C#: private void adiciona_Click(object sender, System.EventArgs e) { conexao.Open(); adaptador.Active=false; adaptador.InsertCommand.CommandText="INSERT INTO dbo.Curso (Codigo, Descricao, Valor, Carga_horaria ) VALUES ('"+wcodigo.Text+"', '"+wdescricao.Text+"', '"+wvalor.Text+"', '"+wcarga.SelectedValue+"')"; adaptador.InsertCommand.ExecuteNonQuery(); adaptador.SelectCommand.ExecuteReader(); adaptador.Active=true; dadoscurso.AutoRefresh=true; } private void remover_Click(object sender, System.EventArgs e) { conexao.Open(); adaptador.Active=false; adaptador.DeleteCommand.CommandText="DELETE FROM dbo.Curso WHERE Codigo = '"+wcodigo.Text+"'"; adaptador.DeleteCommand.ExecuteNonQuery(); adaptador.SelectCommand.ExecuteReader(); adaptador.Active=true; dadoscurso.AutoRefresh=true; } private void alterar_Click(object sender, System.EventArgs e) { conexao.Open(); adaptador.Active=false; adaptador.UpdateCommand.CommandText="UPDATE dbo.Curso SET Codigo = '"+wcodigo.Text+"', Descricao = '"+wdescricao.Text+"', Valor = '"+wvalor.Text+"', Carga_horaria = '"+wcarga.SelectedValue+"' WHERE Codigo = '"+wcodigo.Text+"'"; adaptador.UpdateCommand.ExecuteNonQuery(); adaptador.SelectCommand.ExecuteReader(); adaptador.Active=true; dadoscurso.AutoRefresh=true; } Escrevendo cdigos em Delphi.NET (Delphi.NET): procedure TWebForm1.alterar_Click(sender: System.Object; e: System.EventArgs); begin conexao.Open; adaptador.Active:=false; adaptador.UpdateCommand.CommandText:='UPDATE dbo.Curso SET Codigo = '''+wcodigo.Text+''', Descricao = '''+wdescricao.Text+''', Valor = '''+wvalor.Text+''',
''+wcarga.SelectedValue+'''
WHERE
procedure TWebForm1.remover_Click(sender: System.Object; e: System.EventArgs); begin conexao.Open; adaptador.Active:=false; adaptador.DeleteCommand.CommandText:='DELETE FROM dbo.Curso WHERE Codigo = '''+wcodigo.Text+''''; adaptador.DeleteCommand.ExecuteNonQuery; adaptador.SelectCommand.ExecuteReader; adaptador.Active:=true; dadoscurso.AutoRefresh:=true; end; procedure TWebForm1.adiciona_Click(sender: System.Object; e: System.EventArgs); begin conexao.Open; adaptador.Active:=false; adaptador.InsertCommand.CommandText:='INSERT INTO dbo.Curso (Codigo, Descricao, Valor, Carga_horaria ) VALUES ('''+wcodigo.Text+''', '''+wdescricao.Text+''', '''+wvalor.Text+''', '''+wcarga.SelectedValue+''')'; adaptador.InsertCommand.ExecuteNonQuery; adaptador.SelectCommand.ExecuteReader; adaptador.Active:=true; dadoscurso.AutoRefresh:=true; end; ATENO: No exemplo acima no foi tratada a condio de unicidade da chave do cdigo. Projeto 14 Incluindo, excluindo e alterando dados em uma tabela Mtodo II Utilizando Data Components O objetivo deste exemplo montar uma pgina capaz de incluir, excluir ou alterar dados contidos em uma tabela mediante um click sobre o boto desejado, fazendo a conexo com objetos da paleta Data Components. Estrutura da tabela: A mesma do exemplo anterior A pgina: Na pgina deste exemplo houve a substituio dos objetos Borland Data Provider por objetos Data Components e tambm inclui mais um label para indicar o status da conexo. Objetos Borland Data Provider BDPConnection BDPDataAdapter Objetos Data Components SQLConnection SQLDataAdapter
Objeto Label1 Label2 Label3 Label4 Label5 Label6 Label7 Textbox1 Textbox2 Textbox3
Propriedade Text Font bold Text Font bold Text ID Text Text Text Text ID ID ID ID
Dropdownlist1
Items
Valor Druidas Web-Systema true Cadastro de cursos true Status: Estado Cdigo: Descrio: Carga horria Valor wcodigo wdescricao wvalor wcarga Propriedades Membros Items 20 horas 20 horas 40 horas 40 horas 60 horas 60 horas 80 horas 80 horas .\images\druidas.gif Adicionar adicionar Remover remover
Evento
Button3 SQLConnection SQLDataAdapter DataSet1 DBWebDataSource1 DBWebNavigator1 DBWebGrid1 Dados para IL: IL C# Delphi.NET
Alterar_click
Application
Diretrio
C:\WebCurso\CSharp\Exemplo14 C:\WebCurso\Delphi.NET\Exemplo14
Para trabalhar com SQL de forma literal necessrio incluir a biblioteca System.Data.SqlClient; A conexo com o servidor e base de dados deveram ser feitas de forma que fiquem disponveis para qualquer procedimento da aplicao, portanto dever ser estabelecida quando a pgina for carregada. Escrevendo cdigos em C#: Na clausula Using inclua: using System.Data.SqlClient; Na clausula Public inclua a varivel: public string conectar; No procedimento Page_Load: private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here conectar="server=TITANIUM;database=Cursos;Trusted_connection=Yes"; conexao.ConnectionString = conectar; try { adaptador.SelectCommand.CommandText="SELECT * FROM CURSO"; conexao.Open(); estado.Text=System.String.Format("Status: Conectado a "+conexao.Database); adaptador.FillSchema(dscurso,SchemaType.Mapped,"curso"); adaptador.Fill(dscurso,"curso"); gradecurso.TableName="curso"; dadoscurso.AutoRefresh=true; } catch { estado.Text="Status: Falha na conexo!"; } }
Na clausula implementation private void adiciona_Click(object sender, System.EventArgs e) { conexao.Close(); adaptador.InsertCommand.CommandText="INSERT INTO dbo.Curso (Codigo, Descricao, Valor, Carga_horaria ) VALUES ('"+wcodigo.Text+"', '"+wdescricao.Text+"', '"+wvalor.Text+"', '"+wcarga.SelectedValue+"')"; conexao.Open(); adaptador.InsertCommand.ExecuteNonQuery(); dscurso.Reset(); adaptador.FillSchema(dscurso,SchemaType.Mapped,"curso"); adaptador.Fill(dscurso,"curso"); dadoscurso.AutoRefresh=true; } private void remover_Click(object sender, System.EventArgs e) { conexao.Close(); adaptador.DeleteCommand.CommandText="DELETE FROM dbo.Curso WHERE Codigo = '"+wcodigo.Text+"'"; conexao.Open(); adaptador.DeleteCommand.ExecuteNonQuery(); dscurso.Reset(); adaptador.FillSchema(dscurso,SchemaType.Mapped,"curso"); adaptador.Fill(dscurso,"curso"); dadoscurso.AutoRefresh=true; } private void alterar_Click(object sender, System.EventArgs e) { conexao.Close(); adaptador.UpdateCommand.CommandText="UPDATE dbo.Curso SET Codigo = '"+wcodigo.Text+"', Descricao = '"+wdescricao.Text+"', Valor = '"+wvalor.Text+"', Carga_horaria = '"+wcarga.SelectedValue+"' WHERE Codigo = '"+wcodigo.Text+"'"; conexao.Open(); adaptador.UpdateCommand.ExecuteNonQuery(); dscurso.Reset(); adaptador.FillSchema(dscurso,SchemaType.Mapped,"curso"); adaptador.Fill(dscurso,"curso"); dadoscurso.AutoRefresh=true; } Escrevendo cdigos em Delphi.NET (Delphi.NET): Na clausula Uses inclua: System.Data.SqlClient; Na clausula Public inclua a varivel: Conectar:string; No procedimento Page_Load: procedure TWebForm1.Page_Load(sender: System.Object; e: System.EventArgs);
begin // TODO: Put user code to initialize the page here //conectar:='integrated security=SSPI;data source=TITANIUM;persist security info=False;initial catalog=Cursos'; conectar:='server=TITANIUM;database=Cursos;Trusted_connection=Yes'; conexao.ConnectionString := conectar; try adaptador.SelectCommand.CommandText:='SELECT * FROM CURSO'; conexao.Open(); estado.Text:=System.String.Format('Status: Conectado a ',conexao.Database); adaptador.FillSchema(dscurso,SchemaType.Mapped,'curso'); adaptador.Fill(dscurso,'curso'); gradecurso.TableName:='curso'; dadoscurso.AutoRefresh:=true; except estado.Text:='Status: Falha na conexo!'; end; end; Na clausula implementation procedure TWebForm1.alterar_Click(sender: System.Object; e: System.EventArgs); begin conexao.Close(); adaptador.UpdateCommand.CommandText:='UPDATE dbo.Curso SET Codigo = '''+wcodigo.Text+''', Descricao = '''+wdescricao.Text+''', Valor = '''+wvalor.Text+''', Carga_horaria = '''+wcarga.SelectedValue+''' WHERE Codigo = '''+wcodigo.Text+''''; conexao.Open(); adaptador.UpdateCommand.ExecuteNonQuery(); dscurso.Reset(); adaptador.FillSchema(dscurso,SchemaType.Mapped,'curso'); adaptador.Fill(dscurso,'curso'); dadoscurso.AutoRefresh:=true; end; procedure TWebForm1.remover_Click(sender: System.Object; e: System.EventArgs); begin conexao.Close(); adaptador.DeleteCommand.CommandText:='DELETE FROM dbo.Curso WHERE Codigo = '''+wcodigo.Text+''''; conexao.Open(); adaptador.DeleteCommand.ExecuteNonQuery(); dscurso.Reset(); adaptador.FillSchema(dscurso,SchemaType.Mapped,'curso'); adaptador.Fill(dscurso,'curso'); dadoscurso.AutoRefresh:=true; end; procedure TWebForm1.adiciona_Click(sender: System.Object; e: System.EventArgs); begin conexao.Close(); adaptador.InsertCommand.CommandText:='INSERT INTO dbo.Curso (Codigo, Descricao, Valor, Carga_horaria ) VALUES ('''+wcodigo.Text+''', '''+wdescricao.Text+''', '''+wvalor.Text+''', '''+wcarga.SelectedValue+''')'; conexao.Open(); adaptador.InsertCommand.ExecuteNonQuery(); dscurso.Reset();