Home
delphi - The Club
Contents
1. iniii Abrir 2 CuDom FErz Baigia Ho A Eius a Wenda dos erg Esah F tomam liia a a a i a ea Faral Bemate gt A Diipa pmn mA Te M Pe Te p ai Em teh dor O a m a inib a Tatas com Caro Beman EF VAR Tn a a a a Cc Dados do Cai m eaka Paja DELPHI T A o E Foma de F T a z em op Door Rec aa rir mr era Re Beato FO EAP E aegemrar Lir fia il i ma w ys l T nmirar o Focharento do pm bami M t ia Ei Bs TO ups Estar a Fii de Paji Cro e l ER TIA E PS PET i PT DE Sig Setec TemenaFeos igege m imprima a Comprovante IEF Rima FIFE inquieto aa a ae is ae Conirmer a Tranga o o A Fria Baana E E jEcrate gt AEF don maana a qe a pe E H ii e himu Ts m Di a Mo Cones Vendo E Bomgnc F TEF Paomia vencia E TTE imi Fai Sendo assim para cada uma destas opera es voc ter apenas um comportamento diferenciado de seu software possibilitando total controle das opera es TEF Observe nos fluxos que cada fun o da DLL BemaFi32 dll elimina o trabalho que a software house e seu software ter de controlar quantas linhas foram impressas etc Controlar se o ECF esta ligado e seus sinais de porta serial etc tudo isso est encapsulado em nossa dll de comunica o a BemnaFi32 dll Sendo assim agora que voc est preparado para a homologa o M o na Massa com a BemaFi32 dll
2. 1 EN PROTECTED with PENProtected NMHdr chrg do 1f not ProtectChange cpMin cpMax then Result 1 EN LINK message being received to respond to it EN LINK begin Windows SetCursor Screen Cursors crHandPoint if PEnLink NMHdr msg WM LBUTTONDOWN then begin set the selection MeGAZINE 27 6 DELPHI SendMessage Handle EM EXSETSEL 0 Longint APEnLink NMHdr chrg send it to windows to open ShellExecute handle open PChar GetSelText nil nil SW SHOWNORMAL end end end end Quando notificado a mensagem EM LINK inclui a estrutura NMHdr que aponta para a estrutura ENLINK como mostrado aqui ENLINK record nmhdr TNMHdr msg UINT wParam WPARAM lParam LPARAM chrg TCharRange end Voc pode distribuir a estrutura NMHdr com um ponteiro para a estrutura ENLINK para receber campo msg que cont m a mensagem WM LBUTTONCLICK Al m disso a vari vel chrg hospeda a localiza o e o tamanho da URL dentro do texto charrange record cpMin Longint cpMax LongInt end Lan ando a URL Para configurar a sele o n s vamos usar a vari vel chrg para enviar a mensagem EM EXSETSEL para retornar o texto da URL SendMessage Handle EM EXSETSEL 0 Longint APEnLink NMHdr chrg Para rodar a aplica o que est apropriada a URL n s vamos usar a fun o ShellExecute ShellExecute handle nil SW_SHOWNORMAL Configurando a propriedad
3. F pim ra armin n a l I Voc deve adicionar uma refer ncia System WindowsForms dll pois onde os componentes que usaremos como base est o localizados Selecione Project Add Reference ell bea O add Reir are o Yw H ia a ra l o TS RS ua l E tm Ma act Dm Pu rt ATA A tea TT O PRO ei e mat oea al Cis Jie at Cis Jie t ah Pia m Elo Pa dne a log Zeien cade Da in E eE eka tale a Fonte Tapas aad zab wL do o Ebro wrt Pezu E w Ebro g miie paiet Tt ba q H Pri Be LEN Em 1 mi g i Ctba roda TASSO i t T a da Pi EA E Chana haiH am i I L anin do CMS Har o Depois de compilar o projeto voc pode testar o programa criando o componente em tempo de execu o Adicione um projeto do tipo Windows Application e adicione uma refer ncia DLL rec m criada O c digo para instanciar o bot o em tempo de execu o o seguinte Observe que o bot o permanece desabilitado enquanto o m todo associado ao evento Click estiver sendo executado Interceptando m todos virtuais Na maioria dos casos incluindo o exemplo acima desejamos interceptar algum evento no novo componente Quando criamos uma classe derivada no entanto devemos interceptar um m todo virtual associado ao evento Todos os eventos da NET Framework t m m todos virtuais MeGAZINE associados Isto n o obrigat rio do ponto de vista do compilador
4. pacote pronto para uso No entanto esta n o a nfase deste artigo Derivando de um componente existente Outra op o mudar ligeiramente o comportamento de um componente j existente qualquer componente Esta t cnica particularmente til quando voc repetidamente altera um conjunto de propriedades de um componente ou intercepta sempre alguns eventos da mesma maneira Neste caso voc quer que o componente continue funcionando basicamente da mesma forma mas com um algo mais Veremos como criar um bot o que se desabilita enquanto o evento Clickestiver sendo processado e tamb m um TextBox que valida se o seu conte do uma data Inicialmente crie um projeto do tipo Class Library SANT ANNA Hew Proar Fiil que lmg vj midia Aip i Ty ras Felst pit A RR AIH n n w o Irar i n r EJ sus a Feke AE Ago ac l O l a npl E a gF j e iwar Adiado AFE l A ALI ApEn A F ngnal mensan j late mesma a a Doda r bH 13 Hs cenene Loz or tri T PAPES a E w dio cd um iT LES a E Pok mo sta A a EE rpo ie Fr F 10d Frp Entre o c digo do componente substituindo o que foi criado pelo assistente por exemplo O c digo acima substitui completamente aquele criado pelo assistente FE sb FT pre trm l oo d T je r rid r e E re 2 m h L mh ga L Lri uu E RP TE RE TO E da Pean E LEIS STETA LLL ESTE 7 E aSa arseron F pRo aga Frera mm
5. Escolhi para este m s um assunto que tenho absoluta certeza ir delici los Vamos ensinar como acessar um banco 9i atrav s da Internet utilizando o conceito de conex es via listener Divirtam se Uma quest o muito presente nos dias de hoje e muito importante para a efici ncia de qualquer organiza o ter a base de dados dispon vel na Internet para que de qualquer localidade informa es estrat gicas possam ser acessadas Muito bem A tecnologia Oracle oferece essa condi o de forma contundente Vamos exemplificar um modelo b sico em que ter amos dois servidores um servidor de web conectado de forma permanente Internet e com um endere o IP p blico numa placa de rede adicional ou diretamente num hub ou switch e um servidor de dados o o aii o O TATCANLT ui k link Imi ianh rm ta Fins SDEvTINE E B Hpoody Busiross r OPRECLE 7 a Es ad m 7 lt Werra AR O PE io nda CUL prosa a ahpa Po Ss apaia o E T T Este modelo permite que tenhamos resolvidas v rias quest es Primeiro a quest o seguran a j que o servidor de dados n o estar diretamente dispon vel na Internet Segundo a quest o desempenho j que todos os servi os web que eventualmente criarmos no web server e geralmente queremos muitos desses servi os n o estar o utilizando recursos necess rios ao bom desempenho do banco de dados Terceiro a quest o o
6. MeGAZINE Q 21 Trabalhando com string no Delphi 6 A cada nova vers o o Delphi traz mais novidades nova unit StrUtils traz novas rotinas para o trabalho com strings comple mentando quelas j existentes na unit SysUtils do Delphi 5 A unit SysUtils tem v rias rotinas para manipula o de strings Voc provavelmente est familiarizado com as fun es UpperCase LowerCase CompareStr CompareText IntToStr IntToHex StrTolInt entre outras Mas voc talvez n o tenha notado as rotinas QuotedStr e AnsiQuotedStr que adicionam aspas no inicio e no final de uma string e em contrapartida a rotina AnsiExtractQuotedStr que retira as aspas nova fun o AnsiDequotedStr torna mais f cil usar o ltimo com strings ordin rias Existe tamb m a rotina AdjustLineBreaks que modifica um simples line feeds ou carriage returns em uma combina o de dois caracteres usados no Windows No Delphi 6 voc tamb m pode ir por outro caminho convertendo a combina o ou um simples carriage returns para simples line feeds A rotina StrToIntDef como um StrTolnt A diferen a que se for informado um valor inv lido para a vari vel S a fun o retorna o n mero passado na vari vel Default Para formatar um texto em uma rea limitada voc pode usar a rotina de WrapText Esta rotina faz a pesquisa da linha fornecida do texto e se for mais longo do que o tamanho m ximo especificado ela substitui a ltima ocorr ncia
7. Published declarations end Listagem 3 A estrutura de Interface e implementa o das classes N o necess rio implementar o c digo acima necess rio um coment rio para um entendimento maior por parte do leitor A Classe Base para as classes apresentadas acima a Classe TShapeBase que implementa a Interface IShape Se olharmos com mais calma e aten o estrutura acima veremos que nem todas as classes TPolygon TRectangle e TSquare implementam os m todos dispon veis nas 03 Tr s interfaces criadas Um exemplo claro a classe TRectangle que herda de TShapeBase e implementa IPolygon e IRectangle por que s o os m todos das duas interfaces citadas que fazem sentido para a classe TRectangle Da mesma forma acontece com a classe TPolygon A nica classe que implementa todas as Interfaces a classe TSquare Delega o Uma classe pode delegar a implementa o de uma interface para uma propriedade desde que esta use a diretiva implements e o valor da propriedade precisa ser do tipo da interface e ou da classe do qual voc deseja implementar O m todo n o pode ser din mico apenas virtual e n o pode ser uma propriedade do tipo Array sintaxe de implements a seguinte 18 MeGAZINE propriedade read Getter implements interfaces Exemplo Podemos exemplificar implements da seguinte forma Listagem 4 Demonstra o uso da diretiva implements O c digo acima demonstra o uso da diretiva implemen
8. mas uma conven o que a Framework segue e seus componentes devem seguir Para descobrir o m todo virtual dado um evento fa a o seguinte 1 Acrescente On ao nome do evento 2 Para saber os argumentos retire o ByVal Sender as Object e mantenha a estrutura seguinte Note no exemplo acima que estamos interceptando o m todo OnClick associado ao evento Click Veja outro exemplo de TextBox que aceita apenas datas Se quiser voc pode colocar v rios componentes em um mesmo fonte SO ar A qupoicrrimo alian Mem 07 AT Dom dor CEO LED Hie i e dL rit TA MO Ya IE F g 5 ka Idda F iane lt E raubaran ELrr P m eir ara L Aa n qam ART IPG Tean a T IETS voa l l rilec Ita ar A E O T ki Ge Len Tae PARE nu T TESER O RAL Lg Ir PET m a pi Minho lam PERO F I MEM Too TIM memo pm npp jA isid a om De mm Champagne mo q arn m De TS a la r lA armam I l nyi TE OE Rm re RL IM J temos ent o um componente Voc pode instal lo no Visual Studio NET clicando com o bot o direito sobre o ToolBox e SANT ANNA selecionando Customize Toolbox Eisami nn hino HCormeers eL CEAN mt IR atalhos Sado Tops RC rnw r w O arrr baa enrsh Repr Saban ml om Baan Edo a go ms Sakam ah akan e ra CAE SAL rni ad od ia LFM arken eiee o e Tas e Cora Ca Sal mim Er EEN MN E Po IDE a EO P R T E Tin eL E ksma LA EAO Y AA an Ae iaa
9. Apache Group Apache xx xx conf onde xx xx a vers o do software Depois de localizado o arquivo httpd conf vamos edit lo com o Notepad do Windows Apenas duas configura es s o necess rias para que o Apache execute nossas aplica es WAP let s go friends Primeiramente localize dentro do arquivo a se o DocumentRoot a qual define o diret rio base do nosso servidor HTTP Especifique um diret rio no seu computador e fa a a devida configura o nesta se o como segue Neste caso estou definindo como diret rio base do meu servidor C DelphiWap Embora funcione de outra maneira interessante manter a barra deste jeito e n o do modo tradicional Para que o Apache permita a execu o de nossas aplica es servidoras necess rio dizer ele em qual diret rio podemos executar scripts Veja que isso para uma maior seguran a do servidor pois nem todos os diret rios ter o permiss o para execu o de scripts ou aplica es servidoras Localize a se o ScriptAlias e insira a configura o Repare que estamos definindo o mesmo diret rio da base mas isto n o comum Normalmente dividimos o diret rio base em estruturas semelhantes a esta Em nosso caso n o tem problema pois n o iremos disponibilizar o nosso servidor na Internet Quem quiser disponibilizar o servi o na Internet sugiro que fa a uma estrutura de diret rios parecida com a minha sugest o e def
10. IInterface unit System pas conforme listado abaixo Por Anderson Haertel Rodrigues Listagem 1 Defini o de IInterface Todos os Objetos que servir o como classe base para a implementa o de COM implementam Unknown unit System pas conforme listado abaixo Listagem 2 Defini o de IUnknown Nota At a vers o 5 do Delphi todas as Interfaces descendiam de IUnknow ent o se n s quis ssemos implementar uma Interface que n o estivesse ligada a COM n o t nhamos como Necessitar amos herdar da classe TInterfacedObject para criarmos uma Classe n o COM Na vers o 6 do Delphi a Borland decidiu criar uma interface Object Pascal n o ligada a COM A function AddRef e Release gerenciam a contagem de refer ncia do objeto Quando a contagem de refer ncia do objeto chega a zero 0 Release libera o objeto Quem realmente controla a contagem de refer ncia das Interfaces o pr prio compilador do Delphi O Controle o mesmo para Strings e Arrays Din micos A function QueryInterface retorna a refer ncia do objeto se o objeto implementou tal interface COM CORBA e SOAP Como j citado Interfaces s o necess rias para implementa o e uso de Objetos COM CORBA e SOAP Interfaces est o cada vez mais ligadas ao nosso dia a dia e vem com mais for a ainda na implementa o de WebServices 16 MeGAZINE Cada defini o de Interface necessita de um GUID que j explicado pode ser gerado pelo Delphi at
11. Oracle Host Name apontando para o servidor Oracle local As conex es ADO estar o baseadas na exist ncia deste recurso Conex es via Internet No modelo de infra estrutura exemplificado podemos tamb m se estivermos utilizando o Oracle 9i Release 9 0 1 1 1 ou superior nos conectarmos ao banco de dados atrav s da Internet configurando um host name em qualquer m quina externa apontando para o endere o p blico do servidor web em vers es anteriores do Oracle isto tamb m poss vel mas exige que diversos patchs de atualiza o sejam rodados no Oracle e que outras configura es sejam feitas no Windows Para tanto basta definirmos no Winroute que todas as chamadas porta 1521 do servidor Web se esta for a porta padr o do listener Oracle sejam mapeadas para a porta 1521 do servidor Oracle Pronto Se voc estiver na Internet j poder se conectar ao Oracle atrav s da sua aplica o Delphi do SQL Plus ou de qualquer outra forma de conex o que utilize o conceito de listener Para o leitor mais atento isso pode significar um risco adicional o de conex es indesejadas ao nosso banco de dados E realmente esse risco est presente Para evit lo voc pode configurar no Winroute um conjunto de m quinas ou de endere os IP que estar o autorizadas a utilizar o mapeamento de portas definindo pol ticas de acesso Al m disso voc pode ainda integrar a esse modelo outros ser
12. com codecentral ccweb exe listing id 17562 D vida enviada por Adriano Jos Rodrigues Santa Cruz do Rio Pardo SP Pergunta Criei um projeto com um Form e adicionei uma Unit No Form eu possuo um bot o e ao seu evento OnClik uma determinada procedure Na Unit eu criei uma procedure id ntica a do evento OnClik do Bot o mas quando tento definir a minha procedure da Unit ao evento OnClick do bot o do Form d erro Por qu Exemplo MeGAZINE 29 E Perguntas amp Respostas Forml Button2 0OnClick Forml Buttonl OnClick Sem problemas Forml Button2 0OnClick minhaprocedure Erro end end Resposta As procedures que representam um evento s o consideradas m todos Um m todo deve estar definido dentro de uma classe Observe que todos os m todos dos objetos dentro de uma unit est o declarados dentro da classe do formul rio type TForml class TForm StatusBarl TStatusBar Button1 TButton procedure Button1Click Sender TObject private Private declarations public Public declarations end Tudo que voc declarar fora da classe do formul rio considerada uma procedure regular e n o um m todo Com isso crie a sua procedure Click assim type TForml class TForm StatusBarl TStatusBar Button1 TButton procedure Meu Clique Sender TObject private Private declarations public Public declarations end procedure TForm1 Meu_Clique Sender TObje
13. com o WAP muito boa e o desenvolvimento quase transparente pois podemos criar aplica es WAP na maioria das linguagens como Delphi NET VB C ASP PHP Java JSP EJB entre outras Modelos de Aparelhos A disponibilidade de aparelhos no Brasil muito grande e o pre o um forte atrativo variando entre R 199 00 modelo LG DM 160 at R 1 999 00 Nokia 9210 Imaginem uma equipe de vendas ou at mesmo uma equipe de pesquisadores com modelos mais baratos em torno de R 199 00 fechando neg cios elaborando pesquisas consultando clientes disponibilidade de estoque entre outros ra mo Enora Lt l rms md Me do ld Casos de Sucesso Para provar a for a do WAP vamos conhecer alguns casos de Sucesso Caixa Econ mica Federal A Caixa Econ mica Federal disponibiliza a todos a informa o sobre o saldo do FGTS atrav s da tecnologia WAP Para ter uma id ia da transpar ncia neste case a mesma aplica o disponibiliza informa o via telefone fixo Internet e celular WAP Totalmente desenvolvida em JAVA a solu o teve seu custo reduzido devido a leve infra estrutura necess ria para abrigar MeGAZINE toda a aplica o Embora tenha exemplificado o case da Caixa Econ mica Federal importante ressaltar que a maioria dos bancos nacionais oferecem variados recursos com a tecnologia WAP InvestShop COM BR A institui o financeira InvestShop desenvolveu em conjunt
14. componentes visuais para serem usados em programas WinForms no NET Framework e WinControls e Classes derivadas de algum componente j existente WinControls Os WinControls s o componentes visuais que podem ser desenvolvidos de uma forma RAD correspondentes a um projeto do tipo Windows Control Library Hew E roer EnTJAT fes Ej ass isr Pokec 4 n CA Promos COS Prostia Gi a TEE as Lenar S ES aj Sip awd Cepet ropte Contra rary DO Other Projecto D bas Tudi Solutiors pri PELE P lsje WE go eI WED dpplesHom O proa sh am Epalicaso took for css oris to ves r ndosa spo cos Hari Feman Location HER r Erica Ernqeot wal be creed soc erpi eun onral Eie E Canca Hp Eles s o particularmente f ceis de criar por existir um bom suporte em tempo de desenvolvimento f cil colocar outros componentes sobre eles e tamb m adicionar c digo para interceptar eventos dos componentes Veja um WinControl sendo MeGAZINE parte 1 criado no Visual Studio NET A Metrel MerastdEMisus Ce HLI ospa Lesrlontrati es Meca japa pod hg Cada g ml w Morgado ralo o Umad Leanar etan T Ep a m RESTANTE Jore het gt T a mia l Erha la Iw e eela r rota EA F Hal qual a Fur da gt F Trid a ki A er r Fath Fr n urreashiry k mfa AN Fzz Os WinControls s o bons em situa es onde desejamos agrupar um conjunto de componentes em um
15. e qualquer compara o de string retorna True ou False Para converter os valores de um boolean para string use a primeira entrada desses arrays var TrueBoolStrs array of String FalseBoolStrs array of String const DefaultTrueBoolStr True DO NOT LOCALIZE DefaultFalseBoolStr False DO NOT LOCALIZE function StrToBool const S string Boolean function StrToBoolDef const S string const Default Boolean Boolean function TryStrToBool const S string out Value Boolean Boolean function BoolToStr B Boolean UseBoolStrs Boolean False string Compara o Diversas fun es convenientes que est o dispon veis para compara o de valores de duas ou mais strings Elas v m em duas formas case sensitive e not case sensitive primeira tem nomes terminados em str enquanto as outras t m o nome terminado em Text O primeiro conjunto de fun es olha para uma substring em qualquer lugar em uma string Cada um retorna um simples True ou False De qualquer forma aquela ordem dos par metros revertida na rotina Contains como comparado a outras e a fun o AnsiPos function AnsiContainsText const AText ASubText string Boolean function AnsiStartsText const ASubText AText string Boolean MeGAZINE Q 23 6 DELPHI function AnsiEndsText const ASubText AText string Boolean function AnsiContainsStr const AText ASubText string Boolean function AnsiStartsStr const A
16. gdi Betri Iian es Li FE sr mesme hoje Da o Eur I4 AY Oa QO Mr aisr EENET E A dEr r BETE db Dan as nto a DEP o meat do mo Trigo ms Ad Dr ta pn Acer r L a Pao n ar i4 Lar que eE aT W Hk T da Fs Clique em Browse e selecione a DLL com os componentes e aperte Ok Momo iign ETF a a ad acer tra CO RA RD TE TD Crest dede ce AR E LS an Has rah mg gA Le Ot watya Epa eR o LO RI Bint JR oetlimEsdeT Has qu ei 2 MT DIAL Ham arte meio ado rd Hama Ds CLS SA He cedem ho A TETE n n o Ds LS SA H sF he DO DM ag r t rder Oebar Painea PR n E n rene a Erret a Dedos Uih idr Painea PR r erer t a iya O e u A EiL Ds IM E Honda de atuo cute do O haas rra car eres um ha ir He eder lee est reaa ha yie E q Fy Ja m T ERES Ei E JA n aill pap hea don d i Jp 3H e 1 n T Toolbox Cala componens Windawe Frrrre FA Prirtliclog TA Frink Fres ewMialng DO Pintkrev ewt cntro O FrrarProider Clique novamente em Ok e observe o componente no Toolbox amp PrirtDocument FI PagesetupDialog a Z valalkepolvicees E Data extBox cas MMeuB Lau Voc pode arrastar os componentes e coloc los sobre um formul rio Na segunda parte deste artigo veremos como adicionar EE ro riedades e eventos aos componentes MeGAZINE 13 ORACLE Acessando Oracle 91 via Internet atrav s do Listener
17. renomeado function LeftStr const AText string const ACount Integer string function RightStr const AText string const ACount Integer string function MidStr const AText string const AStart ACount Integer string Procurando A fun o SearchBuf deixa voc procurar um texto arbitr rio ou parte disso por uma informa o em particular As op es permitem que voc pesquise para cima ou para baixo a partir da posi o corrente determina se o caso foi considerado compat vel e especifica se somente as palavras completas ser o procuradas A dire o de pesquisa default do inicio para o final do arquivo Como voc pode ver a partir da constante WordDelimiters 24 Q MeGAZINE qualquer caractere com exce o de um alfanum rico denota um limite de palavra Informe os valores SelStart e SelLength para saltar sobre este ponto do buffer Neste caso come amos a pesquisa ap s ou antes da sele o baseada na presen a da op o soDown O valor de retorno da fun o um ponto para o inicio da primeira ocorr ncia da string de pesquisa dentro da se o denominada de buffer ou nil se ele n o puder ser encontrado l DELPHI Conclus o O Delphi tem muita funcionalidade embutida Enquanto o suporte da manipula o de strings sempre esteve presente no Delphi a ltima vers o adiciona muito mais e move uma parte para outra unit StrUtils Esta mat ria foi uma pequena introdu o
18. uma opera o pendente c Necessita cancelar esta opera o e fechar o comprovante que ficou aberto Felizmente a dll de comunica o economiza uma boa parte dos controles que voc necessita fazer em seu software como identificar se a impressora esta desligada ou n o reimprimir a transa o em um relat rio Gerencial etc Nada melhor que fluxogramas para entendermos ent o como fazer isso estes fluxos voc pode encontrar em nosso site www bematech com br na rea de download impressoras fiscais poder baixar o arquivo de Help da dll BamFi32 dil que nossa dll de comunica o de alto n vel Bem Observe os Fluxogramas abaixo Cancelar e controlar o ECF quando o mesmo desligado no momento da impress o do TEF 20 MeGAZINE TR ia Cie W E Ea D Po a a Taa e i YT EET n an 224 aA E ad F sabani rila j Farta rrenan Seta KZI A IA 4 RS am I jakina Ties ai CL Estat ATE en mka d perai e riam p a bi fardara barete Far ri Enar urs Forma re Faraman Jerat H lfm ra rn Eers Apra Pupae rio Meret o Pkn Ea tetos Tein g Peame b a Ti Jammah o Tei a aT TT Lote DR O a e Ao ini ore o arraia pur Tr qe mir or preces Tr Ba ie PTE Doi 1H P nra Sr pretree i Berg ETEF InpiveTa A Tara A Eros wo iera hipoma y ngam Lapa a ar ques es e neanke Per r Cancelar e controlar o MICRO PC desligado no momento da impress o do TEF
19. 4 3762 1259 Rua S o Paulo 447 Cep 18 740 000 Taquarituba SP Tiragem 5 000 exemplares Diretor Presidente Celso Jefferson M Paganelli Diretor T cnico Mauro Sant Anna Colaboradores Claudenir C Andrade M rio Camilo Bohm Marcio Alexandroni da Silva Anderson H Rodrigues EDITORIAL 4 Editorial Ol amigos Como todos j sabem a cada nova vers o o Delphi traz mais novidades Veja nesta edi o a nova unit StrUtils que traz novas rotinas para o trabalho com strings no Delphi 6 complementando quelas j existentes no Delphi 5 Voc j deve ter notado que o Microsoft Word tem o reconhecimento de URLs Muitos de voc s j desejaram que suas aplica es fizessem isto Bem nesta edi o voc ver uma mat ria que realmente prender seus olhos N s vamos mostrar como criar esta caracter stica no componente RichEdit E tem muito mais leia e comprove Boa leitura a todos e at o pr ximo m s com mais novidades Celso Jefferson Paganelli Presidente The Club EONA a E A A 03 Desenvolvendo Aplica es para Celulares com Delphi 04 Criando Componentes Visuais Parte 1 Lise 11 Acessando Oracle 9i via Internet atrav s do Listener 14 DataSnap Interfaces Parte l sasise 16 Homologando seu Software para realizar Transfer ncia Eletronica de FUNGOS praia ariana 20 Trabalhando com string no Delphi O cetim 22 Detectando URLs no RichEdit stereo 26 Perguntas
20. A Se a i E want para realizar Transfer ncia Eletr nica de Fundos phi amp MeGAZINE Q 1 THE CLUB Revista The Club Megazine 08 2002 A utiliza o reprodu o apropria o armazenamento em banco de dados sob qualquer forma ou meio de textos fotos e outras cria es intelectuais em cada publica o da revista The Club s o terminantemente proibidos sem autoriza o escrita dos titulares dos direitos autorais Copyrighto The Clube 2002 THE CLUB Rua Acre 950 Avar SP CEP 18 700 260 Informa es 0xx14 3732 3689 Suporte 0xx14 3733 1588 Fax 0xx14 3732 0987 Internet http www theclub com br Cadastro cadastroOtheclub com br Suporte suporteOtheclub com br Informa es infodtheclub com br D vidas Correspond ncia ou fax com d vidas devem ser enviados ao THE CLUB indicando Suporte Opini o Se voc quer dar a sua opini o sobre o clube em geral mande a sua correspond ncia para a se o Tire sua d vida Reprodu o A utiliza o reprodu o apropria o armazenamento em banco de dados sob qualquer forma ou meio de textos fotos e outras cria es intelectuais em cada publica o da Revista The Club s o terminantemente proibidos sem autoriza o escrita dos titulares dos direitos autorais Copyright The Club 2002 Im press o e acabamento Impressos Gril Gril Gr fica e Repr Ind Ltda Tel 0xx14 3762 1345 Fax 0xx1
21. SubText AText string Boolean function AnsiEndsStr const ASubText Boolean AText string Voc tamb m pode comparar uma simples string com um array de valores retornando um simples flag indicando sua presen a ou seu ndice dentro do array O index conta a partir de zero e 1 quando o valor n o existe Novamente o Str case sensitive enquanto o Text n o function AnsiMatchText const AText string const AValues array of string Boolean function AnsilndexText const AText string const AValues array of string Integer function AnsiMatchStr const AText string const AValues array of string Boolean function AnsilndexStr const AText string const AValues array Of string Integer Alterando Trocar todas as ocorr ncias de uma substring em uma string com outro valor Internamente eles usam a rotina StringReplace da unit SysUtils especificando a troca total como um flag e ignorando o caso quando apropriado function AnsiReplaceText const AText AFromText AToText string string function AnsiReplaceStr const AText AFromText AToText string string Reverte a ordem dos caracteres na string com a fun o ReverseString function ReverseString const AText string string DupeString concatena a string fornecida um determinado n mero de vezes e retorna o resultado Voc n o recebe um erro se o n mero de repeti es zero ou menor mas voc n o recebe qualquer sa da pa
22. amp Respostas ssesssssssssssrsersrrsrsnrennsrnsrnnrnnrsnnsrnersnrsnns 29 MeGAZINE 3 6 DELPHI Desenvolvendo Aplica es para Celulares com Delphi Neste artigo veremos como desenvolver aplica es para celular atrav s da tecnologia WAP O Delphi muito vers til e para quem j desenvolveu aplica es servidoras para Internet ver a extrema facilidade em portar tais aplica es para celulares Mais adiante veremos como trabalha uma aplica o servidora e agora daremos uma olhada no panorama atual do WAP no Brasil WAP no Brasil Ser que temos oportunidades de lucro no Brasil A oportunidade existe mas poucas empresas est o investindo nesta rea certamente lucrativa Ser que sou um rom ntico sonhador Sonhando com o lucro em tempos de vacas magras Amigos posso afirmar que n o pois em 2000 quando lancei meu livro de WAP Wap Guia de Tecnologia Editora Brasport o mercado estava muito aquecido devido as fortes propagandas de empresas de telefonia em torno do WAP mas na poca a barreira cultural de nosso pa s quase levou o sonho destas empresas por gua abaixo Sabem o que elas fizeram Deixaram o WAP de lado e continuaram a investir em aparelhos m veis mas destacando apenas sua beleza e algumas funcionalidades Facunte ent o o sonho do lucro ficou ainda mais distante Amigos a que entra o consultor para explicar aos gerentes de tecnologia CEOs que a rela o custo benef cio
23. antes daquela posi o com o texto em BreakStr A vers o mais simples quebra em espa os em tabs ou em h fens Note que esta rotina n o quebra as substrings entre aspas function WrapText const Line BreakStr string const BreakChars TSysCharSet MaxCol Integer string overload function WrapText const Line string MaxCol Integer 45 string overload Novidades no SysUtils Diversas novas rotinas foram inclu das na unit SysUtils do Delphi 6 Dentre elas inclui a constante WideString rotinas b sicas de vers o WideString sobrecarga de fun es Trim para WideString e rotinas de forma o WideString 22 MeGAZINE function WideSameStr const Sl S2 WideString Boolean function WideCompareText const Sl S2 WideString Integer function WideSameText const Sl S2 WideString Boolean function Trim const S WideString WideString overload function TrimLeft const S WideString WideString overload function TrimRight const S WideString WideString overload function WideFormat const Format WideString const Args array of const WideString procedure WideFmtStr var Result WideString const Format WideString const Args array of const function WideFormatBuf var Buffer BufLen Cardinal const Format FmtLen Cardinal const Args array of const Cardinal As rotinas de convers o existentes de outro tipo b sico para strings tem sido melhoradas com vers es que pegam valo
24. anvas virtual abstract property Position TPoint read GetPositon write SetPosition published Published declarations MeGAZINE 17 E DELPHI end TPolygon class TShapeBase IPolygon private Private declarations FVertices array of TPoint protected Protected declarations public Public declarations procedure Draw Canvas TCanvas override function NumVertices SmallInt function NumSides SmallInt function SideLenght const Index SmallInt SmallInt function Vertex Index SmallInt published Published declarations end TRectangle class TShapeBase IPolygon IRectangle private Private declarations FRect TRect protected Protected declarations public Public declarations procedure Draw Canvas TCanvas override function NumVertices SmallInt function NumSides SmallInt function SideLenght const Index SmallInt SmallInt function Vertex Index SmallInt published Published declarations end TSquare class TShapeBase IPolygon IRectangle ISquare private Private declarations FSide SmallInt protected Protected declarations public Public declarations procedure Draw Canvas TCanvas override function Side SmallInt function NumVertices SmallInt function NumSides SmallInt function SideLenght const Index SmallInt SmallInt function Vertex Index SmallInt published
25. ct begin ShowMessage The Club end Com isso poder atribu la aos seus objetos D vida enviada por Escape Soft BroadCast Nova Friburgo RJ Pergunta Teria alguma API que me possibilitasse verificar o estado do modem Resposta Segue abaixo um exemplo de como verificar o Status do modem var CommPort string hCommFile THandle ModemStat DWord begin CommPort COM2 Abrir por de comunica o hCommFile CreateFile PChar CommPort GENERIC READ 0 nil OPEN_EXISTING FILE_ATTRIBUTE_NORMAL 0 if hCommFile INVALID HANDLE VALUE then begin ShowMessage N o foi poss vel abrir a porta CommPort exit end Verificar status if GetCommModemStatus hCommFile ModemStat lt gt false then begin if ModemStat and MS CTS ON lt gt 0 then ShowMessage The CTS clear to send is on if ModemStat and MS DSR ON lt gt 0 then ShowMessage The DSR data set ready is on if ModemStat and MS RING ON lt gt Othen ShowMessage The ring indicator is on if ModemStat and MS RLSD ON lt gt 0 then ShowMessage The RLSD receive line signal detect is on end fechar a porta CloseHandle hCommFile end D vida enviada por Venture Training amp Inform tica S o Paulo SP 30 4 MeGAZINE
26. e de detec o da URL N s vamos criar uma propriedade URLDetect com o novo open PChar GetSelText nil controle TExRichEdit property URLDetect boolean read FURLDetect write SetURLDetect default FALSE A procedure SetURLDetect foi escrita apenas para que quando a propriedade URLDetect seja configurada ela chama a fun o RecreateWnd que recria a procedure CreateWnd veja a listagem 2 Isto atualiza o controle RichEdit corrente para desligar ou ligar a detec o da URL procedure TExtCustomRichEdit SetURLDetect Value boolean begin if URLDetect lt gt Value then begin FURLDetect Value Recreatelind end end E tesnplo do move Kac h Edit THE CLUB 0 maior clube de arogramadores do Brasil Home Page http The lut com br mailo cadastro Miheciub com ar al Faint Size 10 Figura 1 Utilizando o novo RichEdit Conclus o Finalmente voc pode ver na figura 1 um exemplo de uma aplica o implementada com o novo RichEdit 2 0 Ela n o suporta apenas URLs mas tamb m file mailto ftp https gopher nntrp properto telnet news wais Por implementar um componente constru do no RichEdit 2 0 da Microsoft n s fomos capazes de usar a caracter stica de dete o de URL Entretanto olhando a lista das caracter sticas inclu das na vers o 2 0 muito prov vel que voc encontre outras caracter sticas que gostaria de usar Voc pode fazer o download do exemplo no endere
27. eb Server Application MeGAZINE Na janela seguinte selecione a op o CGI Stand Alone executable figura 4 Mira tado sd wa S apila alora E E x ego et des lar o cl Fado oi p solo DO saa r nr ORTH brer elm Laer i ROl shana ezib a C en Sad ocho cad o f Dp d he 5l and kod LL E o nay EEE lE Lala tamo figura 4 sele o do tipo da aplica o LIF r Hr p a tee A Em seguida teremos um WebModule figura 5 figura 5 WebModule Mas o que um WebModule WebModule um reposit rio de objetos com a fun o de armazenar os objetos n o visuais da aplica o tais como TpageProducer TqueryPageProducer TQuery etc bem como responder as mensagens requisitadas pelo servidor HTTP Bem para que uma aplica o servidora possa trabalhar devemos delegar tarefas atrav s de Actionsltems ou simplesmente Itens de A o Para explicar melhor o uso de Actionsitems imagine uma aplica o para inclus o e altera o de clientes Teremos o seguinte cen rio Aplica o clientes exe ActionItem inclus o a o para incluir cliente ActionItem altera o a o para alterar cliente bastante simples cada Actionltem tem uma fun o espec fica dentro da aplica o servidora Para executar no browser ou celular uma determinada Actionltem basta fazer como no exemplo http site scripts clientes exe inclusao Repare que informamos o nome da aplica o cl
28. eressante que o Apache Server traz consigo embutido um excelente GateWay WAP Embora esteja documentado que o Apache apenas suporta aplica es WAP ele possui toda a implementa o necess ria para um perfeito funcionamento Veremos adiante como conseguir o Apache bem como a instala o e configura o num servidor Para que possamos prosseguir no desenvolvimento de nossa aplica o precisamos tamb m de um simulador WAP Existem MeGAZINE Gi 5 v rios no mercado mas particularmente prefiro o Deck it da PyWeb A figura 2 ilustra a interface do Deck it DE H MAL Pro iemer Ed odor Ls s tal dy 6 Wid mt ah im Figura 2 Deck it Onde conseguir os softwares necess rios O Apache Server poder ser baixado no site da Apache org www apache org Procure baixar uma vers o igual ou superior a 1 8 O Deck it est dispon vel no site da PyWeb www pyweb com e assim como o Apache totalmente freeware Instalando e configurando o Apache A instala o do Apache no Windows bastante simples e intuitiva J ouviram falar do famoso next next next basicamente isso Ap s concordar com a licen a do software basta avan ar o assistente de instala o at a conclus o da mesma Agora vem a parte chata da coisa configurar o bendito O Apache possui um arquivo com o nome httpd conf normalmente localizado no subdiret rio conf da instala o Exemplo C NArquivos de Programas
29. ientes exe e o DELPHI nome da Actionltem inclus o A aplica o servidora n o possui limite de Actionltems portanto podemos criar aplica es complexas Bem seguindo o nosso primero projeto atrav s do duplo clique no WebModule acesse o editor de Actionltems figura 6 diting WwebModulel Actions E x Cy Falt bru Fra kil dela inhari figura 6 editor Actionltems Clique no primeiro bot o do editor para inserir uma nova Action figura 7 E Tito wehh nuli Achinne E ato Palla Encbkd Colaul pdc themes Tue figura 7 Actionltem Em seguida altere as seguintes propriedades SEJETO TWebactianiham Propriscade Walor EEE Petty PESE po LED Esta ser nossa Action padr o ou seja caso o usu rio n o digite nada al m do nome da nossa aplica o esta Action ser executada Embora a propriedade Pathlnfo possua o mesmo valor da propriedade Name ela que executa a Action ou seja no browser o que vale o valor da PathInfo evento OnAction coloque o seguinte c digo N o se assustem com as denomina es do cabe alho lt DOCTYPE wml isso um padr o e o restante iremos conhecendo aos poucos Vamos analisar o c digo Na linha 001 estou dizendo ao servidor atrav s do m todo Response ContentType que o tipo de informa o no padr o WAP Em seguida nas linhas 002 003 e 004 estou empacotando a respo
30. ina o Script lias apenas no subdiret rio scripts Outra coisa importante a saber s o os MimeTypes WAP Mas o que s o MimeTypes Para que os servidores HTTP reconhe am um tipo de requisi o ou ent o um m todo de envio necess rio a defini o dos MimeTypes S para clarear um pouco a informa o uma imagem do tipo JPG definida como image JPG Com isso o servidor saber qual o melhor m todo de transmiss o para este tipo de arquivo 6 4 MeGAZINE Mime Types do WAP Imagem bitmap bp image vnd wap wbmp Normalmente necess rio adicionar os MimeTypes em nossos servidores HTTP mas em nosso caso n o h essa necessidade visto que a partir da vers o 1 3 1 o Apache j traz consigo toda a configura o especificada Colocando a m o na massa Particularmente amigos essa a parte que mais gosto m o na massa No Delphi iremos criar uma aplica o servidora no padr o CGI Pe o licen a aos saudosistas para utilizar o nosso famoso Hello World como exemplo A partir do Delphi selecione as op es File New Other e em seguida a op o Web Server Application como ilustra a figura 3 Jre lem EE e x L da Horde SU Es tits EIL weba Lts Lusa dra Pt ape H lhes Fun Fu Disb Fr alz Ei E a BS apr lesar Il di er Eid E A B Samka polca oi Teu Trim d dba L ril AHL Dia rdr Den do ha Cla figura 3 op o W
31. iona uma aplica o WAP precisamos conhecer o funcionamento de uma aplica o servidora DELPHI Acredito que todos est o habituados no desenvolvimento de aplica es desktop onde normalmente instalamos em cada terminal nossa aplica o Isso o que chamamos de aplica es locais Quem est acompanhando os excelentes artigos do meu amigo Anderson Hartel teve um forte contato com aplica es distribu das onde s o instalados m dulos no servidor e m dulos no cliente terminal Em nosso caso teremos apenas o m dulo servidor pois o cliente da nossa aplica o um browser com suporte a tecnologia WAP ou seja a grande maioria dos celulares comercializados no mercado nacional Para facilitar a compreens o a figura 1 ilustra bem o nosso caso HUTY W N S a ETR TIF E e E a a al colar Ielicute metidos Irate tias lieura l Na ilustra o temos um celular que funciona como o nosso cliente terminal onde solicita os servi os ao servidor Os dados WML trafegam atrav s do protocolo HTTP Quando os dados chegam no servidor o mesmo tem que interpretar a requisi o e esse servi o feito pelo GateWay O GateWay tamb m tem como fun o empacotar o resultado da requisi o para que o servidor retransmita ao celular Em resumo necessitamos de duas aplica es b sicas no servidor Servidor HTTP recomendo o Apache Server Nossa aplica o servidora Um detalhe bastante int
32. o com a EverSystem talvez a maior empresa de desenvolvimento deste setor uma solu o bastante robusta oferecendo ao usu rio um controle total de suas aplica es S para ter uma id ia a aplica o disponibiliza at gr ficos de a es em celulares WAP realmente incr vel DETRAN SP Um dos pioneiros na tecnologia WAP o DETRAN de S o Paulo disponibiliza informa es de Multas Pontua es na Carteira entre outros Viram que o poder do WAP grande e basta uma id ia para transformar em lucro Algumas id ias para ganhar dinheiro Bem aqui v o algumas sugest es bastante interessantes para ganhar dinheiro com aplica es WAP Aplica o de aux lio a vendedores externos com op o de consulta a estoque faturas de clientes e fechamento de pedidos For a de Vendas Aplica o que auxilia pesquisadores das mais variadas reas IBOPE CENSO Opini o Produtos entre outras TimeSheet Aplica o para TimeSheet de consultores advogados t cnicos entre outros Pesquisas de Campo Gerenciamento de Processos Jur dicos onde o advogado ou cliente poder Processos VOO E p consultar informa es sobre os andamentos dos processos m mobile Vendas de ingressos m Ticket l passagens aereas cinemas teatros etc m Finance Aplica es para o mercado financeiro Com rcio em geral atrav s de aplica es WAP m Commerce Entendendo as aplica es WAP Para entender um pouco como func
33. o herdada de TObject Conclus o Mostrei nesse artigo o conceito e para que serve Interfaces Como j citado Interfaces j fazem parte do nosso dia a dia e far o mais ainda com a chegada dos WebServices Foi demonstrado tamb m que Interfaces n o est ligada a apenas OD Objetos Distribu dos pois com a estrutura de Interfaces e classes demonstradas nesse artigo vimos que a mesma tamb m de extrema import ncia na Programa o Orientada a Objetos OOP No pr ximo artigo daremos in cio parte de cria o de servidores de aplica o no protocolo COM Al m de criar o servidor eu mostrarei o que e para que serve cada op o na cria o do Remote DataModule RDM Sucesso e Sa de a todos Um Abra o MeGAZINE 19 G DELPHI Homologando seu Software para realizar Transfer ncia Eletr nica de Fundos Em artigos anteriores comentamos sobre a necessidade de uma vez que seu aplicativo esteja totalmente preparado para fazer TEF falando com a dll de comunica o e o gerenciador padr o de cada bandeira existe a necessidade de realizar uma homologa o ou testes no software em duas entidades homologadoras de TEF a Software Express e a Seven Pdv ambas em S o Paulo Nestes testes s o realizadas todas as opera es que envolvem a Transfer ncia Eletr nica de Fundos ou seja n o ser certificado seu software se esta baixando estoque ou n o se esta bonitinho ou n o a quest o hom
34. o www theclub com br revista novorichedit zip mas n o esque a que antes de testar o exemplo voc deve instalar o novo componente ou seja o arquivo Riched20 pas 28 Q MeGAZINE Pergunta Quando tento executar um programa compilado com o Delphi 6 0 no Windows NT 4 apresenta erro N o foi poss vel localizar o ponto de entrada do procedimento VarNot na biblioteca v nculo din mico OleAut32 dll Como resolver Resposta Para solucionar este problema o Sr dever rodar um Update Pack em seu Windows Windows NT 2000 Requer Windows NT 4 0 SP4 ou superior Windows 95 98 Requer Windows 98 ou Windows 95 com DCOM 1 2 D vida enviada por Cosis Computa o amp Sistemas Franca SP Pergunta Tenho uma aplica o desenvolvida em Delphi6 dbExpress Firebird e quando declaro a unit MidasLib na lista de uses as exce es retornadas pelo banco de dados s o apresentadas por m sem a mensagem de erro na caixa de di logo aparecendo somente o bot o Ok Por m compilando sem a MidasLib na lista de uses funciona corretamente Como resolver o problema Resposta Na verdade isso ocorre devido a um bug no Delphi bug esse que pode ser resolvido atualizando o arquivo MidasLib DCU e incluindo o arquivo MidasLib RES no diret rio LIB do Delphi6 Um detalhe importante o Delphi6 deve estar atualizado para o Pack 2 O arquivo ZIP contendo o MidasLib DCU e MidasLib RES pode ser encontrado no endere o http codecentral borland
35. odified Boolean begin WasModified inherited Modified inherited Createlind if SysLocale FarEast and not SysLocale PriLangID LANG JAPANESE then Font Charset GetDefFontCharset Added the ENM LINK to receive EN LINK message SendMessage Handle EM SETEVENTMASK 0 ENM CHANGE or ENM SELCHANGE or ENM REQUESTRESIZE or ENM PROTECTED or ENM LINK Activate the URL Detection feature SendMessage Handle EM AUTOURLDETECT Ord FURLDetect 0 SendMessage Handle EM SETBKGNDCOLOR 0 ColorTOoRGB Color if FMemStream lt gt nil then begin Plain PlainText FMemStream ReadBuffer DesignMode DELPHI 4 sizeof DesignMode PlainText try DesignMode Lines LoadFromStream FMemStream FMemStream Free FMemStream nil finally PlainText Plain end end Modified WasModified end Listagem 2 A procedure CreateWnd Quando o cursor do mouse for movido para o texto da URL o controle RichEdit recebe uma notifica o EM LINK Neste ponto o controle pode mudar o cursor do mouse indicando ao usu rio que ele pode clicar na URL Veja a listagem 3 procedure TExtCustomRichEdit CNNotify var Message TWMNotify type PENLink TENLink begin with Message do case NMHdr code of EN SELCHANGE Select ionChange EN REQUESTRESIZE RequestSize PRegSize NMHdr rc EN SAVECLIPBOARD with PENSaveClipboard NMHdr do if not SaveClipboard cObjectCount cch then Result
36. ologar para certificar se que as opera es de transa o eletr nica realmente est o acontecendo de acordo com os padr es de seguran a estabelecidos pelas bandeiras O que altamente aceit vel pois com a nova lei da Obrigatoriedade do TEF nas impressoras fiscais nossos softwares passam a assumir uma pesada responsabilidade que d bito ou credito de valores monet rios de nossos clientes Nestes passos homologat rios existem v rios testes que s o realizados entre eles se a impressora fiscal est desligada e com o Micro PC desligado Como feito isso 1 ordenada a impress o de um cupom fiscal e logo ap s uma Transa o TEF quando o software come a a imprimir o comprovante TEF na Impressora fiscal exatamente neste momento o ECF desligado e voc necessita controlar tudo isso em seu software a Necessita identificar que o ECF est desligado Por Claudenir C Andrade b Necessita controlar que ao ligar o ECF novamente voc dever reiniciar a impress o do TEF em um Relat rio Gerencial c E finalmente necessita controlar que caso o ECF n o seja ligado novamente a opera o dever ser Cancelada 2 ordenada novamente a impress o de um cupom fiscal e logo ap s uma transa o ETF quando o software come a a imprimir o comprovante TEF na Impressora o Micro PC desligado isso mesmo e voc dever controlar a Necessita Identificar que o micro foi desligado b Necessita identificar que ficou
37. r o arquivo comctris pas para um novo arquivo chamado Riched20 pas Remova todas as classes menos as classes que pertencem classe TCustomRichEdit Renomeie a classe para TExCustomRichEdit Agora comece a fazer as suas implementa es na vers o 2 0 do RichEdit Na procedure CreateParams modifique o conte do da constante RichEditModuleName de Riched32 DLL para Riched20 dll como mostrado na listagem 1 Modifique tamb m a procedure CreateSubCllass desde ent o ele estava usando a vers o antiga Existem duas classes fornecidas a ANSI e a UNICODE que cont m as constantes RICHEDIT CLASSA e RICHEDIT CLASSW respectivamente N s vamos usar a vers o ANSI da classe RichEdit que a RICHEDIT CLASSA 26 4 MeGAZINE with Params do begin Style Style or HideScrollBar HideScrollBars or HideSelections HideSelection WindowClass style WindowClass style and not CS HREDRAW or CS VREDRANW end end Listagem 1 A procedure CreateParams no novo componente RichEdit baseado no Microsoft RichE dit 2 0 Processando a detec o da URL Em ordem para o controle receber a mensagem EN LINK n s vamos incluir a mensagem ENM LINK quando enviar o EM SETEVENTMASRK veja a listagem 2 Tamb m quando criar a janela n s enviamos a mensagem EM AUTOURLDETECT a qual ativa o efeito CFE LINK Este efeito modifica a cor do texto URL e deixa o texto sobrescrito procedure TExtCustomRichEdit Createlind var Plain DesignMode WasM
38. ra ambos function DupeString const AText string ACount Integer string StuffString troca a se o nomeada de uma string existente AStart e ALength com a nova substring Voc recebe alguns efeitos interessantes se o tamanho for negativo voc come a repetindo alguns caracteres mais adiantados na string original que segue a substitui o function StuffString const AText string AStart ALength Cardinal const ASubText string string Sele o Para escolher uma entrada aleat ria de um array de strings cada um com uma possibilidade igual use a rotina RandomFrom Note que esta uma fun o sobrecarregada que pode tamb m fazer exame de disposi es de n meros inteiros ou de ponto flutuante function RandomFrom const AValues array of string string overload Outra fun o sobrecarregada IfThen fornece uma fun o em linha para strings Ela avalia a express o booleana e retorna a primeira string do par metro se for verdadeiro e a segunda se for falso Esta fun o pode ser embutida em uma grande express o e troca uma instru o if para executar o c lculo function IfThen AValue Boolean const ATrue string AFalse string string overload Se voc precisa de um acesso f cil para as se es de string voc pode usar as seguintes rotinas para extrair o inicio e o fim ou alguma coisa entre eles Cada um deles usa internamente a fun o Copy De fato o MidStr basicamente um Copy
39. rav s de CTRL SHIFT G no editor de c digos do Delphi Vamos agora implementar e exemplificar o uso de Interfaces Heran a M ltipla Como j citado heran a de Classe for a a Classe Filha a armazenar todos os campos que s o declarados na Classe PAI N o tem jeito Em heran a de classes podemos acrescentar funcionalidades a Classe Filha mas n o podemos remover funcionalidades da Classe PAI o m ximo que podemos na Classe Filha tornar as coisas invis veis Se n o quisermos tal funcionalidade na Classe Filha teremos de ir ao Ancestral imediato a Classe PAI e verificar se o mesmo implementou tal funcionalidade caso tenha implementado teremos de ir Classe Ancestral por Classe Ancestral at chegarmos na Classe que n o implementa tal funcionalidade Nesse processo de retorno de Classes Ancestrais podemos e com certeza perderemos implementa es vitais dos quais nos far o falta na Classe Filha um problema Vejam bem a Heran a de Classe uma ferramenta eficaz gra as a Deus que a mesma existe para a reutiliza o de c digo O Problema ou n o o Delphi n o dar suporte a Heran a s M ltipla s Um debate sobre os benef cios ou n o de Heran a s M ltipla s est fora dos planos desse artigo Square x Polygon x Rectangle Shape A Interface IShape seria a Interface base para todas as Interfaces IPolygon IRectangle e ISquare envolvidas na estrutura TSquare necessita armazenar todos os seu lados TRec
40. res default retornando o se uma exce o for apresentada de qualquer forma Existe tamb m rotina correspondente ao Try que executa a convers o e retorna True se teve sucesso e False se n o teve sucesso Como um efeito colateral ele retorna um valor convertido via um par metro function StrToFloatDef const S string const Default Extended Extended function TryStrToFloat const S string out Value Extended Boolean overload function TryStrToFloat const S string out Value Double Boolean overload function TryStrToFloat const S string out Value Single Boolean overload function StrToCurrDef const S string const Default Currency Currency function TryStrToCurr const S string out Value Currency Boolean function StrToDateDef const S string const Default TDateTime TDateTime function TryStrToDate const S string out Value TDateTime Boolean DELPHI 4 function StrToTimeDef const S string const Default TDateTime TDateTime function TryStrToTime const S string out Value TDateTime Boolean function StrToDateTimeDef const S string const Default TDateTime TDateTime function TryStrToDateTime const S string out Value TDateTime Boolean Voc pode agora converter facilmente entre boolean e string com o default e vers es Try descritas anteriormente A convers o depende dos arrays TrueBoolStrs e FalseBoolStrs Voc os preenche com os valores apropriados
41. rganiza o e controle pois teremos servidores dedicados e especialmente configurados para tarefas espec ficas O papel dos dois servidores pode estar concentrado numa nica m quina mas para estruturas muito pequenas tanto em tamanho da rede interna quanto em complexidade e porte da base de dados Oracle E essa n o poder de forma alguma ser considerada uma solu o profissional E fundamental que instalemos no servidor web um software que concentre firewal b sico compartilhamento de conex o Internet regras de acesso Internet mapeamento de portas Costumamos utilizar e recomendamos plenamente o Winroute que re ne todas essas ferramentas e diversos servi os adicionais As ferramentas similares dispon veis gratuitamente no Windows s o muito rudimentares e incompletas e n o costumam atender exig ncias profissionais 14 4 MeGAZINE Conex es via Web Server Uma das possibilidades que temos principalmente se todas as regras de neg cio estiverem escritas no banco conectarmos ao Oracle aplica es escritas em ASP HTML ou qualquer outra linguagem atrav s de conex es ADO muito simples Neste caso temos como caracter stica s podermos nos conectar externamente ao banco atrav s de chamadas do IIS Internet Information Server do Windows 2000 ou qualquer outro servi o web server que desejarmos E imprescind vel neste caso que tenhamos no servidor web um servi o
42. riedade Valor Amigos com isso conclu mos o nosso artigo sobre o desenvolvimento de aplica es para celulares com Delphi Para testar o sucesso do artigo gostaria de receber sugest es e cr ticas emersonOfacunte com br e quem sabe escrever uma continua o com acesso a banco de dados e tudo mais Como complemento de estudo a esse artigo recomendo a visita nos seguintes sites No evento OnAction coloque o seguinte c digo www aprendawap com br www pyweb com www br wmlclub com www apache org www linhadecodigo com br wap Forte abra o e muito sucesso a todos O c digo exatamente igual ao anterior estamos apenas substituindo a mensagem Vamos testar o c digo No Deck It digite o que segue na barra de endere os http localhost ola exe theclub Repare que estamos colocando o pathinfo theclub A figura 9 ilustra o resultado da nossa segunda Action MeGAZINE Gi 9 pa SANT ANNA Criando Componentes Visuals Por Mauro Sant Anna santanna mas com br Mauro um MSDN Regional Director consultor e instrutor da MAS Inform tica www mas com br tendo ministrado treinamentos na arquitetura NET desde outubro de 2000 Esta a primeira parte de um par de artigos que abordar o a cria o de componentes visuais baseados em outros componentes j existentes para serem usados em aplicativos NET do tipo WinForms Tipos de componentes Existem basicamente duas maneiras de criar
43. sobre as novas potencialidades e uma revis o de algumas das mais antigas o objetivo foi deixar voc ciente destas rotinas de modo que as possa usar dentro de seus pr prios programas MeGAZINE Q 25 Detectando URLs no RichEdit Voc j deve ter visto esta caracter stica em outros softwares e desejou que sua aplica o fizesse isto tamb m Bem aqui est uma mat ria que realmente prender seus olhos Voc j deve ter notado que o Microsoft Word tem o reconhecimento de URLs Neste artigo vamos mostrar como criar esta caracter stica no componente RichEdit O RichEdit e a detec o da URL Se voc fizer uma pesquisa no seu computador pelos arquivos riched dll voc encontrar dois arquivos RICHED32 DLL e RICHED20 DLL que est o nos diret rios Ywindows system ou winntisystem32 dependo da vers o do seu Windows O arquivo RICHED32 DLL implementa as caracter sticas da vers o 1 0 e o RICHED20 DLL implementa uma nova caracter stica ao RichEdit O componente inclu do no Delphi n o tem a implementa o de detec o de URL Se voc olhar o c digo fonte do RichEdit comctris pas o Delphi ainda usa o RichEdit vers o 1 0 Isto triste porque o controle Microsoft RichEdit vers o 2 0 n o tem a detec o de URL e muitas outras caracter sticas Como podemos reconstru la N s temos esta tecnologia Portanto existe apenas uma coisa a fazer Refazer o controle baseado no novo RichEdit 2 0 Primeiro vamos copia
44. sta Response Content e enviando ao servidor que por sua vez envia ao celular Grave a unit do nosso projeto como un ola pas e o projeto como ola dpr Normalmente em aplica es desktop executamos atrav s da tecla F9 Run neste caso apenas iremos compilar a aplica o e execut la atrav s do nosso simulador Desk lt No Deck It digite o que segue na barra de endere os http localhost ola exe A figura 8 ilustra o resultado da nossa aplica o Liza its rem doc er r dh iaj PG In n Ler C mEL SLIL T M s DWE eE MTL a Tia L l 4 1 EESC T mi h a 1 LEE E rl akl rala i aj Figura 8 Resultado da aplica o J MeGAZINE S para ter uma id ia voc poderia simular em seu pr prio er celular WAP este exemplo Mas Facunte como eu faria isso Ia l mo a f Pia Epb mma myr ge hred ra a mm Herir Conecte seu computador a Internet anote o n mero do IP fornecido no momento da conex o exemplo 200 198 12 1 e digite no seu celular o modo de entrada para comunica o WAP varia de celular para celular consulte o seu manual de instru es o endere o http 200 198 12 1 ola exe Repare que o n mero na realidade o seu endere o de IP atual exemplo Continuando com a nossa aplica o vamos criar mais uma Action com as seguintes propriedades Figura 9 Segunda Action CENETO E interessante n o acham TwWebAchonttem Objeto Prop
45. tangle necessita armazenar dois tamanhos e TPolygon necessita armazenar muitos lados e v rtices No esquema apresentado acima n o nos interessa guardar dados pertinentes de uma forma Shape para a outra o que nos interessa termos uma Interface e uma Classe Base que armazena todos campos que fa am sentidos em todas as formas apresentadas Qual a solu o separar a heran a de Tipo Interfaces da Heran a de Classe como j citado type IShape interface 5C3AE4B8 B50E 44C6 A135 6FF00E44A270 procedure Draw Canvas TCanvas procedure SetPosition const Value TPoint function GetPosition TPoint property Position TPoint read GetPosition write DELPHI 4 SetPosition end IPolygon interface IShape ACB90E43 04E6 4A 7D A782 438B5C201E28 function NumVertices SmallInt function NumSides SmallInt function SetLenght const Index SmallInt TPoint function Vertex Index SmallInt TPoint end IRectangle interface IPolygon 31224B6F 4488 4280 BA93 7E5DDA71F2ED end ISquare interface IRectangle A7787A55 8066 458F A3D1 538E86DF8774 function Side SmallInt end TShapeBase class TInterfacedObject IShape private Private declarations FPosition TPoint function GetPosition TPoint procedure SetPosition const Value TPoint protected Protected declarations public Public declarations constructor Create override procedure Draw Canvas TC
46. ts O que fizemos acima foi delegar a implementa o da propriedade para a interface IMyIntf2 que est na diretiva implementation Quando temos tipos sub rotinas e ou vari veis nesta se o as mesmas s o privadas a essa unidade O c digo acima foi uma delega o para um tipo interface se o mesmo fosse um tipo de classe ter amos que tomar o seguinte cuidado O tempo de vida do objeto Para contornar as dores de cabe as que poder o vir temos que fazer com que o Getter crie um novo objeto toda vez que for chamado Se a sua declara o necessitar implementar mais de uma Interface separe as mesmas por virgula DELPHI Considera es finais e O Compilador do Delphi n o trata as interfaces por seu nome e sim pelo seu ID Voc pode passar o nome da Interface para o m todo Query Interface que o Delphi automaticamente transforma seu valor no ID da Interface e A Classe TObject tem dois m todos interessantes para o retorno de informa es nas Interfaces suportada pelo Objeto GetInterfaceTable e GetInterfaceEntry apenas saliento que a ltima voc raramente usar por que usada internamente pelo Delphi no m todo GetInterface O Incremento de refer ncia da Interface conseguido usando o operador as e com o m todo QueryInterface e A seguinte declara o faz com a interface herde de Interface IMy Intf interface a mesma an loga a TMyClass Class do qual a classe est send
47. vidores dedicados ao papel de firewall utilizando plataformas Windows Server ou Linux s isso Simples n o E mais um detalhe importante a sua aplica o escrita em Delphi e largamente testada no Oracle 8i n o precisar de nenhuma modifica o para estar compat vel com o Oracle 9i Se essa ainda uma de suas preocupa es constantes esque a o problema MeGAZINE 15 DataSnap Interfaces Parte HI Introdu o No artigo anterior foram demonstrados os principais padr es e protocolos existentes hoje no mercado que o DataSnap utiliza No artigo desse m s eu explicarei o que s o Interfaces Volto a frisar que usarei o Delphi 6 Update Pack 2 para realizar nossos exemplos e explica es em geral Interfaces A regra clara Uma Interface define um tipo que compreende m todos virtuais abstratos Uma classe Delphi padr o TMyClass class TObject tem de ser herdada apenas de uma classe por que o Delphi n o d suporte a M ltipla s Heran a s Interfaces existem para contornar esse problema falando em Programa o Orientada a Objeto e ainda trabalhar com Objetos Distribu dos As Interfaces foram implementadas no Delphi 3 justamente para o Delphi dar suporte ao padr o COM da Microsoft mas n o significa que temos de conhecer COM para usarmos Interfaces no Delphi Assim como todas classes Delphi no seu mais Baixo n vel herdam de TObject unit System pas todas as Interfaces herdam de
Download Pdf Manuals
Related Search
Related Contents
KALED24DVDWB User Manual Spanish IOM 1171/2171 JABRA STORM 電子式マルチメータ 取扱説明書 MANUAL DE INSTALACIÓN Y USO Bayer HealthCare CONTOUR Blood Glucose Meter and Ascensia CONTOURTM Test Strips User's Manual MFW Control Software取扱説明書:mfwcsmj 取扱説明書 UE-404083 - Psn KOHLER K-7307-K-CP Installation Guide Copyright © All rights reserved.
Failed to retrieve file