Boletim Pascal #35
Os exemplos do código fonte desta edição estão disponíveis para download.
![]() |
![]() |
Boletim Pascal #35 - MAIO-06-2002 ÍNDICE 1. ALGUMAS PALAVRAS DOS EDITORES 2. APLICATIVOS SEM VCL (II) 3. DESLIGANDO O PC NUM DIA/HORÁRIO NO WINDOWS NT/2000 4. FÓRUMS 5. DELPHI NA REDE - Componentes, Bibliotecas e Utilidades . Shareware/Comercial . Freeware - Artigos, Dicas e Truques . Kylix - Tutoriais ________________________________________________________________________ 1. ALGUMAS PALAVRAS DOS EDITORES Editorial da Versão em Português ================================ Olá Pessoal, Finalmente, depois de algumas semanas, chega o novo número do nosso Boletim Pascal. Gostaria de convidar, novamente, os interessados em participar do nosso Boletim a entrar em contato para submeter seus artigos, códigos, idéias, etc. E, como estamos apenas iniciando com a versão em português, peço a todos que gostarem do nível dos artigos do Boletim que divulguem para seus colegas, conhecidos e amigos. Estamos apenas começando com a versão em português e sua ajuda é imprescindível! Aproveito a oportunidade para chamá-los a visitar nossa página na web: * Boletim Pascal http://www.latiumsoftware.com/br/pascal/index.php E lembrem-se: vocês são os maiores responsáveis pelo sucesso de nosso boletim! Agora chega de conversa. Divirtam-se com nosso boletim! Demian Lessa demian@knowhow-online.com.br editor da versão em português __________________ Editorial da Versão em Inglês ============================= Gostaria de agradecer os autores pelos artigos contribuídos neste número e gostaria de premiar Roberto Martínez com a licença do SMImport, uma suite de componentes que permite a conversão de dados entre os formatos mais populares, fornecido por Scalabium: http://www.scalabium.com/smi/index.htm No próximo número um de nossos colaboradores será premiado com uma licença do Greatis Print Suite, um conjunto de componentes para impressão e visualização, fornecida por Greatis Software: http://www.greatis.com/printsuite.htm Nós também estamos promovendo uma competição para os dois primeiros artigos sobre Kylix que publicarmos. Os prêmios serão cópias do AnyShape Transpack para Kylix, por MindBlast Software: http://www.mindblastsoftware.com/ O que você acha do Delphi 6? Eu, pessoalmente, só ouvi coisas boas a seu respeito. E claro, a Borland faz um ótimo trabalho ao lançar versões estáveis de seus produtos- que já são muito bons. Contudo, depois de ter instalado e utilizado o Delphi 6 por alguns dias, só vejo uma boa razão para atualizar: a compatibilidade de código com o Kylix. Se você ainda não está certo se deve atualizar, meu conselho é: não atualize- a não ser que você faça parte de uma grande corporação. Para usuários amadores eu não acho que haja muitas novidades. Leia mais a respeito das novidades do Delphi 6 em: http://www.borland.com/delphi/del6/whatsnew.html Nosso site web passou por uma grande virada estética e agora tem um novo visual. O novo desenho foi trabalho de Renato Gaiarsa <renato@knowhow- online.com.br>. Por favor, dêem uma olhada e não esqueçam de avisar se virem qualquer problema: http://www.latiumsoftware.com/en/index.php Não esqueçam, graças a Demian Lessa agora temos uma edição em português: Último número: http://www.latiumsoftware.com/br/pascal/0034.php Assinatura: http://groups.yahoo.com/group/boletim-pascal/join boletim-pascal-subscribe@yahoogrupos.com.br Agora aos artigos... Charl Linssen pascal-newsletter-owner@yahoogroups.com __________________ Colaboradores: José Manuel Rodríguez, Roberto Martínez, Dave Murray. ________________________________________________________________________ JfControls Library. Multi-language. Multi-appearance. Skins. Privileges. More than 40 integrated and customizable components. Impressive GUI. Centralised resources administration. Multiple programming problems solved. For Delphi 3-6 and C++ Builder 3-5. http://www.jfactivesoft.com/ ________________________________________________________________________ 2. APLICATIVOS SEM VCL (II) Por José Manuel Rodríguez (JMR) Copyright: JMR, Madrid 1998/1999 No artigo passado, nós abordamos a redução do tamanho dos executáveis através da utilização de uma unidade que, além de estender o conjunto disponível de diálogos fornecidos pela VCL, podiam ser utilizados de forma independente da VCL, permitindo a criação de executáveis muito menores. Contudo, a variedade de aplicativos que poderiam ser criados utilizando apenas os diálogos da APIDlgs sem utilizar também a VCL era bastante limitada... alguns tipos de aplicativos bem previsíveis, outros com diálogos comuns e, na maioria, DLLs ou aplicativos que rodavam de forma oculta na maior parte do seu tempo de execução e que, de tempos em tempos, mostrava ou coletava alguma informação do usuário. Nesse artigo iremos adiante, estendendo de forma razoável a variedade de aplicativos que poderão ser desenvolvidos sem as facilidades da VCL. A idéia é desenvolver um objeto que encapsule totalmente uma aplicação. A aplicação encapsulada dessa forma será sempre uma mini aplicação, claro, mas totalmente funcional, com menus, dicas, possibilidade de responder às mensagens do Windows ou mesmo mensagens definidas por nós mesmos, etc. Se cada vez que precisarmos exibir ou coletar informações usarmos a APIDlgs, então, em conjunto com a APIApp, será possível desenvolver um extenso conjunto de programas sem a necessidade de utilizar a VCL, em média 10% menores que seus equivalentes VCL, ainda que o valor exato da redução seja naturalmente difícil de estimar. Descrição ========= A unidade APIApp contém, basicamente, o objeto TTinyApp (não atrapalhe com um componente) que oferece total funcionalidade para a geração instantânea um aplicativo completo, de forma não visual. Aplicativos desse tipo são exibidos como um ícone na bandeja da barra de tarefas, têm seu próprio menu popup associado a ações definidas por nós mesmos e, adicionalmente, podem processar mensagens do Windows ou mensagens definidas pelo usuário. Será possível, a qualquer tempo, acrescentar novas opções ao menu, redefini-lo totalmente, alterar o ícone na bandeja, etc. Veremos dois possíveis usos: a) Suponha que tenhamos um aplicativo convencional que queremos monitorar. O aplicativo pode ser um executável normal, uma DLL padrão, uma DLL ISAPI, qualquer coisa... pode ser, inclusive, que várias instâncias do aplicativo estejam rodando simultaneamente e estamos interessados em saber quando o aplicativo recebe comandos do usuário (por exemplo, um cliente HTTP solicitou certas linhas de uma tabela a um servidor Web onde nosso ISAPI é executado e o aplicativo já abriu um arquivo 100 vezes, etc). Então, temos apenas que definir nossas mensagens de forma que quando algum desses eventos ocorra, nós os enviemos acompanhados do 'handle' de nossa janela principal no WParam. Em seguida, criamos nossa aplicação com descendente de TTinyApp e fazemos com que ela reaja a essas mensagens (exibindo a mensagem numa janela e criando um arquivo de log se necessário, etc). Uma vez iniciado o aplicativo TinyApp, seremos informados a qualquer momento de onde e quando a mensagem chegou... b) Já que temos nosso próprio menu, qualquer aplicativo que não precise de uma interface gráfica sofisticada pode aderir a nosso modelo: programas para modificar configurações do Windows ou outro aplicativos, cálculos matemáticos, programas de diagnóstico, etc. Obviamente, grande parte dos aplicativos mais complexos está fora do alcance da APIApp, mas há sempre situações em que se uso pode ser considerado, especialmente em aplicativos complementares. Funcionamento ============= APIApp é totalmente baseado no objeto TTinyApp e por isso tem todas as vantagens da OOP sem a sobrecarga de memória e recursos imposta pela utilização de componentes. Claro, a vantagem do desenvolvimento visual é perdida; ainda assim, seu uso continua sendo bastante simples. De fato, não há qualquer necessidade de conhecer OOP para desfrutar do máximo de sua performance. MÉTODOS PUBLICOS Os métodos públicos são: constructor Create(cAppName, cIconName: String; MainProc: TMainProc); virtual; procedure AddUserMsg(MsgID: Integer; MsgAction: TMsgProc); procedure AddMenuOption(OptionStr: String; OptionID: Integer; OptionAction: TOptionProc); procedure SetNewIcon(const cIconName: String); procedure ResetMenu; procedure Execute; procedure Free; Create ------ constructor Create(cAppName, cIconName: String; MainProc: TMainProc); virtual; Cria um novo objeto TTinyApp. Os parâmetros são: - cAppName: Nome interno do aplicativo e que é exibido no tooltip quando o mouse passa por sobre o ícone. Se um valor em branco for passado, a dica (tooltip) não será exibida. - cIconName: Nome do recurso de ícone que será exibido na bandeja. O nome deve estar em maiúsculas e deve corresponder ao nome do ícone incluído como recurso no aplicativo (diretiva $R). Se um valor em branco for passado ou se o nome não corresponder a um dos recursos do executável, então o ícone padrão será utilizado. - MainProc: O nome de um procedimento TMainProc. TMainProc = procedure(var Msg: TMessage); Os valores do parâmetro MainProc podem ser nil ou um procedimento que será chamado automaticamente pelo TTinyApp quando o ícone da bandeja for clicado. Não deve ser chamado diretamente e receberá uma mensagem do Windows como parâmetro. AddMenuOption ------------- procedure AddMenuOption(OptionStr: String; OptionID: Integer; OptionAction: TOptionProc); Quando um objeto TTinyApp é criado, um menu de popup é associado ao objeto com uma única opção, "Exit", que finaliza o aplicativo. Esse método permite acrescentar outras opções ao menu de popup do aplicativo. Os parâmetros são: - OptionStr: O título do novo item de menu. - OptionID: Um identificador numérico para o item de menu que deve ser único, mas que pode ser qualquer número a partir de ID_USERFREE. - OptionAction: É o procedimento do tipo TMainProc (descrito acima). Esse procedimento receberá será executado sempre que o usuário clicar em algum dos itens de menu. AddUserMsg ---------- procedure AddUserMsg(MsgID: Integer; MsgAction: TMsgProc); Quando um objeto TTinyApp é criado, ele cria uma janela oculta para a qual um procedimento de janela é associado para manipular mensagens específicas que a janela recebe, deixando as demais mensagens serem encaminhadas para o manipulador padrão do Windows. Obviamente, sendo uma janela oculta, mensagens como WM_PAINT e WM_NCHITTEST nunca serão recebidas; outras mensagens como WM_ACTIVATE e WM_CLOSE e as mensagens definidas pelo programador serão recebidas. Ao chamar essa função devemos especificar procedimentos que funcionarão como manipulardores de janelas para as mensagens que estamos interessados em processar. Os parâmetros são: - MsgID: Identificador da mensagem. Pode ser uma mensagem do Windows (como WM_CLOSE) ou uma mensagem definida pelo usuário (iniciando a partir de WM_USERFREE). - MsgAction: O nome de um procedimento do tipo TMsgProc. Esse tipo é totalmente análogo ao tipo TMessageEvent da VCL e utilizado por Application.OnMessage mas que aqui é apenas um procedimento e não um método (procedure of object) como na VCL. Os parâmetros de entrada são exatamente os mesmos: Msg é uma estrutura do tipo TMessage e Handled é uma variável passada por referência que pode ser atribuída o valor True para impedir que a mensagem seja processada pelo Windows. SetNewIcon ---------- procedure SetNewIcon(const cIconName: String); Permite alterar o ícone exibido na bandeja da barra de ferramentas, mesmo durante a execução do aplicativo. Será exibido ativo ou inativo de acordo com o estado do aplicativo. Parâmetro: - cIconName: Nome do ícone que representa o recurso a ser exibido na bandeja. O nome deve estar em maiúsculas e representar o nome de um ícone incluído como recurso no aplicativo (com a diretiva $R). Se um valor vazio for passado ou se o nome do ícone não corresponder a um recurso existente no executável, o ícone padrão será utilizado. ResetMenu --------- procedure ResetMenu; Permite a exclusão de todas as opções do menu popup e suas respectivas ações, exceto pela opção "Exit", que é necessária para a finalização do aplicativo. Execute ------- procedure Execute; Inicia a aplicação. Quando esse método é chamado, o ícone é exibido na bandeja da barra de tarefas e o aplicativo entra na rotina de tratamento de mensagens até que a mensagem WM_QUIT seja recebida. Uma vez fora da rotina de tratamento de mensagens, o aplicativo termina, mas o objeto não é destruído (isso permite chamar Execute repetidas vezes). Free ---- procedure Free; Destrói o objeto e libera toda a memória reservada. É necessário chamar esse método quando for preciso finalizar o uso de TTinyApp. PROPRIEDADES PÚBLICAS As propriedades públicas são: property Enabled: Boolean read FEnabled write SetEnabled; property Wnd: THandle read FMainWnd; - Enabled: Leitura/Escrita. Permite determinar o estado do TTinyApp, ativar ou desativar sua execução. Quando o TTinyApp é desativado, ele não recebe mensagens do usuário; assim, o menu popup não será exibido, nem as ações a ele associadas serão executadas através da janela invisível, apesar dela ainda continuar recebendo as mensagens. É útil desativar o aplicativo quando uma opção de menu foi selecionada e a ação correspondente executada; assim, fica impedida a execução da opção repetidas vezes. - Wnd: Somente leitura. O Handle da janela principal (oculta) do TTinyApp. Iniciando ========= O uso do APIApp é simples, confortável e intuitivo. Normalmente, é suficiente criar um objeto TTinyApp, acrescentar algumas opções de menu e chamar seu método Execute, seguido de um Free: var MyApp: TTinyApp; begin MyApp := TTinyApp.Create('Meu programa', '', nil); try MyApp.AddMenuOption('&Sobre...', ID_USERFREE + 1, ShowAbout); MyApp.AddMenuOption('Con&figurar', ID_USERFREE + 2, AppConfig); ...... MyApp.Execute; finally MyApp.Free; end; end. Veja o exemplo TestTiny para uma demonstração completa (apenas para fins de demonstração- sem uso prático). Comentários =========== a) Essa unidade só funcionará em ambientes Win32. Foi testada com o Delphi 3 mas não há motivos para não funcionar com o Delphi 2, o Delphi 4 e superiores. b) Como a primeira parte, todo o código incluído foi originalmente desenvolvido por seu autor, Jose Manuel Rodriguez, mas devo, uma vez mais agradecer as sugestões e comentários de Jose Luis Freire, Miguel Oliver Angel <maoliver@balearcom.es> e Nicolás Aragón <doperider@arrakis.es>, em especial ao último já que a implementação é idéia sua. Além dos autores mencionados na parte anterior, gostaria de agradecer aos muitos autores dos utilitários do tipo TrayIcon que podem ser encontrados na Internet. d) Essa unidade pode ser utilizada livremente em programas compilados sem quaisquer restrições mas, se você utilizá-la, serei grato se você mencionar o autor nos créditos de seu programa. Se for distribuído como código fonte, todo o conjunto deve ser distribuído, sem cobrança, com todos os arquivos na íntegra, inclusive as notas de copyright. Quaisquer sugestões, correções ou críticas (construtivas, é claro) serão bem vindas. José Manuel Rodríguez <jmr@clubdelphi.com> __________________ NOTA: Os exemplos apresentados fazem uso da unidade APIDlgs apresentada na primeira parte desse artigo e publicada no último número; pode ser baixada em: http://www.latiumsoftware.com/br/pascal/p0034.zip ________________________________________________________________________ 3. DESLIGANDO O PC NUM DIA/HORÁRIO NO WINDOWS NT/2000 Por Roberto Martínez O. <rmartinez@ieqsa.com.mx> O programa Timer que você encontra em anexo permite que você defina um dia e hora para desligar um PC rodando o Windows 2000 ou NT. O programa é útil quando se deseja rodar um processo, mas não se pode esperar até sua conclusão para desligar o PC; assim, basta programar o desligamente do PC para o dia e hora desejados e pronto. O programa encarrega-se de desligar o PC. O programa é do tipo "SystemTray", copiado de um exemplo dado por Ernesto De Spirito e que pode ser encontrado na seção Delphi Tricks do site web Latium Software; a esse projeto foi adicionado um componente TTimer e a rotina que força o PC a ser desligado. NOTA: Esse programa só executará corretamente num PC com uma placa mãe que permite o sistema operacional desligar o PC. De outra forma, o Windows terminará, mas o PC não será desligado. ________________________________________________________________________ 4. FÓRUMS Delphi (em Protuguês) ===================== Se você quer juntar-se ao grupo, a melhor forma é assinar a partir da web, uma vez que pode acessar as funcionalidades especiais disponíveis no site web (um ID Yahoo! é necessário; você pode obter um gratuitamente registrando-se como um usuário Yahoo!) mas, se você não quer registrar-se ou se não possui acesso Internet completo, você também pode assinar por email: http://br.groups.yahoo.com/group/delphi-br/join delphi-br-subscribe@yahoogrupos.com.br Componentes (em Inglês) ======================= Esse é um fórum para pesquisa/recomendação de componentes de software (componetes VCL e CLX, objetos ActiveX, DLLs, SOs, etc.), assim como utilitários, tutoriais, informações, etc. O fórum é novo e tem cerca de 160 membros e tráfego muito baixo: http://groups.yahoo.com/group/components/ Conto com sua participação no fórum para nos ajudar a crescer. Você pode assinar pela web ou, mais facilmente, por e-mail: http://groups.yahoo.com/group/components/join components-subscribe@yahoogroups.com Desenvolvedores de Software (em Inglês) ======================================= Esse é um fórum para discussões sobre o desenvolvimento de software e para a troca de experiências de trabalho em ambientes profissionais e comerciais. Esse não é um fórum sobre programação; os assuntos abordados são mais gerais e independentes de linguagem de programação. O fórum é novo e tem cerca de 160 membros e tráfego muito baixo: http://groups.yahoo.com/group/software-developers Conto com sua participação no fórum para nos ajudar a crescer. Você pode assinar pela web ou, mais facilmente, por e-mail: http://groups.yahoo.com/group/software-developers/join software-developers-subscribe@yahoogroups.com ________________________________________________________________________ 5. DELPHI NA REDE Por Dave Murray Componentes, Bibliotecas e Utilitários ====================================== Shareware/Comercial -------------------- * AnyShape Transpack v2.0 - by MindBlast Software (DELPHI + KYLIX) Tired of boring, rectangular windows? Welcome to the exciting world of transparent, weirdly shaped windows! Simply drop a few components on a form, change a few properties - and voila! Features: WYSIWYG editing, design-time preview, automatic dragging, REAL stay-on-top forms, combine regions and load/save regions from file. Shareware, $30.00. http://www.mindblastsoftware.com/?page=transpack&ref=PascalNL Freeware -------- * TyEncoder v0.1.1 - by Steve Blinch, FREEWARE + source (DELPHI + KYLIX) A component to encode yEnc format file attachments for newsgroup messages. Includes example Delphi + Kylix projects and documentation. http://www.yenc32.com/developers/ * TyDecoder v0.1.1 - by Steve Blinch, FREEWARE + source (DELPHI + KYLIX) A component to decode yEnc format file attachments from newsgroup messages. Includes example Delphi + Kylix projects and documentation. http://www.yenc32.com/developers/ * Vortex IRC v2.0 - by JoepezT, FREEWARE with source (DELPHI + KYLIX) OpenSource IRC component with an internal IdentD server. http://www.berzerk.net * DirMonitor v1.1 - by Juan Carlos Molinos Mesa, FREEWARE with source Windows API based component for monitoring changes in specified local or remote folder. Monitored Events: Create, Modify, Change, Delete, Rename, Security changes. http://www.torry.net/vcl/filedrv/notification/jcmmdirmonitor.zip * TscExcelExport v2.8 - by Stefan Cruysberghs, FREEWARE with source Export all records of dataset to MS Excel 97, 2000 or XP. http://www.stefancr.yucom.be * Advanced Patch Engine v6.0 - by William Anthony, FREEWARE Using the new HybridGRAF XA Technology Controls. New features include: XP ready Controls, new locking system, smaller size Program + Modules. http://www.torry.net/toolscw.htm * TPowerPoint v1.2 - by Heiko Groschupp, FREEWARE with source Component to control Microsoft Powerpoint via OLE automation. http://hgroshupp.guertler.de * SerialNG v1.0.7 - by Ekkehard Domning, FREEWARE with source Enables an Application to communicate through the serial ports using only WinAPI and Delphi functions. Features: one Thread for send and receive, uses "Overlapped" for all R/W access, control of Timeout, control of Linestates, simple implementation. http://www.domis.de/serialng.htm * HTTPD Component v0.9 - by Swifty, FREEWARE HTTP/1.1 compliant Server component. http://dlux.sch.bme.hu/~swifty * TSysInfoCtrls v1.0 - by Simone Cicco Di, FREEWARE Component/unit to provide some System information: UserName, CompanyName, Computer Name, Date, CPU Vendor + Identifier, Resolution, Windows Version, DirectX Version, Serial Ports, Adapter Type, Printer, Win Product Key, Config Path, Program Directory + System Root, etc. http://www.devresource.net * FindComp v1.2 - by Dimka Maslov, FREEWARE with source A unit that lists computers and workgroups in a LAN, can obtain their IP addresses and enumerate shared network resources. http://endimus.com * DIMime v1.6 - by Ralf Junker, FREEWARE with source A fast MIME (Base64) Encoder and Decoder. Both MimeEncode + MimeDecode have a straightforward, flexible interface making them easy to use with buffers, strings and all other types you can imagine. http://www.zeitungsjunge.de/delphi * GDIPLUS v1.0 - by Henri Gourvest, FREEWARE with source GDI+ is a new graphics subsystem for Windows and provides a new set of graphics APIs for rendering 2D graphics, images and text. GDI+ is the only API for drawing in the .NET Framework, but in Delphi it is a complement to the GDI providing more advanced rendering capabilities. http://www.progdigy.com * RichView XML v1.0 - by Jiè Banzet, FREEWARE w. source A TRichView addition for saving XML, has its own DTD for effective saving of all content (bullets, hotspots, controls, tables, etc). http://www.torry.net/vcl/edits/rich/richviewxmlexe.zip * ShellPlus Components - by ShellPlus Development Group, FREEWARE With Shell+ you can easy develop your own Shell Extensions. http://www.swissdelphicenter.ch/en/download.php?id=220&kat=komponenten * TFileMonitor - by Winston Kotzan, FREEWARE Monitors a directory for changes, signalling an event. http://www.swissdelphicenter.ch/en/download.php?id=173&kat=komponenten * Glyph Collection - by Thomas Greiner, FREEWARE 5,700 Bitmap glyphs (32x32) extracted from all kinds of applications. http://www.swissdelphicenter.ch/en/download.php?id=8&kat=icons Artigos, Dicas e Truques ======================== * Delphi.NET previewed at SD West - by Anders Ohlsson Borland also received the coolest award ever - Jolt Hall of Fame! http://community.borland.com/article/0,1410,28649,00.html * Where in the World is Sven Svensson? - by Anders Ohlsson Web service consumption and XML transforms made easy. http://community.borland.com/article/0,1410,28646,00.html * Delphi 6 Web App Debugger: A solution that works - by Bob Swart Delphi is a great tool for writing Web server applications but debugging those applications is difficult, to say the least. No solution was available that satisfied every developer until Delphi 6 introduced Web App Debugger. Let's take a look at how you can access this executable and use it to debug your Web server applications. http://builder.com.com/article.jhtml?id=u00220020501swa01.htm&fromtm=e057 * Easy + powerfull AutoComplete Search in TListBox - Mohammad B Mamouri http://www.delphi3000.com/articles/article_3200.asp * How to create a Multilingual Program - by Manfred Suesens Display all charsets of the world. http://www.delphi3000.com/articles/article_3203.asp * ISAPI Filter Header Files - by Daniel Wischnewski A complete Translation of the HttpFilt.h. http://www.delphi3000.com/articles/article_3205.asp * Exporting Grid to Word without OLE or Components - Eugene Kuchugurov How to save objects to Word compatible format (RTF). http://www.delphi3000.com/articles/article_3208.asp * Simple high performance 3-tier apps with Indy and ADO - by aka aka Now it's easy to create simple high performance middleware apps with Indy and ADO (thanks to OLE-DB resource poooling). http://www.delphi3000.com/articles/article_3209.asp * String Grid to HTML file - Mike Heydon StrGridToHTML() function. http://www.delphi3000.com/articles/article_3212.asp * From resources to TWebBrowser - by Christian Cristofori Ever wanted to do your own exe containing HTML pages? This article lets you easily manage HTML files included in your EXE as resources loaded into a TWebBrowser. http://www.delphi3000.com/articles/article_3213.asp * How to validate a float number? - by Thomas Stutz http://www.swissdelphicenter.ch/torry/showcode.php?id=1128 * How to get the ODBC datasource names? - by Grinder http://www.swissdelphicenter.ch/torry/showcode.php?id=1131 * How to extract the filename of an URL? - by Rainer Kümmerle http://www.swissdelphicenter.ch/torry/showcode.php?id=1134 * Make your own WinAmp with Delphi - by Zarko Gajic How to build an mp3 player with Delphi and get the ID3 tag info. http://delphi.about.com/library/weekly/aa112800a.htm * Making TabControls work on XP with Delphi 4 - by John W. Long Matteo Riso posted an solution for creating transparent Tabsheets in article http://www.delphi3000.com/articles/article_2843.asp, but it does not work for Delphi 4. This article is the solution. http://www.delphi3000.com/articles/article_3168.asp * Simple context-sensitive help - by Herman van der Hoek http://www.delphi3000.com/articles/article_3169.asp * How to receive session switch notifications (XP)? Thomas Stutz How to receive the WM_WTSSESSION_CHANGE message. http://www.delphi3000.com/articles/article_3171.asp * Download a file from a FTP Server - by Thomas Stutz The functions from wininet.dll are used. http://www.delphi3000.com/articles/article_3172.asp * Personal settings and the windows registry - by Teun Spaans What settings to store in the registry and how to do so? http://www.delphi3000.com/articles/article_3173.asp * A Nice Flat Coloured button used as a TButton replacement - by S Moss http://www.delphi3000.com/articles/article_3174.asp * Line in RichEdit - by Maarten de Haan How to get a margin line in a RichEdit just like in the Delphi editor? http://www.delphi3000.com/articles/article_3175.asp * Reconnecting to network shares - by Vassilis Perantzakis Ever lost a networked share and didn't know how to connect to it? This component can search the network for a specific share containing a file or a directory and automatically reconnect to it. http://www.delphi3000.com/articles/article_3176.asp * Getting debug information runtime - by Igor Kurilov Converting an exception address into a source line number and function public name using the Map-file. http://www.delphi3000.com/articles/article_3178.asp * Top Picks - Help Authoring Tools - by Zarko Gajic Documentation and the help system is essential when users are working with your applications. These tools help you create manuals in PDF, HTML, HTML Help, Windows Help and RTF formats. http://delphi.about.com/library/toppicks/aatphelp.htm * Build Your Own Compiler: Part I - by Fernando Vicaria Demystifies compilers by the straightforward approach of showing how to build one with Delphi and keeps jargon and formalism to a minimum. http://www.delphimag.com/features/2002/04/di200204fv_f/ di200204fv_f.asp * Storing Sounds and Graphics for Quick Retrieval - by Paul Qualls How to add pictures and sounds to a DLL from writing the run-control script and compiling the resource file to creating the DLL and hooking it up to an application. http://www.delphimag.com/features/2002/05/di200205pq_f/ di200205pq_f.asp * Interview with Marco Cantu - by SwissDelphiCenter http://www.swissdelphicenter.ch/en/marcocantu.php * How to add data manually to a tree view, from a Texteditor? http://www.swissdelphicenter.ch/en/showcode.php?id=857 * How to Draw the Mandelbrot Fractal? http://www.swissdelphicenter.ch/en/showcode.php?id=1107 * How to sort a TListView using the CustomSort method? http://www.swissdelphicenter.ch/en/showcode.php?id=1103 * How to enumerate all TForms of a Project? http://www.swissdelphicenter.ch/en/showcode.php?id=1104 * How to print only the selected Text of TRichedit? http://www.swissdelphicenter.ch/en/showcode.php?id=1105 * How to trap Windows Messages in a Component? http://www.swissdelphicenter.ch/en/showcode.php?id=1101 * How to change a TButton's Color? http://www.swissdelphicenter.ch/en/showcode.php?id=1100 * How to list all properties, events of a component? http://www.swissdelphicenter.ch/en/showcode.php?id=1084 * How to load HTML code directly into a TWebbrowser? http://www.swissdelphicenter.ch/en/showcode.php?id=1096 * How to show the windows recycle bin? http://www.swissdelphicenter.ch/en/showcode.php?id=1098 * Display DBNavigator's Buttons' caption - by Robert Zxg Defines a new class as a descendant of TDBNavigator and assigns captions to navigation buttons. http://www.delphi3000.com/articles/article_3145.asp * File Splitter - by Prashant Gulati Split and join large files. http://www.delphi3000.com/articles/article_3146.asp * URL Parsing class - by Arni Halldorsson http://www.delphi3000.com/articles/article_3147.asp * Remote port scanner - by Eber Irigoyen http://www.delphi3000.com/articles/article_3148.asp * COM/OLE Object Name Utility Procedure - by Mike Heydon Enables you to browse a list of Registered GUID classes from HKEY_LOCAL_MACHINE\Software\Classes\CLSID. The object name is the name as used by Delphi function "CreateOleObject('Outlook.Application')". http://www.delphi3000.com/articles/article_3149.asp * Building a Fractal Generator - by Max Kleiner A Fractal Library for Science, Chaos and Financials. http://www.delphi3000.com/articles/article_3150.asp * Streaming Variant Arrays (to memory, tcpip, file) - by Matt Harrison http://www.delphi3000.com/articles/article_3151.asp * Create Outlook Exchange Profiles automatically - by Jason Goff http://www.delphi3000.com/articles/article_3152.asp * Get notified: CD in/out - by Eber Irigoyen Need to know when the user inserts/extracts a CD? http://www.delphi3000.com/articles/article_3153.asp * Call ISAPI DLL from application - Kattous Ktates How to call ISAPI DLL from application using GET method. http://www.delphi3000.com/articles/article_3155.asp * Using Microsoft Index Server from Delphi - by Massimo Brini How to search MS Index Server and show the results like a dataset and some considerations on the use & misuse of this technology. http://www.delphi3000.com/articles/article_3157.asp * Draw a tiled image on MDI parent form - by Mohammad Baqer Mamouri http://www.delphi3000.com/articles/article_3158.asp * mySQL doesn't sort Arabic character correctly, unless.. - by W Alsayer http://www.delphi3000.com/articles/article_3160.asp * How to draw an underline on a Listview Caption - by Alex Van Der Vliet http://www.delphi3000.com/articles/article_3163.asp * ProgressBar Different Color - by Alain Gosselin How to change the foreground color of a ProgressBar? http://www.delphi3000.com/articles/article_3165.asp * Using Remote Execute Function (Unix REXEC) from Delphi - Mike Heydon http://www.delphi3000.com/articles/article_3166.asp * Web Service Workshop with Remote Data Storing - by Max Kleiner Borland VCLScanner explained step by step. How do you automatically transfer scanned client-data with a web service from a client to a database server or a file and store it? http://www.delphi3000.com/articles/article_3167.asp * Top Picks: Mobile/Handheld Tools - by Zarko Gajic Looking for a tool to help you code for handheld devices with Delphi? Look no further, this page presents Delphi components and Delphi-like handheld computing focused development tools. http://delphi.about.com/library/toppicks/aatpmobile.htm * Minimize DLL Hell and Get the Windows XP Look - by Bruno Sonnino Introduces side-by assemblies, Microsoft's response to DLL Hell. With them you can use multiple versions of a DLL without wreaking havoc and achieve the Windows XP look. http://www.delphimag.com/features/2002/05/di200205bs_f/ di200205bs_f.asp * Protect your software - by Mike Shkolnik, Scalabium Tips and recommendations, also available in PDF format. http://www.scalabium.com/articles/protection.htm * ID generation strategies - by Mike Shkolnik, Scalabium Describes different methods of generating a unique identifier or key to identify a database record. http://www.scalabium.com/articles/id_generation.htm * Discussion about Application Interface - by Mike Shkolnik, Scalabium Shows common mistakes in interface building and a few standard schemas which are useful for end-users. http://www.scalabium.com/articles/app_interface.htm * Add MS Index Server Search capabilities to your App - by Kirill Plugin Administering MS Index Server and executing full-text search queries. http://www.delphi3000.com/articles/article_3179.asp * Creditcard number validation - by Ronald Buster http://www.delphi3000.com/articles/article_3180.asp * Transfering data from one database to another - by Gabhan O http://www.delphi3000.com/articles/article_3182.asp * Distributable COM Objects on Remote Machines - by Mike Heydon http://www.delphi3000.com/articles/article_3184.asp * Creating Catalogs on Microsoft Index Server - by Luiz Marques http://www.delphi3000.com/articles/article_3189.asp * Exception Framework to log complete traverse info - by S R Nandakumar http://www.delphi3000.com/articles/article_3191.asp * Component templates - by Eber Irigoyen http://www.delphi3000.com/articles/article_3195.asp * Converting Text for different Code Pages - by Daniel Wischnewski Using the MS Multi Language Library from the MSIE 4.0+. http://www.delphi3000.com/articles/article_3198.asp Tutoriais ========= * Matlus - The Delphi Apostle This site contains extensive tutorials on Web Services, ISAPI, ASP and TCP/IP. Run on a home broadband connection and uses Delphi ISAPI DLLs to generate dynamic content from Interbase and Access. http://www.matlus.com/scripts/website.dll * A journey through the Delphi IDE - by Zarko Gajic A Beginner's Guide to Delphi Programming: Chapter 2. http://delphi.about.com/library/weekly/aa020202a.htm * Remedial XML for programmers: Basic syntax - by Lamont Adams Maybe you've been stranded on a desert island hiding in a cave or avoiding all "Web stuff." Whatever reason, you're lacking XML savvy and want to remedy the situation. This first instalment in a 3-part series introduces XML and its basic syntax. http://builder.com.com/ article.jhtml?id=u00220020327adm01.htm&page=1&vf=tt * Remedial XML: Enforcing document formats with DTDs - by Lamont Adams Still playing catch-up when it comes to XML? No sweat, this XML tutorial continues with an introduction to DTDs. http://builder.com.com/ article_guest.jhtml?id=u00220020401adm01.htm&fromtm=e046 * Remedial XML: Using XML Schema - by Lamont Adams One way of enforcing structural requirements for an XML document is by using a document type description (DTD). This article touches on the shortcomings of DTDs and discusses the basics of a newer, more powerful standard: XML Schemas. http://builder.com.com/ article_guest.jhtml?id=u00320020418adm01.htm&fromtm=e601 * Resolve conflicts with XML namespaces - by Brian Schaffner Using XML to define your business data can be difficult when you have overlapping departments & redundant data definitions. XML namespaces can help resolve conflicts between element names. http://builder.com.com/article.jhtml?id=u00820020218sch01.htm&vf=tt * Introduction to XSLT - by Jason Monberg & Mike Wynholds Extensible Stylesheet Language (XSL) consists of 3 languages for converting XML documents into other formats. XSL Formatting Objects (XML FO) describes visual formatting, while XPath accesses specific parts of an XML document. But XSL Transformations (XSLT) is the language for actually converting from one XML format into another. http://builder.com.com/article.jhtml?id=u00120010910gcn01.htm&vf=ra * Advanced SQL with Joins - by TechRepublic SQL joins are a powerful tool for any database developer. There are various types of joins but using the correct approach requires knowledge. This article will help you put joins to work. http://clickthru.online.com/Click?q=48-ggFbIdBVysa6yBwXlfgj1FbSnFeR * Essential Delphi - by Marco Cantu Free Ebook! http://www.marcocantu.com/edelphi/default.htm * Kylix 2 BizSnap - by Bob Swart http://www.drbob42.com/kylix/ Outros Links ============ * Delphi Prefix Registry Ensure that your component names do not clash with someone else's by choosing and registering a unique prefix with DPR. We've featured this site before but I thought it important enough to list again. http://www.delphiprefixregistry.net/ * INDUG A forum for Delphi developers in India. It's a big group with over 380 members and during April had traffic of over 140 messages. Membership is open to developers of all levels and the group is unmoderated. All messages are posted in English. http://groups.yahoo.com/group/indug ________________________________________________________________________ VOCÊ PODE NOS AJUDAR Nós precisamos de sua ajuda para manter esse boletim ativo e cada vez maior. Você pode ajudar indicando o boletim a seus amigos e colegas: http://www.latiumsoftware.com/br/pascal/index.php Você também pode votar para nós em um ou todos esses rankings para dar maior visibilidade a nosso site e assim aumentar o número de assinantes do boletim: http://www.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium http://news.optimax.com/delphi/links/links.exe/click?id=70C517ECAE6E http://www.programmingpages.com/?r=latiumsoftwarecomenpascal http://www.top219.org/cgi-bin/vote.cgi?delphi&83 http://top100borland.com/in.php?who=20 http://top200.jazarsoft.com/delphi/rank.php3?id=latium http://213.65.224.200/cgi-bin/toplist.cgi/hits?Id=80 São alguns segundos para você que REALMENTE significam muito para nós. Não esqueça que também precisamos de artigos para os boletins e que existe um prêmio para um dos autores em cada número (em inglês). Todos os artigos serão considerados mas nós estamos particularmente interessados em artigos sobre Kylix já que existe pouco material disponível online. * Envie seu artigo em inglês para pascal-newsletter-owner@yahoogroups.com * Envie seu artigo em português para boletim-pascal-owner@yahoogrupos.com.br ________________________________________________________________________ Se você não recebeu o código fonte completo dos exemplos neste número, você pode obtê-los em http://www.latiumsoftware.com/br/pascal/p0035.zip ________________________________________________________________________ Esse boletim é fornecido "COMO ESTÁ" sem garantias de qualquer tipo. Seu uso implica na aceitação dos termos de licença e isenção de garantia que podem ser lidos em http://www.latiumsoftware.com/br/pascal/index.php Os artigos são propriedade e copyright de seus respectivos autores e foram reproduzidos aqui com sua permissão. Você pode redistribuir esse boletim desde que na sua íntegra (incluindo notas de propriedade e copyright), sem alterações e de forma gratuita. ________________________________________________________________________ Página do grupo:.....: http://br.groups.yahoo.com/group/boletim-pascal/ Assinar..............: boletim-pascal-subscribe@yahoogrupos.com.br Cancelar assinatura..: boletim-pascal-unsubscribe@yahoogrupos.com.br Assinar/cancelar.....: http://groups.yahoo.com/group/boletim-pascal/join Problemas com sua assinatura? boletim-pascal-owner@yahoogrupos.com.br ________________________________________________________________________ Boletim Pascal http://www.latiumsoftware.com/br/pascal/index.php Copyright (c) 2002 por Ernesto De Spirito. Todos os direitos reservados. ________________________________________________________________________ |
Os exemplos do código fonte desta edição estão disponíveis para download.
![]() |
Erros? Omissões? Comentários? Por favor contate-nos!






