delphi 5 guia do desenvolvedor - ptbr editora campus 2000

1233
REFERÊNCIA DE TÓPICOS A seguir vemos uma referência rápida para ajudá-lo a localizar alguns dos tópicos mais importantes no livro. Tópico Página ActiveForms 817 Ambiente de desenvolvimento visual 6 API Open Tools 839 Arquitetura cliente/servidor 969 Arquitetura de banco de dados da VCL 915 Arquivos em projetos do Delphi 5 105 Barras de ferramentas de desktop da aplicação 726 Classes de exceção 89 Componentes pseudovisuais 553 Conexão com ODBC 957 Criação de eventos 502 Criação de métodos 507 Criação de um cliente CORBA 896 Criação de um controle ActiveX 778 Criação de um servidor CORBA 883 Dicas de gerenciamento de projeto 109 Distributed COM 631 Editores de componentes 578 Escrita de editores de propriedades 569 Estrutura do componente 456 Etapas da escrita do componente 492 Exceções em DLLs 196 Explicação sobre threads 217 Extensões do shell 754 Fábricas de classes 626 Funções de callback 197 Gerenciamento de memória no Win32 100 Gerenciamento de threads múltiplos 230 Hierarquia dos componentes visuais 461 Inclusão de recursos 136 Informações de tipo em runtime 469 Informações de unidade 301 ISAPI 1013 Local do diretório do sistema 304 Local do diretório do Windows 303 Modelos cliente/servidor 972 Módulos de dados 943 Nome do diretório ativo 304 Tópico Página NSAPI 1013 Object Repository 124 Objeto ciente do clipboard 440 Objetos COM 626 Objetos do kernel 96 Obtenção da versão do sistema operacional 389 Obtenção de informações do diretório 390 Obtenção de informações do sistema 391 Obtenção do status da memória 387 Overloading (sobrecarga) 26 Pacotes 536 Pacotes adicionais 545 Parâmetros default 26 Parênteses 25 Percorrendo o heap 407 Percorrendo o módulo 406 Percorrendo o processo 400 Percorrendo o thread 404 Por que DLLs? 181 Prioridades e scheduling 226 Produtos de conteúdo HTML 1020 Projeto sem formulário 145 Sincronismo de threads 234 Sistema de mensagens do Delphi 151 Sistema de mensagens do Windows 150 Tipos de componentes 455 Tipos definidos pelo usuário 53 Tipos do Object Pascal 33 Trabalho com arquivos de texto 266 Trabalho com arquivos não tipificados 280 Trabalho com arquivos tipificados 271 Tratamento de erros 102 Uso de arquivos mapeados na memória 285 Uso de hooks do Windows 338 Variáveis 27 Verificação do ambiente 393 Vínculos do shell 738 Visualização do heap 410

Upload: david-supo

Post on 28-Dec-2015

314 views

Category:

Documents


36 download

TRANSCRIPT

  • REFERNCIA DE TPICOSA seguir vemos uma referncia rpida para ajud-lo a localizar alguns dos tpicosmais importantes no livro.

    Tpico PginaActiveForms 817Ambiente de desenvolvimento visual 6API Open Tools 839Arquitetura cliente/servidor 969Arquitetura de banco de dados da VCL 915Arquivos em projetos do Delphi 5 105Barras de ferramentas de desktop daaplicao 726

    Classes de exceo 89Componentes pseudovisuais 553Conexo com ODBC 957Criao de eventos 502Criao de mtodos 507Criao de um cliente CORBA 896Criao de um controle ActiveX 778Criao de um servidor CORBA 883Dicas de gerenciamento de projeto 109Distributed COM 631Editores de componentes 578Escrita de editores de propriedades 569Estrutura do componente 456Etapas da escrita do componente 492Excees em DLLs 196Explicao sobre threads 217Extenses do shell 754Fbricas de classes 626Funes de callback 197Gerenciamento de memria no Win32 100Gerenciamento de threads mltiplos 230Hierarquia dos componentes visuais 461Incluso de recursos 136Informaes de tipo em runtime 469Informaes de unidade 301ISAPI 1013Local do diretrio do sistema 304Local do diretrio do Windows 303Modelos cliente/servidor 972Mdulos de dados 943Nome do diretrio ativo 304

    Tpico PginaNSAPI 1013Object Repository 124Objeto ciente do clipboard 440Objetos COM 626Objetos do kernel 96Obteno da verso do sistemaoperacional 389

    Obteno de informaes do diretrio 390Obteno de informaes do sistema 391Obteno do status da memria 387Overloading (sobrecarga) 26Pacotes 536Pacotes adicionais 545Parmetros default 26Parnteses 25Percorrendo o heap 407Percorrendo o mdulo 406Percorrendo o processo 400Percorrendo o thread 404Por que DLLs? 181Prioridades e scheduling 226Produtos de contedo HTML 1020Projeto sem formulrio 145Sincronismo de threads 234Sistema de mensagens do Delphi 151Sistema de mensagens do Windows 150Tipos de componentes 455Tipos definidos pelo usurio 53Tipos do Object Pascal 33Trabalho com arquivos de texto 266Trabalho com arquivos no tipificados 280Trabalho com arquivos tipificados 271Tratamento de erros 102Uso de arquivos mapeados na memria 285Uso de hooks do Windows 338Variveis 27Verificao do ambiente 393Vnculos do shell 738

    Visualizao do heap 410

  • DELPHI 5

  • Consultor EditorialFernando Barcellos XimenesKPMG Consulting

    TradutorDaniel Vieira

    Preencha a ficha de cadastro no final deste livroe receba gratuitamente informaes

    sobre os lanamentos e as promoes daEditora Campus.

    Consulte tambm nosso catlogocompleto e ltimos lanamentos em

    www.campus.com.br

    ASSOCIAO BRASILEIRA DE DIREITOS REPROGRFICOS

  • DELPHI 5

  • Do original:Delphi 5 Developers GuideTraduo autorizada do idioma ingls da edio publicada por Sams PublishingCopyright 2000 by Sams Publishing 2000, Editora Campus Ltda.Todos os direitos reservados e protegidos pela Lei 5.988 de 14/12/73.Nenhuma parte deste livro, sem autorizao prvia por escrito da editora,poder ser reproduzida ou transmitida sejam quais forem os meios empregados:eletrnicos, mecnicos, fotogrficos, gravao ou quaisquer outros.

    CapaAdaptao da edio americana por Editora CampusEditorao EletrnicaRioTextoReviso GrficaIv\one TeixeiraRoberto Mauro FacceProjeto GrficoEditora Campus Ltda.A Qualidade da Informao.Rua Sete de Setembro, 111 16 andar20050-002 Rio de Janeiro RJ BrasilTelefone: (21) 509-5340 FAX (21) 507-1991E-mail: [email protected]

    ISBN 85-352-0578-0(Edio original: 0-672-31781-8)

    CIP-Brasil. Catalogao-na-fonte.Sindicato Nacional dos Editores de Livros, RJ

    T269dTeixeira, Steve

    Delphi 5, guia do desenvolvedor / Steve Teixeira, Xavier Pacheco ;traduo de Daniel Vieira. Rio de Janeiro : Campus, 2000

    : + CD-ROM

    Traduo de: Delphi 5 developers guideISBN 85-352-0578-0

    1. DELPHI (Linguagem de programao de computador). I. Pacheco,Xavier. II. Ttulo.

    00-0287. CDD 005.1CDU 004.43

    00 01 02 03 5 4 3 2 1

    Todos os esforos foram feitos para assegurar a preciso absoluta das informaes apresentadas nestapublicao. A editora responsvel pela publicao original, a Editora Campus e o(s) autor(es) deste livrose isentam de qualquer tipo de garantia (explcita ou no), incluindo, sem limitao, garantias implcitasde comercializao e de adequao a determinadas finalidades, com relao ao cdigo-fonte e/ou stcnicas descritos neste livro, bem como ao CD que o acompanha.

  • Dedicatrias

    Dedicatria de XavierPara Anne

    Dedicatria de StevePara Helen e Cooper

    AgradecimentosGostaramos de agradecer a todos aqueles cuja ajuda foi essencial para que este livro pudesse ser escrito.Alm do nosso agradecimento, tambm queremos indicar que quaisquer erros ou omisses que voc en-contrar no livro, apesar dos esforos de todos, so de responsabilidade nossa.

    Gostaramos de agradecer aos nossos revisores tcnicos e bons amigos, Lance Bullock, Chris Hesike Ellie Peters. O revisor tcnico ideal brilhante e detalhista, e tivemos a sorte de contar com trs indiv-duos que atendem exatamente a essas qualificaes! Esse pessoal realizou um timo trabalho com umprazo bastante apertado, e somos imensamente gratos por seus esforos.

    Em seguida, um enorme agradecimento aos nossos autores colaboradores, que emprestaram suashabilidades superiores de desenvolvimento e escrita de software para tornar o Delphi 5 Guia do Desen-volvedor melhor do que teria sido de outra forma. O guru do MIDAS, Dan Miser, entrou escrevendo oexcelente Captulo 32. Lance Bullock, a quem oferecemos o dobro da dose normal de gratido, conse-guiu compactar o Captulo 27, entre suas tarefas como revisor tcnico. Finalmente, o mago da Web NickHodges (inventor do TSmiley) est de volta nesta edio do livro no Captulo 31.

    Agradecemos a David Intersimone, que encontrou tempo para escrever o prefcio deste livro, ape-sar de sua agenda to ocupada.

    Enquanto escrevamos o Delphi 5 - Guia do Desenvolvedor, recebemos conselhos ou dicas de in-meros amigos e colegas de trabalho. Entre essas pessoas esto Alain Lino Trados, Roland Bouchereau,Charlie Calvert, Josh Dahlby, David Sampson, Jason Sprenger, Scott Frolich, Jeff Peters, Greg de Vries,Mark Duncan, Anders Ohlsson, David Streever, Rich Jones e outros tantos que no conseguiramosmencionar.

    Finalmente, agradecemos ao pessoal da Macmillan: Shelley Johnston, Gus Miklos, Dan Scherf etantos outros que trabalham em tarefas de suporte, os quais nunca vimos mas, sem sua ajuda, este livrono seria uma realidade.

    Agradecimentos especiais de XavierNunca poderia ser grato o suficiente pelas bnos abundantes de Deus, sendo a maior delas o Seu

    Filho, Jesus, meu Salvador. Agradeo a Deus pela milha esposa Anne, cujo amor, pacincia e compreen-so sempre me sero necessrios. Obrigado a Anne, pelo seu apoio e encorajamento e, principalmente

    VII

  • por suas oraes e compromisso com o nosso Santo Pai. Sou grato minha filha Amanda e pela alegriaque ela traz. Amanda, voc verdadeiramente uma bno para a minha vida.

    Agradecimentos especiais de SteveGostaria de agradecer minha famlia, especialmente a Helen, que sempre me lembra do que mais im-portante e me ajuda a melhorar nos pontos difceis, e a Cooper, que oferece clareza completa quando euvejo o mundo por seus olhos.

    Os AutoresSteve Teixeira vice-presidente de Desenvolvimento de Software na DeVries Data Systems, uma empre-sa de consultoria sediada no Vale do Silcio, especializada em solues da Borland/Inprise. Anteriormen-te, era engenheiro de software de pesquisa e desenvolvimento na Inprise Corporation, onde ajudou aprojetar e desenvolver o Delphi e o C++Builder, ambos da Borland. Steve tambm colunista da TheDelphi Magazine, consultor e treinador profissional, e palestrante conhecido internacionalmente. Stevemora em Saratoga, Califrnia, com sua esposa e seu filho.

    Xavier Pacheco o presidente e consultor-chefe da Xapware Technologies, Inc., uma empresa de con-sultoria/treinamento com sede em Colorado Springs. Xavier constantemente realiza palestras em confe-rncias do setor e autor colaborador de peridicos sobre o Delphi. consultor e treinador sobre oDelphi, conhecido internacionalmente, e membro do seleto grupo de voluntrios de suporte do Delphi o TeamB. Xavier gosta de passar tempo com sua esposa, Anne, e sua filha, Amanda. Xavier e Anne mo-ram no Colorado com seus pastores-alemes, Rocky e Shasta.

    VIII

  • Prefcio

    Comecei a trabalhar na Borland em meados de 1985, com o intuito de fazer parte da nova gerao de fer-ramentas de programao (o UCSC Pascal System e as ferramentas da linha de comandos simplesmenteno eram suficientes), para ajudar a aperfeioar o processo de programao (talvez para deixar um pou-co mais de tempo para nossas famlias e amigos) e, finalmente, para ajudar a enriquecer a vida dos pro-gramadores (incluindo eu mesmo). O Turbo Pascal 1.0 mudou a cara das ferramentas de programao deuma vez por todas. Ele definiu o padro em 1983.

    O Delphi tambm mudou a cara da programao mais uma vez. O Delphi 1.0 visava facilitar a pro-gramao orientada a objeto, a programao do Windows e a programao de bancos de dados. Outrasverses do Delphi tentaram aliviar a dor da escrita de aplicaes para Internet e aplicaes distribudas.Embora tenhamos includo inmeros recursos aos nossos produtos com o passar dos anos, escrevendomuitas pginas de documentao e megabytes de ajuda on-line, ainda h mais informaes, conhecimen-to e conselhos necessrios para os programadores completarem seus projetos com sucesso.

    A manchete poderia ser: Delphi 5 Dezesseis Anos em Desenvolvimento. No este livro, mas oproduto. Dezesseis anos? voc poderia questionar. Foram aproximadamente 16 anos desde que a pri-meira verso do Turbo Pascal apareceu em novembro de 1983. Pelos padres da Internet, esse tempotodo facilmente estouraria uma Int64. O Delphi 5 a prxima grande verso que est chegando.

    Na realidade, ela a 13a verso do nosso compilador. No acredita? Basta executar DCC32.EXE na li-nha de comandos (costumamos cham-la de prompt do DOS) e voc ver o nmero de verso do com-pilador e o texto de ajuda para os parmetros da linha de comandos. Foram necessrios muitos engenhei-ros, testadores, documentadores, autores, fs, amigos e parentes para a produo de um produto. ne-cessria uma classe especial de escritores para poder escrever um livro sobre o Delphi.

    O que preciso para escrever um guia do programador? A resposta simples muita coisa. Comoeu poderia definir isso? No posso impossvel definir. Em vez de uma definio, s posso oferecer al-gumas informaes para ajud-lo a formar a definio, uma receita, se preferir:

    Receita de escritor rpida e fcil de Davey Hackers

    Delphi 5 Guia do Desenvolvedor

    Ingredientes:

    Delphi 5 (edio Standard, Professional ou Enterprise)

    Dois autores de livros com um peso profissional de 70 quilos

    Milhares de colheres de sopa de palavras

    Milhares de xcaras de cdigo-fonte

    Dcadas de ajuda de experincia (incluindo anos de trabalho com o Delphi)

    Punhados de sabedoria

    Muitas horas de pesquisaIX

  • Semanas de depurao

    Litros e mais litros de lquidos (minha escolha seria Diet Pepsi)

    Centenas de horas de sono

    Preparao:

    Pr-aquea seu PC em 110 volts (ou 220 volts, para os programadores que residem em locais pri-vilegiados).

    Aplique calor aos programadores

    No seu disco rgido, misture nas verses de teste em campo do Delphi 5, todos os ingredientes detexto e de cdigo-fonte.

    Mexa com anos de experincia, horas de pesquisa, semanas de depurao, punhados de sabedo-ria e litros do lquido.

    Escoe as horas de sono.

    Deixe os outros ingredientes ficarem em temperatura ambiente por algum tempo.

    Resultado:Um Delphi 5 Guia do Desenvolvedor, de Steve Teixeira e Xavier Pacheco.

    Variaes:Substitua sua escolha favorita de lquido gua, suco, caf etc.

    Para citar um comediante famoso, deixemos toda a seriedade de lado. Conheci Steve Teixeira (al-guns o chamam de T-Rex) e Xavier Pacheco (alguns o chamam apenas de X) h anos como amigos, cole-gas de trabalho, palestrantes em nossa conferncia anual de programadores e como membros da comuni-dade da Borland.

    As edies anteriores foram recebidas entusiasticamente pelos programadores Delphi do mundo in-teiro. Agora, a verso mais recente est pronta para todos aproveitarem.

    Divirta-se e aprenda muito. Esperamos que todos os seus projetos em Delphi sejam agradveis, bem-sucedidos e recompensadores.

    David Intersimone, David IVice-presidente de Relaes

    com o ProgramadorInprise Corporation

    X

  • Sumrio

    PARTE I FUNDAMENTOS PARA DESENVOLVIMENTO RPIDO

    CAPTULO 1 PROGRAMAO DO WINDOWS NO DELPHI 5 . . . . . . . . . . . . . . . . . . 3A famlia de produtos Delphi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Delphi: o que e por qu? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Uma pequena histria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9A IDE do Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Uma excurso pelo cdigo-fonte do seu projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Viagem por uma pequena aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17O que h de to interessante nos eventos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Criao avanada de prottipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Ambiente e componentes extensveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Os 10 recursos mais importantes da IDE que voc precisa conhecer e amar . . . . . . . 20Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    CAPTULO 2 A LINGUAGEM OBJECT PASCAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Comentrios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Novos recursos de procedimento e funo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Tipos do Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Tipos definidos pelo usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Typecast e converso de tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Recursos de string. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Testando condies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Procedimentos e funes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Unidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Pacotes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Programao orientada a objeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Como usar objetos do Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Tratamento estruturado de excees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Runtime Type Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    CAPTULO 3 A API DO WIN32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Objetos antes e agora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Multitarefa e multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Gerenciamento de memria no Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Tratamento de erros no Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    XI

  • CAPTULO 4 ESTRUTURAS E CONCEITOS DE PROJETO DE APLICAES . . . . . . . 104O ambiente e a arquitetura de projetos do Delphi. . . . . . . . . . . . . . . . . . . . . . . . . . 105Arquivos que compem um projeto do Delphi 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Dicas de gerenciamento de projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109As classes de estruturas em um projeto do Delphi 5 . . . . . . . . . . . . . . . . . . . . . . . . 112Definio de uma arquitetura comum: o Object Repository . . . . . . . . . . . . . . . . . . . 124Rotinas variadas para gerenciamento de projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    CAPTULO 5 AS MENSAGENS DO WINDOWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148O que uma mensagem? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Tipos de mensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Como funciona o sistema de mensagens do Windows . . . . . . . . . . . . . . . . . . . . . . . 150O sistema de mensagens do Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Tratamento de mensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Como enviar suas prprias mensagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Mensagens fora do padro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Anatomia de um sistema de mensagens: a VCL . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Relacionamento entre mensagens e eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

    CAPTULO 6 DOCUMENTO DE PADRES DE CODIFICAO . . . . . . . . . . . . . . . 168O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 7 CONTROLES ACTIVEX COM DELPHI . . . . . . . . . . . . . . . . . . . . . . . . . 170O texto completo deste captulo aparece no CD que acompanha este livro.

    PARTE II TCNICAS AVANADAS

    CAPTULO 8 PROGRAMAO GRFICA COM GDI E FONTES . . . . . . . . . . . . . . . 175O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 9 BIBLIOTECAS DE VNCULO DINMICO (DLLS) . . . . . . . . . . . . . . . . 177O que exatamente uma DLL?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Vnculo esttico comparado ao vnculo dinmico. . . . . . . . . . . . . . . . . . . . . . . . . . . 180Por que usar DLLs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Criao e uso de DLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Exibio de formulrios sem modo a partir de DLLs . . . . . . . . . . . . . . . . . . . . . . . . . 186Uso de DLLs nas aplicaes em Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Carregamento explcito de DLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Funo de entrada/sada da biblioteca de vnculo dinmico . . . . . . . . . . . . . . . . . . 192Excees em DLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Funes de callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Chamada das funes de callback a partir de suas DLLs . . . . . . . . . . . . . . . . . . . . . 200Compartilhamento de dados da DLL por diferentes processos . . . . . . . . . . . . . . . . . 203Exportao de objetos a partir de DLLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    CAPTULO 10 IMPRESSO EM DELPHI 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 11 APLICAES EM MULTITHREADING. . . . . . . . . . . . . . . . . . . . . . . . 216Explicao sobre os threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217O objeto TThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Gerenciamento de mltiplos threads. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    XII

  • Exemplo de uma aplicao de multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Acesso ao banco de dados em multithreading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Grficos de multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

    CAPTULO 12 TRABALHO COM ARQUIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Tratamento do I/O de arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266As estruturas de registro TTextRec e TFileRec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Trabalho com arquivos mapeados na memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Diretrios e unidades de disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300Uso da funo SHFileOperation( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

    CAPTULO 13 TCNICAS MAIS COMPLEXAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Tratamento avanado de mensagens da aplicao . . . . . . . . . . . . . . . . . . . . . . . . . 324Evitando mltiplas instncias da aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Uso do BASM com o Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Uso de ganchos do Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338Uso de arquivos OBJ do C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352Uso de classes do C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360Thunking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364Obteno de informaes do pacote. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

    CAPTULO 14 ANLISE DE INFORMAES DO SISTEMA. . . . . . . . . . . . . . . . . . . 385InfoForm: obtendo informaes gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Projeto independente da plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Windows 95/98: usando ToolHelp32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Windows NT/2000: PSAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

    CAPTULO 15 TRANSPORTE PARA DELPHI 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 16 APLICAES MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 17 COMPARTILHAMENTO DE INFORMAES COM O CLIPBOARD . 436No princpio, havia o Clipboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437Criao do seu prprio formato de Clipboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

    CAPTULO 18 PROGRAMAO DE MULTIMDIA COM DELPHI . . . . . . . . . . . . . . 447O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 19 TESTE E DEPURAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449O texto completo deste captulo aparece no CD que acompanha este livro.

    PARTE III DESENVOLVIMENTO COM BASEEM COMPONENTES . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

    CAPTULO 20 ELEMENTOS-CHAVE DA VCL E RTTI . . . . . . . . . . . . . . . . . . . . . . . . 453O que um componente? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454Tipos de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455A estrutura do componente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

    XIII

  • A hierarquia do componente visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461RTTI (Runtime Type Information) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    CAPTULO 21 ESCRITA DE COMPONENTES PERSONALIZADOS DO DELPHI . . . . 490Fundamentos da criao de componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491Componentes de exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513TddgButtonEdit componentes continer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Pacotes de componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Pacotes de add-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

    CAPTULO 22 TCNICAS AVANADAS COM COMPONENTES . . . . . . . . . . . . . . 552Componentes pseudovisuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553Componentes animados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Escrita de editores de propriedades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Editores de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578Streaming de dados no-publicados do componente. . . . . . . . . . . . . . . . . . . . . . . . 583Categorias de propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592Listas de componentes: TCollection e TCollectionItem . . . . . . . . . . . . . . . . . . . . . . . 596Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

    CAPTULO 23 TECNOLOGIAS BASEADAS EM COM. . . . . . . . . . . . . . . . . . . . . . . . 616Fundamentos do COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617COM compatvel com o Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620Objetos COM e factories de classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626Agregao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630Distributed COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631Tcnicas avanadas de Automation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655MTS (Microsoft Transaction Server) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679TOleContainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711

    CAPTULO 24 EXTENSO DO SHELL DO WINDOWS . . . . . . . . . . . . . . . . . . . . . . 712Um componente de cone de notificao da bandeja. . . . . . . . . . . . . . . . . . . . . . . . 713Barras de ferramentas de desktop da aplicao. . . . . . . . . . . . . . . . . . . . . . . . . . . . 726Vnculos do shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738Extenses do shell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

    CAPTULO 25 CRIAO DE CONTROLES ACTIVEX . . . . . . . . . . . . . . . . . . . . . . . . 777Por que criar controles ActiveX? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778Criao de um controle ActiveX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778ActiveForms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817ActiveX na Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836

    CAPTULO 26 USO DA API OPEN TOOLS DO DELPHI. . . . . . . . . . . . . . . . . . . . . . 837Interfaces da Open Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838Uso da API Open Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839Assistentes de formulrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869

    CAPTULO 27 DESENVOLVIMENTO CORBA COM DELPHI . . . . . . . . . . . . . . . . . . 870ORB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871XIV

  • Stubs e estruturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871O VisiBroker ORB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872Suporte a CORBA no Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873Criando solues CORBA com o Delphi 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882Distribuindo o VisiBroker ORB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909

    PARTE IV DESENVOLVIMENTO DE BANCO DE DADOS . . . . . . . 911

    CAPTULO 28 ESCRITA DE APLICAES DE BANCO DE DADOS DE DESKTOP . 913Trabalho com datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914Uso de TTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937Mdulos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943O exemplo de consulta, intervalo e filtro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943TQuery e TStoredProc: os outros datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953Tabelas de arquivo de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953Conexo com ODBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957ActiveX Data Objects (ADO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966

    CAPTULO 29 DESENVOLVIMENTO DE APLICAES CLIENTE/ SERVIDOR . . . . 967Por que utilizar cliente/servidor? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968Arquitetura cliente/servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969Modelos cliente/servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972Desenvolvimento em cliente/servidor ou em banco de dados para desktop? . . . . . . 974SQL: seu papel no desenvolvimento cliente/servidor . . . . . . . . . . . . . . . . . . . . . . . . 976Desenvolvimento em cliente/servidor no Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . 977O servidor: projeto do back-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977O cliente: projeto do front-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008

    CAPTULO 30 EXTENSO DA VCL DE BANCO DE DADOS . . . . . . . . . . . . . . . . . 1009O texto completo deste captulo aparece no CD que acompanha este livro.

    CAPTULO 31 WEBBROKER: USANDO A INTERNET EM SUAS APLICAES . . 1011Extenses de servidor da Web ISAPI, NSAPI e CGI . . . . . . . . . . . . . . . . . . . . . . . . . 1013Criao de aplicaes da Web com o Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014Pginas HTML dinmicas com criadores de contedo HTML. . . . . . . . . . . . . . . . . . 1020Manuteno de estado com cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028Redirecionamento para outro site da Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031Recuperao de informaes de formulrios HTML . . . . . . . . . . . . . . . . . . . . . . . . 1032Streaming de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037

    CAPTULO 32 DESENVOLVIMENTO MIDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038Mecnica da criao de uma aplicao em multicamadas . . . . . . . . . . . . . . . . . . . 1039Benefcios da arquitetura em multicamadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040Arquitetura MIDAS tpica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041Uso do MIDAS para criar uma aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045Outras opes para fortalecer sua aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051Exemplos do mundo real. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055Mais recursos de dataset do cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064Distribuio de aplicaes MIDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1072Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075

    XV

  • PARTE V DESENVOLVIMENTO RPIDO DE APLICAESDE BANCO DE DADOS . . . . . . . . . . . . . . . . . . . . . . . . . 1077

    CAPTULO 33 GERENCIADOR DE ESTOQUE: DESENVOLVIMENTOCLIENTE/SERVIDOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079

    Projeto do back-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080Acesso centralizado ao banco de dados: as regras comerciais . . . . . . . . . . . . . . . . 1087Projeto da interface do usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122

    CAPTULO 34 DESENVOLVIMENTO MIDAS PARA RASTREAMENTODE CLIENTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123

    Projeto da aplicao servidora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124Projeto da aplicao cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142

    CAPTULO 35 FERRAMENTA DDG PARA RELATRIO DE BUGS DESENVOLVIMENTO DE APLICAO DE DESKTOP . . . . . . . . . . 1143

    Requisitos gerais da aplicao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144O modelo de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145Desenvolvimento do mdulo de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145Desenvolvimento da interface do usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159Como capacitar a aplicao para a Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166

    CAPTULO 36 FERRAMENTA DDG PARA INFORME DE BUGS:USO DO WEBBROKER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167

    O layout das pginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168Mudanas no mdulo de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168Configurao do componente TDataSetTableProducer: dstpBugs . . . . . . . . . . . . . . 1169Configurao do componente TWebDispatcher: wbdpBugs . . . . . . . . . . . . . . . . . . 1169Configurao do componente TPageProducer: pprdBugs . . . . . . . . . . . . . . . . . . . . 1169Codificao do servidor ISAPI DDGWebBugs: incluindo instncias de TactionItem . 1170Navegao pelos bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175Incluso de um novo bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185

    PARTE VI APNDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187

    APNDICE A MENSAGENS DE ERRO E EXCEES . . . . . . . . . . . . . . . . . . . . . . . 1189O texto completo deste captulo aparece no CD que acompanha este livro.

    APNDICE B CDIGOS DE ERRO DO BDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191O texto completo deste captulo aparece no CD que acompanha este livro.

    APNDICE C LEITURA SUGERIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193Programao em Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194Projeto de componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194Programao em Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194Programao orientada a objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194Gerenciamento de projeto de software e projeto de interface com o usurio . . . . 1194COM/ActiveX/OLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194

    NDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195

    O QUE H NO CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221XVI

  • Introduo

    Voc acredita que j se passaram quase cinco anos desde que comeamos a trabalhar na primeira ediodo Delphi? Naquela poca, ramos apenas alguns programadores trabalhando no departamento de su-porte a linguagens da Borland, procurando algum novo desafio no software. Tnhamos uma idia paraum livro que pudesse evitar coisas que voc poderia aprender na documentao do produto em favor demostrar prticas de codificao apropriadas e algumas tcnicas interessantes. Tambm achvamos quenossa experincia com suporte ao programador nos permitiria responder s dvidas do programador an-tes mesmo que elas fossem feitas. Levamos a idia para a Sams e eles se entusiasmaram muito. Depois ini-ciamos os muitos e extenuantes meses de desenvolvimento do manuscrito, programao, altas horas danoite, mais programao e talvez alguns prazos perdidos (porque estvamos muito ocupados progra-mando). Finalmente, o livro foi terminado.

    Nossas expectativas eram modestas. A princpio, estvamos apenas esperando sair sem ganhar ouperder. No entanto, aps vrios meses de muitas vendas, descobrimos que nosso conceito de um guia doprogramador essencial era simplesmente o que o mdico (ou, neste caso, o programador) solicitara. Nos-sos sentimentos se solidificaram quando voc, o leitor, votou no Guia do Programador Delphi para o pr-mio Delphi Informant Readers Choice, como melhor livro sobre Delphi.

    Creio que nosso editor nos introduziu de mansinho, pois no pudemos mais parar de escrever. Lan-amos o Delphi 2 no ano seguinte, completamos um manuscrito para o Delphi 3 (que infelizmente nuncafoi publicado) no ano seguinte e publicamos o Delphi 4 no prximo ano, para o qual formos novamentehonrados com o prmio Delphi Informant Readers Choice como melhor livro sobre Delphi. O que voctem em suas mos o nosso trabalho mais recente, o Delphi 5, e acreditamos que ele ser um recurso ain-da mais valioso do que qualquer edio anterior.

    Atualmente, Steve vice-presidente de Desenvolvimento de Software na DeVries Data Systems,uma empresa de consultoria sediada no Vale do Silcio, especializada em solues da Borland, e Xavierpossui sua prpria forma de consultoria e treinamento em Delphi, a XAPWARE Technologies Inc. Acre-ditamos que nossa combinao exclusiva de experincia nas trincheiras dos departamentos de suporteao programador e pesquisa e desenvolvimento da Borland, combinada com nossa experincia do mundoreal como programadores e conhecedores do interior do produto Delphi, constituem a base para um li-vro muito bom sobre o Delphi.

    Simplificando, se voc quiser desenvolver apresentaes em Delphi, este o livro perfeito paravoc. Nosso objetivo no apenas mostrar como desenvolver aplicaes usando o Delphi, mas desen-volver aplicaes da maneira correta. Delphi uma ferramenta inigualvel, que permite reduzir drasti-camente o tempo necessrio para desenvolver aplicaes, oferecendo ainda um nvel de desempenhoque atende ou excede o da maioria dos compiladores C++ no mercado. Este livro mostra como obtero mximo desses dois mundos, demonstrando o uso eficaz do ambiente de projeto do Delphi, tcnicasapropriadas para reutilizar o cdigo e mostrando-lhe como escrever um cdigo bom, limpo e eficiente.

    Este livro est dividido em cinco partes. A Parte I oferece uma base forte sobre os aspectos impor-tantes da programao com Delphi e Win32. A Parte II utiliza essa base para ajud-lo a montar aplicaese utilitrios pequenos, porm teis, que o ajudam a expandir seu conhecimento dos tpicos de progra-mao mais complexos. A Parte III discute o desenvolvimento de componentes da VCL e o desenvolvi-mento usando COM. A Parte IV o acompanha pelas etapas de desenvolvimento de banco de dados noDelphi, desde tabelas locais at bancos de dados SQL e solues em vrias camadas. A Parte V rene XVII

  • grande parte do que voc aprendeu nas partes anteriores para montar aplicaes do mundo real em esca-la maior.

    Captulos no CDNo h dvida de que voc j viu o sumrio, e pode ter notado que existem vrios captulos que apare-cem apenas no CD e no esto no livro impresso. O motivo para isso simples: escrevemos mais materialdo que poderia ser includo em um nico livro. Devido a esse problema, tivemos vrias escolhas. Pode-ramos dividir o Guia do Programador Delphi 5 em dois livros, mas decidimos no fazer isso principal-mente porque os leitores teriam que pagar mais para obter o material. Outra opo foi omitir alguns ca-ptulos inteiramente, mas achamos de isso criaria alguns buracos bvios na cobertura do livro. A escolhaque fizemos, naturalmente, foi colocar alguns captulos no CD. Isso nos permitiu equilibrar os pesos en-tre cobertura, convenincia e custo. importante lembrar que os captulos no CD no so extras, masuma parte integral do livro. Eles foram escritos, revisados e editados com o mesmo cuidado e ateno aosdetalhes que todo o restante do livro.

    Quem dever ler este livroComo o ttulo do livro indica, este livro para programadores (ou desenvolvedores). Assim, se voc programador e usa o Delphi, ento dever ter este livro. Entretanto, em particular, este livro indicadopara trs grupos de pessoas:

    Desenvolvedores em Delphi que desejam levar suas habilidades para o nvel seguinte.

    Programadores experientes em Pascal, BASIC ou C/C++ que estejam procurando atualizar-secom o Delphi.

    Programadores que estejam procurando obter o mximo do Delphi, aproveitando a API Win32e usando alguns dos recursos menos bvios do Delphi.

    Convenes utilizadas neste livroNeste livro, foram utilizadas as seguintes convenes tipogrficas:

    Linhas de cdigo, comandos, instrues, variveis, sada de programa e qualquer texto que vocveja na tela aparece em uma fonte de computador.

    Qualquer coisa que voc digita aparece em uma fonte de computador em negrito.

    Marcadores de lugar em descries de sintaxe aparecem em uma fonte de computador em itlico.Substitua o marcador de lugar pelo nome de arquivo, parmetro ou outro elemento real que elerepresenta.

    O texto em itlico destaca termos tcnicos quando aparecem pela primeira vez no texto e s ve-zes usado para enfatizar pontos importantes.

    Procedimentos e funes so indicados com parnteses inicial e final aps o nome do procedi-mento ou da funo. Embora essa no seja uma sintaxe padro em Pascal, ela ajuda a diferen-ci-los de propriedades, variveis e tipos.

    Dentro de cada captulo, voc encontrar vrias Notas, Dicas e Cuidados que ajudam a destacar ospontos importantes e ajud-lo a se livrar das armadilhas.

    Voc encontrar todos os arquivos de cdigo-fonte e projeto no CD que acompanha este livro,alm dos exemplos de cdigo que no pudemos incluir no prprio livro. Alm disso, d uma olhada noscomponentes e ferramentas do diretrio \THRDPRTY, onde encontrar algumas verses de teste de podero-sos componentes de terceiros.

    XVIII

  • Atualizaes deste livroInformaes sobre atualizaes, extras e errata deste livro esto disponveis por meio da Web. Visitehttp://www.xapware.com/ddg para obter as notcias mais recentes.

    ComeandoAs pessoas costumam nos perguntar o que nos leva a continuar escrevendo livros sobre o Delphi. difcilexplicar, mas sempre que encontramos outros programadores e vemos sua cpia obviamente bem utili-zada, cheia de marcadores e um tanto surrada do Delphi Guia do Desenvolvedor, de alguma forma issonos recompensa.

    Agora hora de relaxar e divertir-se programando com Delphi. Comearemos devagar, mas passa-remos para tpicos mais avanados em um ritmo rpido, porm satisfatrio. Antes que voc perceba,ter o conhecimento e as tcnicas necessrias para ser verdadeiramente chamado de guru do Delphi.

    XIX

  • Fundamentos paraDesenvolvimentoRpido

    P A R T E

    I

    NESTA PARTE1 Programao do Windows no Delphi 5 3

    2 A linguagem Object Pascal 24

    3 A API do Win32 95

    4 Estruturas e conceitos de projeto deaplicaes 104

    5 As mensagens do Windows 148

    6 Documento de padres de codificao 168

    7 Controles ActiveX com Delphi 170

  • Programao doWindows no Delphi 5

    C A P T U L O

    1

    NESTE CAPTULO A famlia de produtos Delphi 4

    Delphi: o que e por qu 6

    Uma pequena histria 9

    A IDE do Delphi 12

    Uma excurso pela fonte do seu projeto 15

    Viagem por uma pequena aplicao 17

    O que h de to interessante nos eventos? 18

    Criao avanada de prottipos 19

    Ambiente e componentes extensveis 20

    Os 10 recursos mais importantes da IDE que vocprecisa conhecer e amar 20

    Resumo 23

  • Este captulo apresenta uma viso geral de alto nvel do Delphi, incluindo histria, conjunto de recursos,como o Delphi se adapta ao mundo do desenvolvimento no Windows e um apanhado geral das informa-es de que voc precisa para se tornar um programador em Delphi. Para deix-lo com gua na boca comas potencialidades abertas por essa linguagem, este captulo tambm discute os recursos indispensveisda IDE do Delphi, dando nfase particularmente em alguns recursos to raros que at mesmo os progra-madores experientes em Delphi podem no ter ouvido falar da existncia deles. Este captulo no tem afinalidade de ensinar os fundamentos do processo de desenvolvimento de software no ambiente Delphi.Acreditamos que voc tenha gasto o seu rico dinheirinho com este livro para aprender coisas novas e in-teressantes e no para ler um pastiche de um contedo ao qual voc pode ter acesso na documentaoda Borland. Na verdade, nossa misso demonstrar as vantagens: mostrar-lhe os poderosos recursosdesse produto e, em ltima anlise, como empregar esses recursos para construir softwares de qualidadecomercial. Esperamos que nosso conhecimento e experincia com a ferramenta nos possibilite lhe forne-cer alguns insights interessantes e teis ao longo do caminho. Acreditamos que tanto os programado-res que j conhecem a linguagem Delphi como aqueles que somente agora esto entrando nesse universopossam tirar proveito deste captulo (e deste livro!), desde que os nefitos entendam que esta obra no o marco zero de sua caminhada para se tornar um programador em Delphi. Inicie com a documentaoda Borland e os exemplos simples. Uma vez que voc tenha se familiarizado com o funcionamento daIDE e o be-a-b do desenvolvimento de aplicaes, seja bem-vindo a bordo e faa uma boa viagem!

    A famlia de produtos DelphiO Delphi 5 vem em trs verses, que foram projetadas de modo a se adaptar a uma srie de diferentes ne-cessidades: Delphi 5 Standard, Delphi 5 Professional e Delphi 5 Enterprise. Cada uma dessas verses indicada para um tipo diferente de programador.

    O Delphi 5 Standard a verso bsica. Ela fornece tudo que voc necessita para comear a escreveraplicaes com o Delphi e ideal para as pessoas que vem no Delphi uma fonte de divertimento ou paraestudantes que desejam dominar a programao em Delphi e no estejam dispostos a gastar muito di-nheiro. Essa verso inclui os seguintes recursos:

    Otimizao do compilador Object Pascal de 32 bits

    VCL (Visual Component Library), que inclui mais de 85 componentes-padro na ComponentPalette

    Suporte a pacote, que permite que voc crie pequenas bibliotecas de executveis e componentes

    Uma IDE que inclui editor, depurador, Form Designer e um grande nmero de recursos de pro-dutividade

    O Delphi 1, que includo para ser usado no desenvolvimento de aplicaes para o Windows de16 bits

    Suporte completo para a API do Win32, incluindo COM, GDI, DirectX, multithreading e vrioskits de desenvolvimento de software da Microsoft e de terceiros

    O Delphi 5 Professional perfeito para ser usado por programadores profissionais que no exijamrecursos cliente/servidor. Se voc um programador profissional construindo e distribuindo aplicaesou componentes Delphi, para voc que se destina este produto. A edio Professional inclui tudo o quea edio Standard possui, e mais os seguintes itens:

    Mais de 150 componentes VCL na Component Palette

    Suporte para banco de dados, incluindo controles VCL cientes de dados, o Borland DatabaseEngine (BDE) 5,0, drivers BDE para tabelas locais, uma arquitetura de dataset virtual que permi-te incorporar outros programas de banco de dados na VCL, a ferramenta Database Explorer, umdepsito de dados, suporte para ODBC e componentes InterBase Express nativos da InterBase

    4

  • Assistentes para criar componentes COM, como controles ActiveX, ActiveForms, servidores deAutomation e pginas de propriedades

    A ferramenta de criao de relatrios QuickReports, com a qual possvel integrar relatriospersonalizados nas aplicaes

    O TeeChart, com componentes grficos para visualizar seus dados

    Um LIBS (Local InterBase Server) para um s usurio, com o qual voc pode criar produtos cli-ente/servidor baseados na SQL sem estar conectado a uma rede

    O recurso Web Deployment, com o qual se pode distribuir facilmente o contedo de ActiveX viaWeb

    A ferramenta de desenvolvimento de aplicao InstallSHIELD Express

    A API OpenTools, com a qual possvel desenvolver componentes solidamente integrados aoambiente Delphi e criar uma interface para controle de verso PVCS

    WebBroker, FastNet Wizards e componentes para desenvolver aplicaes para a Internet

    Cdigo-fonte para a VCL, RTL e editores de propriedades

    A ferramenta WinSight32, com a qual voc pode procurar informaes de mensagem e janela

    O Delphi 5 Enterprise se destina a programadores altamente qualificados, que trabalham em ambi-ente cliente/servidor de grandes corporaes. Se voc est desenvolvendo aplicaes que se comunicamcom servidores de bancos de dados SQL, essa edio contm todas as ferramentas necessrias para quevoc possa percorrer todo o ciclo de desenvolvimento das aplicaes cliente/servidor. A verso Enterpri-se inclui tudo que est includo nas duas outras edies do Delphi, alm dos seguintes itens:

    Mais de 200 componentes VCL na Component Palette

    Suporte e licena de desenvolvimento para o MIDAS (Multitier Distributed Application Servi-ces), fornecendo um nvel de facilidade sem precedentes para o desenvolvimento de aplicaesem mltiplas camadas

    Suporte a CORBA, que inclui a verso 3.32 do VisiBroker ORB

    Componentes XML do InternetExpress

    TeamSource, um software de controle do fonte que permite o desenvolvimento em equipe e su-porta mecanismos de vrias verses (como, por exemplo, ZIP e PVCS)

    Suporte a Native Microsoft SQL Server 7

    Suporte avanado para Oracle8, incluindo campos de tipos de dados abstratos

    Suporte direto para ADO (ActiveX Data Objects)

    Componentes DecisionCube, que fornecem anlises de dados visuais e multidimensionais (incluio cdigo-fonte)

    Drivers BDE do SQL Links para servidores de bancos de dados InterBase, Oracle, MicrosoftSQL Server, Sybase, Informix e DB2, bem como uma licena para distribuio ilimitada dessesdrivers

    O SQL Database Explorer, que permite procurar e editar metadados especficos do servidor

    SQL Builder, uma ferramenta de criao de consultas grficas

    Monitor SQL, que permite exibir comunicaes SQL para/do servidor, de modo que voc possadepurar e fazer pequenos ajustes no desempenho de suas aplicaes SQL

    Data Pump Expert, uma ferramenta de descompactao que se caracteriza pela sua velocidade

    InterBase para Windows NT, com licena para cinco usurios 5

  • Delphi: o que e por qu?Freqentemente, fazemos a ns mesmos perguntas como estas: O que faz o Delphi ser to bom?Por que devo escolher o Delphi e no a ferramenta X? Com o passar dos anos, desenvolvemos duasrespostas para essas perguntas: uma longa e outra curta. A resposta curta produtividade. Usar o Delp-hi simplesmente o caminho mais produtivo que encontramos para se construir aplicaes para Win-dows. Todos ns sabemos que algumas pessoas (patres e clientes em potencial) no se satisfazem comuma resposta to objetiva, e pensando nelas que apresentamos a resposta mais longa. A resposta lon-ga envolve a descrio do conjunto de qualidades que tornam o Delphi to produtivo. Podemos resu-mir a produtividade das ferramentas de desenvolvimento de software em um pentgono de cinco im-portantes atributos:

    A qualidade do ambiente de desenvolvimento visual

    A velocidade do compilador contra a eficincia do cdigo compilado

    A potncia da linguagem de programao contra sua complexidade

    A flexibilidade e a capacidade de redimensionar a arquitetura do banco de dados

    O projeto e os padres de uso impostos pela estrutura

    Embora realmente existam muitos outros fatores envolvidos, como distribuio, documentao e su-porte de terceiros, procuramos esse modelo simples para sermos totalmente precisos aos explicarmos paraas pessoas nossas razes para trabalhar com o Delphi. Algumas dessas categorias tambm envolvem certadose de subjetividade, pois difcil aferir a produtividade de cada pessoa com uma ferramenta em particu-lar. Classificando uma ferramenta em uma escala de 1 a 5 para cada atributo e representando graficamenteem um eixo mostrado na Figura 1.1, o resultado final ser um pentgono. Quanto maior for a rea destepentgono, mais produtiva ser a ferramenta.

    No diremos a que resultado chegamos quando usamos essa frmula isso voc quem decide!Olhe atentamente cada um desses atributos, veja at que ponto eles se aplicam ao Delphi e compare os re-sultados com outras ferramentas de desenvolvimento do Windows.

    F IGURA 1 .1 O grfico de produtividade de ferramenta de desenvolvimento.

    A qualidade do ambiente de desenvolvimento visual

    Geralmente, o ambiente de desenvolvimento visual pode ser dividido em trs componentes: o editor, odepurador e o Form Designer. Como na maioria das modernas ferramentas RAD (Rapid Application De-velopment desenvolvimento rpido de aplicao), esses trs componentes funcionam em harmonia en-quanto voc projeta uma aplicao. Enquanto voc est trabalhando no Form Designer, o Delphi est ge-rando cdigo nos bastidores para os componentes que voc solta e manipula nos formulrios. Voc pode6

    IDE visual

    Compilador

    Linguagem

    Banc

    ode

    dado

    sEs

    trutu

    ra

  • adicionar cdigo no editor para definir o comportamento da aplicao e pode depurar sua aplicao apartir do mesmo editor definindo pontos de interrupo e inspees.

    Geralmente, o editor do Delphi est no mesmo nvel dessas outras ferramentas. As tecnologias daCodeInsight, que permitem poupar grande parte do tempo que voc normalmente gastaria com digita-o, provavelmente so as melhores. Como elas se baseiam em informaes do compilador, e no em in-formaes da biblioteca de tipos, como o caso do Visual Basic, podem ajudar em um maior nmero desituaes. Embora o editor do Delphi possua algumas boas opes de configurao, considero o editordo Visual Studio mais configurvel.

    Em sua verso 5, o depurador do Delphi finalmente alcanou o nvel do depurador do Visual Stu-dio, com recursos avanados como depurao remota, anexao de processo, depurao de DLL e paco-te, inspees locais automticas e uma janela CPU. A IDE do Delphi tambm possui alguns suportes inte-ressantes para depurao, permitindo que as janelas sejam colocadas e travadas onde voc quiser durantea depurao e possibilitando que esse estado seja salvo como um parmetro de desktop. Um bom recursode depurao (que lugar-comum em ambientes interpretados como Visual Basic e algumas ferramentasJava) a capacidade do cdigo para mudar o comportamento da aplicao durante a depurao do mes-mo. Infelizmente, esse tipo de recurso muito mais difcil de ser executado durante a compilao de c-digo nativo e, por esse motivo, no suportado pelo Delphi.

    Geralmente, um Form Designer um recurso exclusivo das ferramentas RAD, como Delphi, VisualBasic, C++Builder e PowerBuilder. Ambientes de desenvolvimento mais clssicos, como Visual C++ eBorland C++, normalmente fornecem editores de caixa de dilogo, mas esses tendem a no ser to inte-grados ao fluxo de trabalho do desenvolvimento quanto o um Form Designer. Baseado no grfico de pro-dutividade da Figura 1.1, voc pode ver que a falta de um Form Designer realmente tem um efeito negativona produtividade geral da ferramenta de desenvolvimento de aplicaes. Durante anos, o Delphi e o VisualBasic travaram uma guerra de recursos de Form Designer, onde a cada nova verso uma superava a outraem funcionalidade. Uma caracterstica do Form Designer do Delphi, que o torna realmente especial, ofato de que o Delphi construdo em cima de uma verdadeira estrutura orientada a objeto. Por essa razo,as alteraes que voc faz nas classes bsicas iro se propagar para qualquer classe ancestral. Um recur-so-chave que alavanca essa caracterstica a VFI (Visual Form Inheritance herana visual do formulrio).A VFI lhe permite descender ativamente de qualquer outro formulrio em seu projeto ou na Gallery. Almdisso, as alteraes feitas no formulrio bsico a partir do qual voc descende sero cascateadas e se refleti-ro em seus descendentes. Voc encontrar mais informaes sobre esse importante recurso no Captulo 4.

    A velocidade do compilador contra a eficincia do cdigo compiladoUm compilador rpido permite que voc desenvolva softwares de modo incremental e dessa forma possafazer freqentes mudanas no seu cdigo-fonte, recompilando, testando, alterando, recompilando, tes-tando novamente e assim por diante, o que lhe proporciona um ciclo de desenvolvimento muito eficien-te. Quando a velocidade da compilao mais lenta, os programadores so forados a fazer mudanas nocdigo-fonte em lote, o que os obriga a realizar diversas modificaes antes de compilar e conseqente-mente a se adaptar a um ciclo de desenvolvimento menos eficiente. A vantagem da eficincia do runtimefala por si s, pois a execuo mais rpida em runtime e binrios menores so sempre bons resultados.

    Talvez o recurso mais conhecido do compilador Pascal, sobre o qual o Delphi baseado, que ele rpido. Na verdade, provavelmente ele o mais rpido compilador nativo de cdigo de linguagem de altonvel para Windows. O C++, cujas deficincias no tocante velocidade de compilao o tornaram conhe-cido como a carroa do mercado, fez grandes progressos nos ltimos anos, com vinculao incremental evrias estratgias de cache encontradas no Visual C++ e C++Builder em particular. Ainda assim, at mes-mo os compiladores C++ costumam ser vrias vezes mais lentos do que o compilador do Delphi.

    Ser que tudo isso a respeito de velocidade de compilao faz da eficincia de runtime um diferenci-al desejvel do produto? claro que a resposta no. O Delphi compartilha o back-end de compiladorcom o compilador C++Builder e, portanto, a eficincia do cdigo gerado se encontra no mesmo nveldo compilador C++ de excelente qualidade. Nas ltimas pesquisas confiveis divulgadas, o Visual C++apareceu com a marca de lder no tocante eficincia de velocidade e ao tamanho, graas a algumas oti- 7

  • mizaes muito interessantes. Embora essas pequenas vantagens no sejam percebidas quando se fala dedesenvolvimento de aplicao em geral, elas podem fazer a diferena se voc estiver escrevendo um cdi-go que sobrecarregue o sistema.

    O Visual Basic tem suas especificidades com relao tecnologia de compilao. Durante o desen-volvimento, o VB opera em um modo interpretado e inteiramente responsivo. Quando voc quiser dis-tribuir, poder recorrer ao compilador VB para gerar o arquivo EXE. Esse compilador completamenteinsignificante e bem atrs das ferramentas Delphi e C++ no item eficincia de velocidade.

    O Java outro caso interessante. As ferramentas baseadas na linguagem Java, como a JBuilder e aVisual J++, dizem ter o tempo de compilao prximo ao do Delphi. Entretanto, a eficincia da veloci-dade de runtime normalmente fica a desejar porque o Java uma linguagem interpretada. Embora o Javaesteja sempre se aperfeioando, a velocidade de runtime est, na maioria dos casos, bem atrs da doDelphi e do C++.

    A potncia da linguagem da programao contra sua complexidadePotncia e complexidade so itens analisados com muito cuidado e suscitam muita polmica on-line. Oque fcil para uma pessoa pode ser difcil para outra, e o que limitador para um pode ser consideradoexcelente para outro. Portanto, as opinies apresentadas a seguir se baseiam na experincia e nas prefe-rncias pessoais dos autores.

    Assembly o que existe de mais avanado em linguagem poderosa. H muito pouco que voc nopossa fazer com ela. Entretanto, escrever a mais simples das aplicaes para Windows usando a lingua-gem Assembly um parto, uma experincia na qual o erro bastante comum. Alm disso, algumas vezes quase impossvel manter um cdigo Assembly bsico em um ambiente de equipe, por qualquer que sejao espao de tempo. Como o cdigo passa de um proprietrio para outro dentro de uma cadeia, idias eobjetivos do projeto se tornam cada vez mais indefinidos, at que o cdigo comea a se parecer mais como snscrito do que com uma linguagem de computador. Portanto, poderamos colocar a Assembly entreos ltimos lugares de sua categoria, pois, embora poderosa, essa linguagem muito complexa para quasetodas as tarefas de desenvolvimento de aplicaes.

    C++ outra linguagem extremamente poderosa. Com o auxlio de recursos realmente poderosos,como macros pr-processadas, modelos e overloading do operador, voc praticamente pode projetar suaprpria linguagem dentro da C++. Se a vasta gama de recursos sua disposio for usada criteriosamen-te, voc pode desenvolver um cdigo claro e de fcil manuteno. O problema, entretanto, que muitosprogramadores no conseguem resistir tentao de usar e abusar desses recursos, o que facilmente re-sulta na criao de cdigos temveis. Na verdade, mais fcil escrever um cdigo C++ ruim do que umbom, pois a linguagem no induz a um bom projeto isso cabe ao programador.

    Duas linguagens que acreditamos ser muito semelhantes pelo fato de conseguirem manter um bomequilbrio entre complexidade e potncia so Object Pascal e Java. Ambas tentam limitar os recursos dis-ponveis com o objetivo de induzir o programador a um projeto lgico. Por exemplo, ambas evitam a no-o de herana mltipla, na qual o fato de ser orientada a objetos estimula o exagero no uso desses lti-mos, em favor da ativao de uma classe com o objetivo de implementar vrias interfaces. Em ambas, fal-ta o atraente, porm perigoso, recurso de overloading do operador. Alm disso, ambas tornam os arqui-vos-fonte em cidados de primeira classe na linguagem, no apenas um detalhe a ser tratado pelo linkedi-tor. Ambas as linguagens tambm tiram proveito de recursos poderosos, como a manipulao de exce-o, RTTI (Runtime Type Information informaes de tipo em runtime) e strings nativas gerenciadaspela memria. No por coincidncia, nenhuma das duas linguagens foi escrita por uma equipe, mas aca-lentada por um indivduo ou um pequeno grupo dentro de uma s organizao, com um entendimentocomum do que deveria ser a linguagem.

    O Visual Basic chegou ao mercado como uma linguagem fcil o bastante para que programadoresiniciantes pudessem domin-la rapidamente (por isso o nome). Entretanto, medida que recursos de lin-guagem foram adicionados para resolver suas deficincias no decorrer do tempo, o Visual Basic tor-nou-se cada vez mais complexo. Em um esforo para manter os detalhes escondidos dos programadores,o Visual Basic ainda possui algumas muralhas que tm de ser contornadas durante a construo de proje-tos complexos.8

  • A flexibilidade e a escalabilidade da arquitetura de banco de dadosPor causa da falta da Borland de uma agenda de banco de dados, o Delphi mantm o que pensamos seruma das mais flexveis arquiteturas de banco de dados de qualquer ferramenta. Na prtica, o BDE fun-ciona maravilhosamente bem e executa bem a maioria das aplicaes em uma ampla gama de platafor-mas de banco de dados local, cliente/servidor e ODBC. Se isso no o deixar satisfeito, voc pode trocaro BDE pelos novos componentes ADO nativos. Se o ADO no for para voc, ainda possvel escreversua prpria classe de acesso a dados aproveitando a arquitetura abstrata do dataset ou comprando umasoluo de dataset de terceiros. Alm disso, o MIDAS facilita esse processo ao dividir o acesso a outrasfontes desses dados em vrias camadas, sejam elas lgicas ou fsicas.

    Obviamente, as ferramentas da Microsoft costumam dar prioridade s solues de acesso a dados ede bancos de dados da prpria Microsoft, como ODBC, OLE DB ou outros.

    O projeto e os padres de uso impostos pela estruturaEssa a bala mgica, o clice sagrado do projeto de software, que as outras ferramentas parecem ter es-quecido. Igualando todas as outras partes, a VCL a parte mais importante do Delphi. A habilidade paramanipular componentes em tempo de projeto, projetar componentes e herdar o comportamento de ou-tros componentes usando tcnicas orientadas a objeto (OO) de fundamental importncia para o nvelde produtividade do Delphi. Ao escrever componentes de VCL, voc no tem alternativa seno empre-gar as slidas metodologias de projeto OO em muitos casos. Por outro lado, outras estruturas baseadasem componentes so freqentemente muito rgidas ou muito complicadas. Os controles ActiveX, porexemplo, fornecem muitos dos mesmos benefcios de tempo de projeto dos controles VCL, mas no possvel herdar o controle ActiveX para criar uma nova classe com alguns comportamentos diferentes.Estruturas de classe tradicionais, como OWL e MFC, costumam exigir que voc, para ser produtivo, te-nha muito conhecimento da estrutura interna, tornando-se um verdadeiro estorvo devido ausncia dosuporte em tempo de projeto nos moldes de uma ferramenta RAD. Uma ferramenta no cenrio que com-bina recursos com VCL dessa maneira a WFC (Windows Foundation Classes) do Visual J++. Enquan-to este livro estava sendo escrito, no entanto, uma pendncia jurdica entre a Sun Microsystems e a Javatornou indefinido o futuro da Visual J++.

    Uma pequena histriaNo fundo, o Delphi um compilador Pascal. O Delphi 5 o passo seguinte na evoluo do mesmocompilador Pascal que a Borland vem desenvolvendo desde que Anders Hejlsberg escreveu o primei-ro compilador Turbo Pascal, h mais de 15 anos. Ao longo dos anos, os programadores em Pascal tmapreciado a estabilidade, a graa e, claro, a velocidade de compilao que o Turbo Pascal oferece. ODelphi 5 no exceo seu compilador a sntese de mais de uma dcada de experincia de compilaoe um estgio superior do compilador otimizado para 32 bits. Embora as capacidades do compilador te-nham crescido consideravelmente nos ltimos anos, houve poucas mudanas significativas no tocante sua velocidade. Alm disso, a estabilidade do compilador Delphi continua a ser um padro com base noqual os outros so medidos.

    Agora vamos fazer uma pequena excurso na memria, ao longo da qual faremos uma rpida anli-se de cada uma das verses do Delphi, e inseri-las no contexto histrico da poca em que foram lanadas.

    Delphi 1Nos primrdios do DOS, programadores se viam diante do seguinte dilema: por um lado, tinham o pro-dutivo porm lento BASIC e, do outro, a eficiente porm complexa linguagem Assembly. O Turbo Pas-cal, que oferecia a simplicidade de uma linguagem estruturada e o desempenho de um compilador real,supria essa deficincia. Programadores em Windows 3.1 se viram diante de uma encruzilhada semelhan-te por um lado, tinham uma linguagem poderosa porm pesada como o C++ e, de outro, uma lingua- 9

  • gem fcil de usar porm limitada como o Visual Basic. O Delphi 1 resolveu esse dilema oferecendo umaabordagem radicalmente diferente para o desenvolvimento do Windows: desenvolvimento visual, exe-cutveis compilados, DLLs, bancos de dados, enfim um ambiente visual sem limites. O Delphi 1 foi a pri-meira ferramenta de desenvolvimento do Windows que combinou um ambiente de desenvolvimento vi-sual, um compilador de cdigo nativo otimizado e um mecanismo de acesso a um banco de dados redi-mensionvel. Remonta a essa poca o surgimento do conceito RAD, ou seja, de desenvolvimento rpidode aplicao.

    A combinao de compilador, ferramenta RAD e acesso rpido ao banco de dados mostrou-se mui-to atraente para as fileiras de programadores em VB, e o Delphi conquistou assim muitos adeptos. Mui-tos programadores em Turbo Pascal tambm reinventaram suas carreiras migrando para esta nova e astu-ta ferramenta. Comeou a correr a idia de que a Object Pascal no era a mesma linguagem que nos fize-ram usar na faculdade, dando-nos a sensao de que estvamos programando com uma mo presa s cos-tas. Moral da histria: uma nova leva de programadores debandou para o Delphi para tirar proveito dosrobustos padres de projeto encorajados pela linguagem e pela ferramenta. A equipe do Visual Basic daMicrosoft, que at o surgimento do Delphi no tinha um concorrente srio, foi pega totalmente de sur-presa. Lento, pesado e burro, o Visual Basic 3 no era um adversrio altura do Delphi 1.

    Estvamos no ano de 1995. A Borland levou um duro golpe na Justia, que a obrigou a pagar umapesada indenizao Lotus, que entrou com um processo devido semelhana entre as interface do1-2-3 e a do Quattro. A Borland tambm sofreu alguns reveses da Microsoft, ao tentar disputar um es-pao no mercado de softwares com a Microsoft. A Borland saiu do mercado de aplicativos vendendo oQuattro para a Novell e direcionando o dBASE e o Paradox para programadores de bancos de dados,deixando de lado os usurios casuais. Enquanto a Borland disputava o mercado de aplicativos, a Mi-crosoft alavancara silenciosamente o setor de plataforma e, assim, surrupiou da Borland uma vasta fa-tia do mercado de ferramentas para programadores do Windows. Voltando a se concentrar no que ti-nha de melhor, as ferramentas para programador, a Borland voltou a causar um novo estrago no mer-cado com o Delphi e uma nova verso do Borland C++.

    Delphi 2Um ano depois, o Delphi 2 fornecia os mesmos benefcios para os sistemas operacionais de 32 bits da Mi-crosoft, o Windows 95 e o Windows NT. Alm disso, o Delphi 2 estendeu a produtividade com recursose funcionalidade adicionais no encontrados na verso 1, como um compilador de 32 bits capaz de pro-duzir aplicaes mais rpidas, uma biblioteca de objetos melhorada e estendida, suporte a banco de da-dos reforado, tratamento de strings aperfeioado, suporte a OLE, Visual Form Inheritance e compatibi-lidade com projetos Delphi de 16 bits. O Delphi 2 tornou-se o padro com base no qual todas as outrasferramentas RAD passaram a ser medidas.

    Estvamos agora em 1996 e a mais importante verso de plataforma do Windows desde a 3.0 oWindows 95 de 32 bits chegara ao mercado no segundo semestre do ano anterior. A Borland estava an-siosa para tornar o Delphi 2 a grande ferramenta de desenvolvimento dessa plataforma. Uma nota hist-rica interessante que o Delphi 2 originalmente ia se chamar Delphi 32, dando nfase ao fato de que foraprojetado para o Windows de 32 bits. Entretanto, o nome do produto foi mudado para Delphi 2 antes dolanamento, a fim de ilustrar que o Delphi era um produto maduro e evitar o trauma da primeira verso,que conhecida no setor de software como blues do 1.0.

    A Microsoft tentou contra-atacar com o Visual Basic 4, mas esse produto caiu no campo de batalha,vitimado por um desempenho fraco, ausncia de portabilidade de 16 para 32 bits e falhas fundamentaisno projeto. Entretanto, um impressionante nmero de programadores continuou a usar o Visual Basicpor qualquer que fosse a razo. A Borland tambm desejava ver o Delphi penetrar no sofisticado merca-do cliente/servidor, dominado por ferramentas como o PowerBuilder, mas essa verso ainda no tinha amusculatura necessria para desbancar esses produtos das grandes empresas.

    A estratgia da empresa nessa poca era, sem sombra de dvidas, atacar os clientes corporativos.Com toda a certeza, a deciso para trilhar esse novo caminho teve como principal estmulo a perda demercado do dBASE e do Paradox, bem como a queda nas receitas do mercado de C++. Pensando em ga-10

  • nhar solidez para atacar o mercado corporativo, a Borland cometeu o erro de assumir o controle daOpen Environment Corporation, empresa essa que basicamente contava com dois produtos: um obsole-to middleware baseado no DCE, que voc poderia chamar de ancestral do CORBA, e uma tecnologiaproprietria para OLE distribudo, prestes a ser sucateada devido ao surgimento da DCOM.

    Delphi 3Durante o desenvolvimento do Delphi 1, a equipe de desenvolvimento do Delphi s estava preocupadacom a criao e o lanamento de uma ferramenta de desenvolvimento revolucionria. Para o Delphi 2, aequipe de desenvolvimento tinha como principal objetivo migrar para o ambiente de 32 bits (mantendouma compatibilidade quase total) e adicionar novos recursos de banco de dados e cliente/servidor, usa-dos pela tecnologia de informaes das grandes corporaes. Durante a criao do Delphi, a equipe dedesenvolvimento teve a oportunidade de expandir o conjunto de ferramentas para fornecer um extraor-dinrio nvel de amplitude e profundidade para solues de alguns dos problemas enfrentados pelos pro-gramadores do Windows. Em particular, o Delphi 3 facilitou o uso de tecnologias notoriamente compli-cadas do COM e ActiveX, o desenvolvimento de aplicaes para Word Wide Web, aplicaes clientemagro e vrias arquiteturas de banco de dados de mltiplas camadas. O Code Insight do Delphi 3 aju-dou a tornar mais fcil o processo de escrita em cdigo propriamente dito, embora em grande parte ametodologia bsica para escrever aplicaes do Delphi fosse igual do Delphi 1.

    Estvamos em 1997 e a competio estava fazendo algumas coisas interessantes. No nvel de entra-da, a Microsoft finalmente comeou a obter algum xito com o Visual Basic 5, que inclua um compila-dor capaz de resolver problemas que de h muito vinham comprometendo o desempenho, bom suportepara COM/ActiveX e alguns recursos fundamentais para a nova plataforma. No topo de linha, o Delphiagora estava conseguindo desbancar produtos como PowerBuilder e Forte das grandes corporaes.

    O Delphi perdeu um membro-chave da equipe durante o ciclo de desenvolvimento do Delphi 3quando Anders Hejlsberg, o arquiteto-chefe, resolveu ir trabalhar na Microsoft Corporation. Entre-tanto, o grupo no sentiu muito essa perda, pois Chuck Jazdzewski, que h muito tempo era co-arquiteto, assumiu o comando a contento. Nessa mesma poca, a empresa tambm perdeu PaulGross, tambm para a Microsoft, embora essa perda tenha causado muito mais impacto no campodas relaes pblicas do que no dia-a-dia do setor de desenvolvimento de software.

    Delphi 4A prioridade do Delphi 4 foi facilitar o desenvolvimento no Delphi. O Module Explorer foi introduzidono Delphi, permitindo ao usurio procurar e editar unidades a partir de uma prtica interface grfica.Novos recursos de navegao de cdigo e preenchimento de classe permitiram que se voltasse para a es-sncia das suas aplicaes com um mnimo de trabalho. A IDE foi reprojetada com barras de ferramentase janelas encaixveis, de modo a tornar seu desenvolvimento mais confortvel, e o depurador sofreugrandes melhorias. O Delphi 4 estendeu o alcance do produto s grandes empresas com um notvel su-porte a camadas mltiplas usando tecnologias como MIDAS, DCOM, MTS e CORBA.

    Em 1998, a posio do Delphi estava mais do que consolidada em relao concorrncia. As linhasde frente tinham se estabilizado, embora pouco a pouco o Delphi continuasse ganhando mercado. OCORBA provocou um verdadeiro alvoroo no mercado e apenas o Delphi detinha essa tecnologia. Haviatambm uma pequena desvantagem para o Delphi 4: depois de vrios anos gozando o status de ser a fer-ramenta de desenvolvimento mais estvel do mercado, o Delphi 4 ganhou fama, entre os usurios de lon-ga data do Delphi, de no manter o altssimo padro de engenharia e estabilidade de que a empresa que oproduzia desfrutava.

    O lanamento do Delphi 4 seguiu a aquisio da Visigenic, um dos lderes da indstria CORBA. ABorland, agora chamada de Inprise, depois de tomar a questionvel deciso de mudar o nome da compa-nhia para facilitar a sua entrada no mercado corporativo, estava em condies de levar a indstria paraum novo patamar, integrando suas ferramentas com a tecnologia CORBA. Para vencer de verdade, oCORBA precisava se tornar to fcil quanto o desenvolvimento da Internet ou COM tinha se tornado 11

  • nas verses anteriores das ferramentas da Borland. Entretanto, por vrias razes, a integrao no foi tocompleta quanto deveria ter sido e a integrao da ferramenta de desenvolvimento CORBA estava fada-da a desempenhar um papel secundrio no quadro geral de desenvolvimento de software.

    Delphi 5O Delphi 5 adianta algumas peas no tabuleiro: primeiro, o Delphi 5 continua o que o Delphi 4 ini-ciou, adicionando muito mais recursos para facilitar a execuo de tarefas que tradicionalmente somuito demoradas, felizmente permitindo que voc se concentre mais no que deseja escrever e menosem como escrev-lo. Esses novos recursos de produtividade incluem novas melhorias na IDE e no de-purador, o software de desenvolvimento em equipe TeamSource e ferramentas de traduo. Segundo,o Delphi 5 contm uma srie de novos recursos que de fato facilitam o desenvolvimento para a Inter-net. Esses novos recursos de Internet incluem o Active Server Object Wizard para criao de ASP, oscomponentes do InternetExpress para suporte a XML e os novos recursos de MIDAS, o que fez deleuma plataforma de dados extremamente verstil para a Internet. Finalmente, a Borland incluiu tempona agenda para chegar ao mais importante recurso do Delphi 5: estabilidade. Como um bom vinho,voc no pode ter pressa para ter um bom software, e a Borland esperou at o Delphi 5 ficar prontopara lan-lo no mercado.

    O Delphi 5 foi lanado no segundo semestre de 1999. O Delphi continua a conquistar espao nomercado de grandes corporaes e a competir em igualdade de condies com o Visual Basic em nvelde entrada. Entretanto, a batalha continua acirrada. A Inprise teve o bom-senso de retomar o nomeBorland, medida essa que foi bastante apreciada pelos clientes mais antigos. Os executivos enfrenta-ram alguma turbulncia depois que a empresa foi dividida entre ferramentas e middleware, da abruptasada do diretor-executivo Del Yocam e da contratao de Dale Fuller, um especialista em Internet,para comand-la. Fuller redirecionou a empresa para os programadores de software, e seus produtosparecem to bons quanto nos velhos tempos. Acreditamos que a Inprise finalmente tenha reencontra-do o caminho certo.

    O futuro?Embora o histrico do produto seja importante, talvez ainda mais importante seja o que o futuro reservapara o Delphi. Usando a histria como um guia, podemos prever, com razovel margem de acerto, que oDelphi continuar a ser uma grande alternativa para se desenvolver aplicaes para Windows por umlongo tempo. Para mim, a grande questo se ns algum dia veremos verses do Delphi destinadas a umaplataforma que no a Win 32. Baseado em informaes provenientes da Borland, parece que essa preo-cupao j faz parte do cotidiano da empresa. Na Borland Conference em 1998, o arquiteto-chefe doDelphi, Chuck Jazdzewski, apresentou uma verso do compilador Delphi que gerava cdigo de bytes emJava, que teoricamente poderia se destinar a qualquer computador equipado com uma Java Virtual Ma-chine. Embora existam obstculos tcnicos bvios a esse tipo de tecnologia, e ainda esteja longe o dia emque a tecnologia Delphi para Java venha a se tornar um produto, ela confirma a hiptese de fazer parteda estratgia da Borland migrar o Delphi para outras plataformas. Mais recentemente, na Borland Con-ference de 1999, o diretor-executivo Dale Fuller deixou escapar, no discurso de abertura dos trabalhos,que existem planos para produzir uma verso do Delphi destinada plataforma Linux.

    A IDE do DelphiPara garantir que todos ns estejamos na mesma pgina no tocante terminologia, a Figura 1.2 mostra aIDE do Delphi e chama ateno para seus principais itens: a janela principal, a Component Palette, asbarras de ferramentas, o Form Designer, o Code Editor, o Object Inspector e o Code Explorer.

    12

  • F IGURA 1 .2 A IDE do Delphi 5.

    A janela principalImagine a janela principal como o centro de controle da IDE do Delphi. A janela principal tem toda afuncionalidade padro da janela principal de qualquer outro programa para Windows. Ela consiste emtrs partes: o menu principal, as barras de ferramentas e a Component Palette.

    O menu principal

    Como em qualquer programa Windows, voc vai para o menu principal quando precisa abrir e salvar ar-quivos, chamar assistentes, exibir outras janelas e modificar opes, entre outras coisas. Cada item nomenu principal pode tambm ser chamado atravs de um boto na barra de ferramentas.

    As barras de ferramentas do Delphi

    As barras de ferramentas do acesso, com apenas um clique no mouse, a algumas operaes encontradasno menu principal da IDE, como abrir um arquivo ou construir um projeto. Observe que cada um dosbotes na barra de ferramentas oferece uma dica de ferramenta, que contm uma descrio da funo deum boto em particular. Alm da Component Palette, h cinco barras de ferramentas separadas na IDE:Debug, Desktops, Standard, View e Custom. A Figura 1.2 mostra a configurao de boto padro dessasbarras de ferramentas, mas voc pode adicionar ou remover botes selecionando Customize (per-sonalizar) no menu local de uma barra de ferramentas. A Figura 1.3 mostra a caixa de dilogo da barra deferramentas Customize. Voc adiciona botes arrastando-os a partir dessa caixa de dilogo e soltando-osem qualquer barra de ferramentas. Para remover um boto, arraste-o para fora da barra de ferramentas.

    A personalizao da barra de ferramentas da IDE no pra na configurao dos botes exibidos.Voc tambm pode reposicionar cada uma das barras de ferramentas, a Component Palette ou o menudentro da janela principal. Para isso, d um clique nas barras cinza em alto-relevo no lado direito da barrade ferramentas e arraste-as pela janela principal. Se voc arrastar o mouse para fora dos limites da janelaprincipal enquanto est fazendo isso, ver um outro nvel de personalizao: as barras de ferramentaspodem ser separadas da janela principal e residir em janelas de ferramentas flutuantes. O modo flutuantedas barras de ferramentas mostrado na Figura 1.4.

    13

    Janela principal Component Palette

    ObjectInspector

    Form Designer Code Explorer Code Editor

    Barras de ferramentas

  • F IGURA 1 .3 A caixa de dilogo Customize toolbar (personalizar barra de ferramentas).

    F IGURA 1 .4 Barras de ferramentas flutuantes, ou no-encaixadas.

    A Component Palette

    A Component Palette uma barra de ferramentas com altura dupla que contm um controle de pginacom todos os componentes da VCL e controles ActiveX instalados na IDE. A ordem e a aparncia daspginas e componentes na Component Palette podem ser configuradas com um clique do boto direitodo mouse ou selecionando Component, Configure Palette (configurar palheta) no menu principal.

    O Form DesignerO Form Designer inicia com uma janela vazia, pronta para ser transformada em uma aplicao do Win-dows. Considere o Form Designer como a tela na qual voc pode criar aplicaes do Windows; aquique voc determina como suas aplicaes sero representadas visualmente para seus usurios. Voc in-terage com o Form Designer selecionando componentes a partir da Component Palette e soltando-osno formulrio. Depois de ter includo um componente qualquer no formulrio, voc pode usar o mou-se para ajustar a posio ou o tamanho desse componente. Voc pode controlar a aparncia e o com-portamento desses componentes usando o Object Inspector e o Code Editor.

    O Object InspectorCom o Object Inspector, voc pode modificar as propriedades do formulrio ou do componente, ou per-mitir que seu formulrio ou componente responda a diferentes eventos. Propriedades so dados como altu-ra, cor e fonte, os quais determinam como um objeto aparece na tela. Eventos so trechos de cdigo execu-tados em resposta a determinadas ocorrncias dentro da sua apl