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/delphicb/printsuite/
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://tech.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://tech.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://tech.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.scip.be/index.php?Page=ComponentsExcelExport
* 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/tools/install/upgrade/apesetup.exe
* 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.trichview.com/resources/xml/
* 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/od/beginners/a/delphicourse.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://articles.techrepublic.com.com/5100-10878_11-1044820.html
* 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://articles.techrepublic.com.com/5100-10878_11-1044974.html
* 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.programmingpages.com/?r=latiumsoftwarecomenpascal
http://top100borland.com/in.php?who=20
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.
________________________________________________________________________
|