Pascal Newsletter #35 - 06-MAY-2002
INDEX
1. A FEW WORDS FROM THE EDITOR
2. APPLICATIONS WITHOUT VCL (and II)
3. SHUTTING DOWN THE PC AT A GIVEN DATE/TIME UNDER WINDOWS NT/2000
4. FORUMS
5. DELPHI ON THE NET
- Components, Libraries and Utilities
. Shareware/Commercial
. Freeware
- Articles, Tips and Tricks
- Tutorials
________________________________________________________________________
1. A FEW WORDS FROM THE EDITOR
I'd like to thank the authors for the articles they contributed to this
issue and I'm glad to award Roberto Martínez a license of SMImport, a
component suite to convert data from all popular formats, provided by
Scalabium: http://www.scalabium.com/smi/index.htm
In the next issue, one of our collaborators will receive a license of
Greatis Print Suite, a set of components for print and preview,
provided by Greatis Software: http://www.greatis.com/delphicb/printsuite/
We are also running a competition for the first two Kylix articles we
publish. The prizes will be copies of AnyShape Transpack for Kylix by
MindBlast Software: http://www.mindblastsoftware.com/
What do you think of Delphi 6? I personnally hear nothing but good about
it. And ofcourse, Borland is doing a great job with releasing stable and
very good products. However, after I have installed and used Delphi 6
for a couple of days, I can only see one big reason to make the switch:
the cross-OS compatibility. Meaning: Delphi 6 is Kylix compatible.
If you aren't sure whether you should upgrade, my advice is: don't
(unless you're part of a big company, ofcourse). For home users I don't
feel there are many great new features. You can read more about the new
features here: http://www.borland.com/delphi/del6/whatsnew.html
Our web site has undergone an aesthetic overhaul and now has a new look.
The design is the work of Renato Gaiarsa <renato@knowhow-online.com.br>.
Please take a look and don't forget to report if you see any problems:
http://www.latiumsoftware.com/en/index.php
Don't forget, thanks to Demian Lessa we now have a Portuguese edition:
Last issue: http://www.latiumsoftware.com/br/pascal/0034.php
Subscription: http://groups.yahoo.com/group/boletim-pascal/join
boletim-pascal-subscribe@yahoogrupos.com.br
Now on with the newsletter...
Charl Linssen
eds2008 @ latiumsoftware.com
__________________
Collaborators: 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.
Centralized resources administration. Multiple programming problems
solved. For Delphi 3-2006 & C++ Builder 3-6. http://www.jfactivesoft.com
________________________________________________________________________
2. APPLICATIONS WITHOUT VCL (II)
By José Manuel Rodríguez (JMR)
Copyright: JMR, Madrid 1998/1999
In the previous chapter we approached the reduction of the size of the
executables by using a unit that, apart from extending the range of
dialog boxes provided by the VCL, we could use totally independently
from the VCL, allowing us to create much smaller executables. However,
the range of applications that could be created using only APIDlgs
without use of the VCL was very limited... some very stereotyped
applications with very concrete dialog boxes and mainly DLLs or
applications that run hidden during the greater time of their life and
that from time to time show information or get some data from the user.
In this issue we are going to go much further and we are going to extend
the number of applications that can be done without resorting to the
comfort of the VCL.
The idea is to develop an object which totally encapsulates an
application. The application encapsulated this way will be a mini-
application, of course, but totally functional, with its menu, tips,
possibility of reacting to Windows messages or messages defined by
ourselves, etc. If every time we have to show a message or request
information we also make use of APIDlgs then with the conjunction of
APIApp and APIDlgs we can cover a great number of programs without
having to make use of the VCL, obtaining executables 10% smaller than
their VCL equivalents, although this is naturally difficult to estimate.
Description
===========
The APIApp unit mainly contains the TTinyApp object (don't mistake with
component) which provides total functionality for the instantaneous
generation, although non-visual, of complete applications. These
applications are shown as an icon in the tray of the task bar, have
their own popup menu with associated actions that we define and
additionally can process Windows messages or user defined messages. At
any time we will be able to add new options to the menu or redefine it
totally, to change the icon shown in the tray, etc. We are going to see
two possible uses:
a) Let's figure we have a conventional application that we want to
monitor. This application can be a normal executable, a standard DLL,
an ISAPI DLL, or whatever... and there can even be multiple instances
executing at the same time and we are interested in knowing when this
application receives a command from the user. (For example: an HTTP
client has asked for certain rows of a table from the Web server where
our ISAPI is executed, the application has already opened a file 100
times, etc.) Then, we only have to define our own messages so when these
events take place we send them accompanied with the 'Handle' of our
main window in WParam. Next we create our application descending from
TTinyApp and we tell it to react to these messages (showing a message
in a window and creating a file log if necessary, etc.). Once we have
launched our 'TinyApp' we will be informed at any moment from whom and
when a message is received...
b) Since we have our own menu at our hands, actually, any application
that doesn't require a great unfolding of graphical interface can comply
to this type of application: programs to modify the configuration of
Windows or other programs, mathematical calculations, diagnostic
programs, etc. Obviously, a great part of larger applications is outside
the reach of APIApp, but there are many situations in which its use can
be considered, especially in complementary applications.
Functioning
===========
APIApp is totally based on the object TTinyApp, so it has all the
advantages of OOP but without the burden of the use of memory and
resources that components imply. Of course, the advantages of visual
design are lost, but its use keeps being quite easy. In fact, there's
no need to know anything about OOP to obtain all its performance.
PUBLIC METHODS
The public methods are:
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;
It just creates a TTinyApp object.
The parameters are:
- cAppName: Internal name of the application and what is shown in the
tooltip when the mouse passes over the icon. If you supply an empty
string, no tooltip will be shown.
- cIconName: Name of the icon resource we want to show in the tray. The
name should be in capital letters and should match the name of an icon
included as a resource in our application (with the {$R} directive).
If you pass an empty string or the name of an icon that does not exist
in the resources of the executable then the default icon will be used.
- MainProc: It's the name of a TMainProc procedure.
TMainProc = procedure(var Msg: TMessage);
The value for the MainProc parameter can be nil or a procedure that
will be called automatically by TTinyApp when you click the icon in
the system tray. It should never be called directly and will receive a
Windows message as parameter.
AddMenuOption
-------------
procedure AddMenuOption(OptionStr: String; OptionID: Integer;
OptionAction: TOptionProc);
When a TTinyApp object is created a popup menu is assigned to it that
only contains the option "Exit" which finishes the application. This
method allows us to add options to the popup menu of the application.
The parameters are:
- OptionStr: The caption of the new menu item.
- OptionID: A numeric identifier for the menu item. It must be unique,
but it can be any number starting from ID_USERFREE.
- OptionAction: It's a procedure of type TMainProc (described above).
This procedure will get executed when the user clicks the menu item.
AddUserMsg
----------
procedure AddUserMsg(MsgID: Integer; MsgAction: TMsgProc);
When a TTinyApp object is created, it creates a hidden window to which a
window procedure is assigned for handling the specific messages that the
hidden window receives, and the rest go to Windows. Obviously, being a
hidden window there are messages such as WM_PAINT or WM_NCHITTEST that
it will never receive but it will get other Windows messages like
WM_ACTIVATE or WM_CLOSE and, of course, messages defined by us. Calling
this function we can specify procedures that will act as message
handlers for the messages we are interested in.
The parameters are:
- MsgID: Message identifier. It can be a Windows message (like WM_CLOSE)
or a user-defined message (starting from WM_USERFREE).
- MsgAction: The name of a procedure of type TMsgProc. This type is
totally analogous to the VCL type TMessageEvent (used by
Application.OnMessage for instance) but here it's just a procedure,
not a "procedure of object" like in the VCL. The parameters it takes
are exactly the same: Msg is a structure of type TMessage and Handled
is a variable passed by reference that we can set to True to prevent
the message from being processed by Windows.
SetNewIcon
----------
procedure SetNewIcon(const cIconName: String);
Allows us to change the icon that is shown in the system tray of the
task bar, even during the execution of the application. It will be shown
activated or deactivated according to the state of the application.
Parameter:
- cIconName: Name of the icon resource we want to show in the tray.
The name should be in capital letters and should match the name of
an icon included as a resource in our application (with the {$R}
directive). If you pass an empty string or the name of an icon that
does not exist in the resources of the executable then the default
icon will be used.
ResetMenu
---------
procedure ResetMenu;
Allows us to eliminate all the options of the popup menu and their
associated actions, except for the option 'Exit' which is necessary to
be able to finish the application.
Execute
-------
procedure Execute;
Starts the application. When this method is invoked, the icon gets shown
in the tray of taskbar and the application enters its message loop,
looping until it receives a WM_QUIT message, as usual. Once the message
loop is finished the application finishes but the object is not
destroyed (this makes it possible to call Execute several times).
Free
----
procedure Free;
Destroys the object and releases all allocated memory. It is necessary
to call this method when we finished using TTinyApp.
PUBLIC PORPERTIES
The public properties are:
property Enabled: Boolean read FEnabled write SetEnabled;
property Wnd: THandle read FMainWnd;
- Enabled: Read/Write. Allows us to know the status of the TTinyApp and
to activate or deactivate it at will. When TTinyApp is deactivated, it
doesn't receive messages from the user so it won't popup a menu or
execute the default action although the invisible window still
receives messages. It is useful to deactivate it while a menu option
is being executed to prevent it from being called again.
- Wnd: Read only. The Handle of the main (hidden) window of a TTinyApp
application.
Quick start
===========
The use of APIApp is quite easy, comfortable and intuitive. Normally
it's enough to create a TTinyApp object, add some menu options and call
its Execute method, calling Free when we are done:
var
MyApp: TTinyApp;
begin
MyApp := TTinyApp.Create('My program', '', nil);
try
MyApp.AddMenuOption('&About...', ID_USERFREE + 1, ShowAbout);
MyApp.AddMenuOption('Con&figure', ID_USERFREE + 2, AppConfig);
......
MyApp.Execute;
finally
MyApp.Free;
end;
end.
See the example TestTiny for a complete demo application (useless from a
practical point of view).
Comments
========
a) This unit will only work in Win32 environments. It has been tested
only on Delphi 3 but I don't see any reason for it not working in
Delphi 2 or Delphi 4+.
b) Like the first part, all the code included is the original work of
the author, Jose Manuel Rodriguez, but I must again give thanks for
suggestions and comments to Jose Luis Freire, Miguel Oliver Angel
<maoliver@balearcom.es> and Nicolás Aragón <doperider@arrakis.es>,
mainly the latter since I implemented his idea. Apart from authors I
mentioned in the previous part, I must also thank the many authors of
TrayIcon-type utilities that can be found on the Internet.
d) This unit can be used free of charge in compiled programs without any
kind of restriction, but --if you use it-- I would be grateful if you
mention the author in the credits of the program.
If it is distributed as source code, the whole package should be
distributed, free of charge, with all files in full, including the
copyright notices.
Any suggestions, corrections or criticism (constructive, of course)
would be welcome.
José Manuel Rodríguez <jmr@clubdelphi.com>
__________________
NOTE: The examples require the unit APIDlgs introduced in the first part
of this article, published in the last issue, which can be
downloaded from: http://www.latiumsoftware.com/en/file.php?id=p34
________________________________________________________________________
3. SHUTTING DOWN THE PC AT A GIVEN DATE/TIME UNDER WINDOWS NT/2000
By Roberto Martínez O. <rmartinez@ieqsa.com.mx>
The program Timer you can find attached allows you to set a date/time
for a PC running Windows 2000 or NT to turn off. This program is useful
when we want to leave some process running on the PC and we don't want
to wait until it finishes to turn off the PC: we just program the
date/time and leave. The program will turn off the PC.
The program is of the type "SystemTray", copied from the example by
Ernesto De Spirito you can find in the Delphi Tricks section of the
Latium Software web site, to which I added a Timer component and the
routine to force the machine to turn off.
NOTE: This program will only work properly if you have a motherboard
that allows the OS to turn the power off. Otherwise, Windows will
shut down, remaining at the 'You may now turn off...' screen.
________________________________________________________________________
4. FORUMS
Delphi
======
If you know a lot about Delphi but you are still far from being a guru
this forum is for you. This is the only forum for intermediate-level
Delphi programmers on the Web (Delphi experts are also welcome :-)). The
forum now has more than 680 members and during April had traffic of just
over 400 messages:
http://groups.yahoo.com/group/delphi-en
If you want to join the group, the best way is to subscribe from the
web since you can access the special features available at the web site
(a Yahoo! ID is required and you can get yours free by registering as a
Yahoo! user) but if you don't want to register or if you don't have full
Internet access you can also subscribe by email:
http://groups.yahoo.com/group/delphi-en/join
delphi-en-subscribe@yahoogroups.com
Components
==========
This is a forum for searching/recommending software components (VCL and
CLX components, ActiveX objects, DLL libraries, shared objects, etc.),
as well as utilities, tutorials, information, etc. The forum is rather
new and currently has about 160 members and very low traffic:
http://groups.yahoo.com/group/components
I hope you join the forum to help us build a larger group. You can
subscribe from the web or --more easily-- by email:
http://tech.groups.yahoo.com/group/components/join
components-subscribe@yahoogroups.com
Software Developers
===================
This is a forum for discussions about software development and to share
experience in the work, professional or commercial environments. It is
not a programming forum, matters treated here are supposed to be more
general or language independent. The forum is rather new and currently
has about 160 members and very low traffic:
http://groups.yahoo.com/group/software-developers
I hope you join the forum to help us build a larger group. You can
subscribe from the web or --more easily-- by email:
http://tech.groups.yahoo.com/group/software-developers/join
software-developers-subscribe@yahoogroups.com
________________________________________________________________________
5. DELPHI ON THE NET
By Dave Murray
Components, Libraries and Utilities
===================================
Shareware/Commercial
--------------------
* 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
Articles, tips and tricks
=========================
* 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
Tutorials
=========
* 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/
Other 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
________________________________________________________________________
YOU CAN HELP US
We need your help to keep this newsletter going and growing. You can
help by referring the newsletter to your colleagues:
http://www.latiumsoftware.com/en/pascal/delphi-newsletter.php
Or you can help by voting for us in some or all of these rankings to
give more visibility to our web site and thus increase the number of
subscriptions to this newsletter:
http://www.programmingpages.com/?r=latiumsoftwarecomenpascal
http://top100borland.com/in.php?who=20
It's just a few seconds for you that REALLY mean a lot to us.
Don't forget we also need articles for this newsletter and there is a
prize for one of the authors in each issue. All articles will be
considered but we are particularly interested in articles about Kylix
because there is so little available online to help Kylix developers.
Send articles to: Charl <charl@atomasoft.com>,
Ernesto <eds2008 @ latiumsoftware.com> or Dave <irongut @ vodafone.net>.
We are also looking for shareware authors who would like to offer their
components or applications as prizes for articles in the newsletter. In
return you will be promoted in this newsletter and the Latium Software
web site. For more information contact Dave <irongut @ vodafone.net>.
________________________________________________________________________
If you haven't received the full source code examples for this issue,
you can get them from http://www.latiumsoftware.com/en/file.php?id=p35
________________________________________________________________________
This newsletter is provided "AS IS" without warranty of any kind. Its
use implies the acceptance of our licensing terms and disclaimer of
warranty you can read at http://www.latiumsoftware.com/en/legal.php
where you will also find a note about legal trademarks. Articles are
copyright of their respective authors and they are reproduced here with
their permission. You can redistribute this newsletter as long as you do
it in full (including copyright notices), without changes, and gratis.
________________________________________________________________________
Main page: http://www.latiumsoftware.com/en/pascal/delphi-newsletter.php
Group home page: http://groups.yahoo.com/group/pascal-newsletter/
Subscribe/join: pascal-newsletter-subscribe@yahoogroups.com
Unsubscribe/leave: pascal-newsletter-unsubscribe@yahoogroups.com
Problems with your subscription? eds2008 @ latiumsoftware.com
________________________________________________________________________
Latium Software http://www.latiumsoftware.com/en/index.php
Copyright (c) 2002 by Ernesto De Spirito. All rights reserved.
________________________________________________________________________
|