Pascal Newsletter #32 - 11-FEB-2002
INDEX
1. A FEW WORDS FROM THE EDITOR
2. KISS - Simple controls
3. WEB BROKER PAGING USING CLIENTDATASETS
4. CREATING COMPONENTS AT RUNTIME
5. ROUTINE FOR TRANSFORMING AN IMAGE TO GRAYSCALE
6. FORUMS
7. DELPHI ON THE NET
- Components, Libraries and Utilities
. Shareware/Commercial
. Freeware
- Articles, Tips and Tricks
- Tutorials
- Other Links
________________________________________________________________________
1. A FEW WORDS FROM THE EDITOR
In this issue Alirio Gavidia presents five simple, but interesting
components for Delphi 5, Ernesto Cullen shows us a way to show a table
in multiple web pages using WebBroker and ClientDataset, Charl Linssen
explains how to create components at runtime, Lucas Martín presents his
routine for converting a color image to grayscale, and last, but not
least, Dave Murray as usual presents an interesting set of Delphi links.
I'd like to thank all those who have contributed in this issue, and I'd
like to encourage you to contribute to this newsletter. If you solved a
particular programming problem, or if you developed an interesting
routine, share your code!
Regards,
Ernesto De Spirito
eds2008 @ latiumsoftware.com
________________________________________________________________________
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. KISS - Simple controls
By Alirio A. Gavidia B.
:KISS Principle: /kis' prin'si-pl/ n. "Keep It Simple, Stupid".
A maxim often invoked when discussing design to fend
off {creeping featurism} and control development
complexity. Possibly related to the {marketoid} maxim
on sales presentations, "Keep It Short and Simple".
Taken from THE JARGON FILE, VERSION 2.9.12, 10 MAY 1993.
Here are five simple components for Delphi 5 not related at all and two
sample programs, one of them showing the use of four of these components
(not for being simple they are useless).
Basically this is a work created (not corrected) in a weekend, so it's
SIMPLE. You'll need to install the package HalMisc.dpk to be able to
open the examples. Here goes the description of each component:
1.- TFormPos (Component)
========================
This component saves the position and size of a form in the Registry.
You'd say "there are other components that do more than this". Sure, and
I recommend you one: TFormStorage from RXLIB. But wait, TFormPos takes
into account the silly problem of resolution change. Suppose your
program finish its session in the position X:900, Y:650 of your monitor
and you switch to 640x480 mode and restart the program. Do you see the
problem? Actually, you won't see it: your program will be out of the
screen.
TFormPos has just 3 properties apart from Tag and Name: Active defines
if the component will work; and CurrentKey and RegistryRoot define the
place where the form position will be stored.
The component fires two events. One before saving and the other after
saving.
The example is in "SkinDemo.dpr".
2.- THalFileList (Component)
============================
This component wraps Findfirst, FindNext and FindClose in a VCL
component, capable of performing recursive searches.
It's very simple to use. It has a single event that gets fired for each
file read. If you want to delete the content of a directory, simply
call DeleteFile with the given parameter.
THalFileList also notifies when the content of a directory changes. If
the ActiveWatch property is True, the OnChange event will get fired
whenever a change occurs in the directory. It is possible to define
what type of changes fire the event thru the NotifyFilter property (the
RXLIB has a solution for this: RxFolderMonitor).
The examples is in "DirWatchDemo.dpr".
3.- TProgressCircle (TGraphicControl)
=====================================
It might sound like... TProgressBar! Right, it's the round version of
TProgressBar, with some particular considerations:
- By default it goes from 0 to 60 (like a clock), not from 0 to 100.
- Sub-segment scan.
The example is in "SkinDemo.dpr".
4.- TSkin (TGraphicControl)
===========================
TSkin derives from TGraphicControl, so it can't receive the focus (we
don't need it). Actually it's like a TImage and the only interesting
thing is the BitMap property that defines the skin.
The skins are rectangular (bitmaps in the end) but the color of the top-
left pixel is taken as transparent so the control can determine the
silhouette of the figure in the bitmap. Setting the Active property to
True actives the silhouette and activates in chain the associated
controls.
The activation of TSkin requires that the property BorderStyle to be
set to bsNone. For this change the window of the form must be recreated
when activating and deactivating TSkin, causing a flicker.
TSkin maintains a list of subcontrols using InsertSkinControl and
RemoveSkincontrol.
5.- TSkinTitleBar (TCustomControl)
==================================
TSkinTitleBar is like TSkin:
I.- It's a control with a Windows handle, so it uses more resources
and it's always over a TSkin.
II.- It can be used for dragging (to drag a form, like a title bar).
III.- It affects itself when defining the silhouette. The Owner of TSkin
must be derived from TCustomForm because it's over the handle of
the form that the silhouette is set. TSkinTitleBar needs the form
for dragging.
TSkinTitleBar is bound to TSkin thru the Skin property.
________________________________________________________________________
3. WEB BROKER PAGING USING CLIENTDATASETS
Ernesto Cullen sent us an article describing a technique using WebBroker
for showing a table in pages of n records each, with links to the prior
and next pages in the sequence. For space reasons, we can't reproduce
his article in the newsletter, but you can access it following this
link:
http://www.latiumsoftware.com/en/articles/00013.php
By the way, the corresponding source code is available for download:
http://www.latiumsoftware.com/download/a00013.zip
________________________________________________________________________
4. CREATING COMPONENTS AT RUNTIME
By Charl Linssen <charl@atomasoft.com>
About this tutorial
===================
This tutorial was written by Charl Linssen (a/s/l: 15, male,
Netherlands). It may be copied without contacting the author, but it may
not be edited in any way.
For questions or comments, feel free to mail me at
<charl@atomasoft.com>.
Benefits of creating components at runtime
==========================================
You probably won't use this type of object creation very often. Usually,
you will create all components (including forms) by clicking on their
icons in the toolbar, then dropping them on the form. Well, Delphi _is_
a RAD (Rapid Application Design) tool, so: no problem. However, creating
the components at runtime has a lot of advantages. The main ones are:
- Filesize! I made a little example. A exe with a button created at
design time (and nothing else) is 291 Kb, while the exact same form
only with the button created at runtime is 290 Kb! Now, you may say
'that's just one kilobyte for a lot of trouble!' Well, you are right,
but this is just an example with only 1 button! Imagine what
difference it would mean in a big program with hundreds of components.
- Adaptability! You can make 100% custom messages, dialog boxes and lots
more. Normally you have to do with the standard ShowMessage() for
example, and you find it too much trouble to make a completely new
form for just a few messages. Now you can make a great looking message
box with only about 25 lines of code!
Creating your first component (at run time!)
============================================
Creating a component is easy. I will show the example code of creating a
button at runtime:
Uses StdCtrls; // Remember!!!
Procedure CreateButton;
var NewButton : TButton;
begin
NewButton := TButton.create(self);
with NewButton do
begin
Name := 'Button1';
Top := 30;
Width := 100;
Left := 5;
Parent := self;
Caption := 'Run-time button!';
end;
end;
That's it! Now, let's analyze the 'hard' parts. First, we 'use' the unit
StdCtrls, because that's the unit which contains (among others) the
TButton component.
This unit is automatically included when you drop a TButton or so on the
form. Then, we tell Delphi what NewButton is: a TButton.
Then we actually create the button, using TButton.Create(Self). We
assign the result to NewButton so that we can set our button's
parameters later. Once we have done this, we name and size the button.
But watch out! Be sure to set the Parent parameter.
It has to be set to the TComponent the new component will be shown on.
For example, when a TPanel is dropped on the form, and the Parent
property is set to Form1.Panel1, the button is 'on' the panel.
Assigning events
================
OK, great, we got ourselves a button, and we can set its properties. But
when we click on it, it does nothing. Therefore, we have to set the
OnClick event. To do so, we must have a procedure which belongs to the
TForm1 class. Snippet:
As you can see, we have to make sure the procedure has the right
parameter list (in this case: Sender: TObject). We simply type the name
and parameters of the procedure like above.
Then, we move downwards, to a free spot just above the final 'end.'.
There, we re-type our procedure, only now with 'TForm1' in front of it:
procedure TForm1.MyClick(Sender:TObject);
Also, be sure to type in a 'showmessage' or something, because Delphi
will erase 'empty' procedures when compiling.
Now, we have the procedure, but we still have to assign it to the
button's OnClick event. To do so, move back to the procedure where the
button is created, and add a statement below 'Caption := ...':
OnClick := MyClick;
Now, compile your program, and be happy! :)
Onwards
=======
The best way to learn, is to experiment. Try creating some other
components, like Panels and Memos. Also, you can surf around and
download some sources. If you have questions, feel free to mail me at
<charl@atomasoft.com>.
________________________________________________________________________
5. ROUTINE FOR TRANSFORMING AN IMAGE TO GRAYSCALE
By Lucas Martín <deepsoftquitaestodeaqui @ menta.net>
Place a button (button1), an image (image1) and add "jpeg" to the Uses
clause of the form (form1).
Copy the following routine in the OnClick method:
procedure TForm1.Button1Click(Sender: TObject);
// By Lucas Martín <lucas @ menta.net>
procedure GrayScale(PICT: TPicture);
const
MaxPixelCount = 32768;
type
pRGBArray = ^TRGBArray;
TRGBArray = ARRAY[0..MaxPixelCount-1] of TRGBTriple;
var
i, j, Colr : Integer;
sl : pRGBArray; // Scanline
bmp : TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.PixelFormat := pf24bit;
bmp.Width := PICT.Graphic.Width;
bmp.Height := PICT.Graphic.Height;
bmp.Canvas.Draw(0,0,PICT.Graphic);
if bmp.PixelFormat <> pf24bit then begin
// ShowMessage('Not a 24Bit color bitmap!');
Exit;
end;
for j:=0 to bmp.Height-1 do begin
sl := bmp.ScanLine[j];
for i:=0 to bmp.Width-1 do begin
Colr:=HiByte(sl[i].rgbtRed * 77 + sl[i].rgbtGreen * 151 +
sl[i].rgbtBlue * 28);
sl[i].rgbtRed := Colr;
sl[i].rgbtGreen := Colr;
sl[i].rgbtBlue := Colr;
end;
end;
PICT.Assign(bmp);
finally
bmp.Free;
end;
end;
begin
GrayScale(Image1.Picture);
end;
Note: For any bug or optimization
----> <deepsoftquitaestodeaqui @ menta.net>
________________________________________________________________________
6. FORUMS
Delphi
======
If you know much of 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 hackers are also welcome :-)). The forum
now has more than 520 members, while it maintains its low traffic:
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 also can 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 a bit more than 90 members and almost no messages:
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
________________________________________________________________________
7. DELPHI ON THE NET
By Dave Murray
Components, Libraries and Utilities
===================================
Shareware/Commercial
--------------------
* ElPack v3 - by EldoS (for Delphi/C++Builder and Kylix)
A collection of 70+ VCL/CLX components that offer sophisticated
replacements for all major Windows and Qt controls, extend
functionality of existing VCL/CLX controls and introduce new features
like Unicode, XP Themes and Qt Styles support and much more ...
http://elpack.findmysoft.com/
* CoolControls v. 3.03b (for Delphi 2-6 and BCB 1-5)
Award winning package of 60+ highly advanced components and classes.
Covers system, GUI and database programming, and original components.
Forms of any shape, SKINS and TRANSPARENCY for ALL controls and forms,
buttons of various shapes, flat borders, animation, original controls,
powerful list and comboboxes, 3D view for most controls with text,
multiline string grids with custom colors and fonts for cells,
scrolling text, system level components.
http://www.cooldev.com/cd_products.html#CoolControls
* CoolMenus v. 3.08 (for Delphi 2-6 and BCB 1-5)
Award winning package that provides you with the way to create the
most advanced Windows menus. CoolMenus, especially Multimedia edition
has some unique features you will not find in any other menu related
packages on the market. Native Delphi code, fast speed and helpful
design windows are the reasons of CoolMenus popularity.
http://www.cooldev.com/cd_products.html#CoolMenusPro
* CoolHints2k version 1.01a (for Delphi 3-6 and BCB 3-5)
With CoolHints2k you can create Office2000-like dialogs and hint
system. The package contains all necessary controls and can be used
to build ordinal dialogs and other purpose windows. Use Delphi's
designer to build the forms and combine controls from the CoolHints2k
package with any other VCL you have.
http://www.cooldev.com/cd_products.html#CoolHints2k
Freeware
--------
* MyLittleBase v2.0 - by Anirom, FREEWARE with source (DELPHI/KYLIX)
Database component using a flat file format based on csv text. Uses
no library or link to any external server, the engine is entirely
compiled into your code. New functions include: Excel export, ISAM
import/export, sorting, seeking and minimal SQL implementation for
queries. Works with Delphi, Kylix and C++ Builder.
http://www.mylittlebase.org
* Expanded Win32 API Translation Updated - by Marcel van Brakel
Update of Project JEDI's full, expanded Win32 API translation.
Includes .NET conversions.
http://www.delphi-jedi.org/apilibrary.html
* TEZColor v1.0 - by Eric Z. Jordens, FREEWARE with source
A component derived from TPaintBox to choose and edit a color like
any other colorpicker. Besides standard RGB editing it also shows the
HSV, HLS and Hex values for the given color.
http://www.torry.net/vcl/graphics/other/ezcolor.zip
* TmThumbs v1.1 - by Mats Asplund, FREEWARE with source
A component that produces thumbnail images from jpeg image files. Two
different image modes: Crop and Fill. Handles multiple sourcefiles.
Fileprefix, fillcolor, height, width, zoom properties and
OnImageCreate event.
http://www.torry.net/vcl/graphics/other/mthumbs.zip
* TKnob v0.5 - by S. Dianov, FREEWARE with source
A component that looks like an audio fader.
http://www.torry.net/vcl/misceff/other/sdknob.zip
* BitButton v1.30 - Oliver Killguss, FREEWARE w. source (DELPHI/KYLIX)
BitButton and Speedbutton based components which extends flat style
like Office 97 and includes an automatic grayscale conversion of the
image. Also converts glyph for enabled state.
http://www.vclcomponents.com/download.asp?ID_COMPONENT=18927
* QDBNavPlus v2.0 - by F H Prieto, FREEWARE with source (DELPHI/KYLIX)
Derived from DBNavigator, now you can add Label with a layout, choose
a default Language and more.
http://www.torry.net/db/visible/db_navigators/fpqdbnavplus.zip
http://www.torry.net/kylix/db/visual/qdbnavplus.zip
* Direct MySQL Objects v1.0 - by C Nicola, FREEWARE w. source (D/KYLIX)
Suite of objects to directly connect to MySql server without any
aditional dlls. Main advantages are over 4x faster than MySql dll and
lower memory footprint (10% less than MySql dll).
http://sourceforge.net/projects/directsql
* TRSDBEdit v1.0 - by Renato Soares,FREEWARE with source (DELPHI/KYLIX)
This component publishes the EchoMode property, making it useful for
a Password edit box.
http://www.torry.net/quicksearchd.php?String=TRSDBEdit&Title=Yes
* TyDecoder v0.1.0 - by Steve Blinch, FREEWARE w. source (DELPHI/KYLIX)
A component to decode yEnc binary file attachments from newsgroups.
http://code.blitzaffe.com/delphi.php
* TyEncoder v0.1.0 - by Steve Blinch, FREEWARE w. source (DELPHI/KYLIX)
Encodes binary files using the yEnc algorithm used in newsgroups.
http://code.blitzaffe.com/delphi.php
* Vortex IRC v1.1 - by Joepezt, FREEWARE with source (DELPHI/KYLIX)
Open source IRC component. Requires Internet Component Suite by
Francois Piette (see www.torry.net or www.vclcomponents.com).
http://vortex.berzerk.net
* TVHTMLExport v1.13 - O Killguss, FREEWARE with source (DELPHI/KYLIX)
Exports tree from TTreeView into HTML file. Can auto generate links
within nodes and produce title, header and footer. Select your own
images for node's appearance. Images are copied to the destination
path of the generated file.
http://www.vclcomponents.com/download.asp?ID_COMPONENT=18951
* Password Protect Console v1.1 - by Uri Fridman, FREEWARE (KYLIX)
A console password manager for Linux. Implements in the command line
some of the functionality of a password protect GUI. The Source is
available on request.
http://www.torry.net/kylix/apps/security/passprotcbin.zip
* ThinkSQL RDBMS for Windows and Linux
ThinkSQL is a new relational database management system, designed for
modern operating systems and hardware. The aim is to bring it as close
as possible to full compliance with the ISO SQL standard. The server
has been written entirely in Delphi/Kylix and includes the world's
first native dbExpress driver, plus ODBC and JDBC drivers.
http://www.thinksql.co.uk
* TaoADODataSet Component Suite v2.12 - Aloha OI, FREEWARE with source
A nearly full-featured TDataSet descendant for Delphi v3-5 and
C++ Builder v3-4. Allows you to link standard data aware components
to OLEDB databases such as Access, SQL Server and ODBC data sources
bypassing the BDE. ADO can be obtained from Microsoft for free.
http://www.alohaoi.com/Software/Products/aoado/default.htm
* TAuditFileLog v1.40 - by Aloha OI, FREEWARE with source
A Delphi v2-5 component designed to work the with the WinNT Security
Event Log. When file auditing is enabled for a particular file, this
component will catch any file open access and fire off an event. The
event returns the filename, the NT user account name that accessed it
and the name of the computer.
http://www.alohaoi.com/Software/Products/audit/default.htm
* Simple Counter v1.0 - by Jazarsoft, FREEWARE with source (KYLIX)
A simple CGI text counter written in Kylix that can count pageview
numbers for different pages. View totals directly from your browser.
http://www.jazarsoft.com/software/view.php3?id=36
* Wizard v1.1 - by Jazarsoft, FREEWARE with source (KYLIX)
Tried to design your own wizard? TWizard helps you integrate the 3
major components of a Wizard (TButton, TNotebook, and TImage). Also
designs your wizard steps, giving each a separate side-image.
http://www.torry.net/kylix/clx/comptools/jswizard.zip
Articles, tips and tricks
=========================
* Borland Will Push .NET Out Of Windows - By Alan Zeichick
http://www.sdtimes.com/content/article.aspx?ArticleID=26301
* Delphi Database Programming Course - by Zarko Gajic
Free online database programming course for beginner Delphi developers
focused on ADO techniques.
http://delphi.about.com/library/weekly/aa010101a.htm
The final chapter has been added since the last issue:
Chapter 23 "Deploying Delphi ADO database applications" explains how
to make your Delphi ADO database application available to others, the
final step is to successfully deploy it to the user's computer.
http://delphi.about.com/library/weekly/aa021502a.htm
* Creating Custom CLX Components - by Ray Konopka
//www.borlandkorea.co.kr/conf2001/PROCEEDINGS/papers/3156/PAPER.HTML
* Delphi ADO/DB : Real Problems - Real Solutions - by Zarko Gajic
This penultimate chapter points to some great Forum threads initiated
by this Course - discussions that solve problems in the field.
http://delphi.about.com/library/weekly/aa022902a.htm
* Tranlucent Windows with Win2k/XP & Delphi 5 - by Christian Blichmann
How to develop applications using free-form forms with anti-aliasing
and translucency using Delphi 5.
http://www.delphi3000.com/articles/article_3007.asp
* Registering an ActiveX for its class (CLSID) - by Bertrand Goetzmann
How to get the IUnknown reference on a specific COM object's instance
created by an application. Using the RegisterActiveObject function
(Win32 API).
http://www.delphi3000.com/articles/article_3010.asp
* Building an Parser/Parsing Framework Part II - by Marc Hoffmann
How to create a simple parsing framework to parse any kind of data?
This part shows you how to create a real working DTD parser.
http://www.delphi3000.com/articles/article_3011.asp
* A background painter class - by César Nicolás Peña Núñez
This class paints a background bitmap tiled, centered or stretched.
http://www.delphi3000.com/articles/article_3016.asp
* The OnLinkClick-Event of TWebBrowser - by Duncan Parsons
The TWebBrowser-object is a great way to display offline html-files
within your application. Sometimes it would be nice to react within
your delphi-application when the user clicks on a link...
http://www.delphi3000.com/articles/article_3017.asp
* How to save the positions of TCoolBar bands - by Valery Goloshchapov
How to easily store the layout (positions) of TCoolbar and TCoolband
objects.
http://www.delphi3000.com/articles/article_3018.asp
* Custom Actions on WebBrowser.Document's OnClick Event - by Hans Gulö
Using IE's Document Object Model from within TWebBowser to perform
custom actions when a user clicks a link in the document.
http://www.delphi3000.com/articles/article_3021.asp
* A way to handle displaying screen cursors - by William Egge
Setting a screen cursor and reverting back to a previous screen
cursor using a stack.
http://www.delphi3000.com/articles/article_3022.asp
* Changinf DbNavigator's Icons - by Matheus Pecci
Want to change the classic icons from dbnavigator?
http://www.delphi3000.com/articles/article_3023.asp
* Using miniLZO in Delphi - by Dan Strandberg
How to use the miniLZO library written in ANSI C in your Delphi
application without a dll.
http://www.delphi3000.com/articles/article_3024.asp
* Nibbles - A Game - by Vimil Saju
This is the code for a game called nibbles.
http://www.delphi3000.com/articles/article_3025.asp
* This works: Save and Restore Coolbars - by Frank Heyne
Save and restore Coolbars using an array which holds all settings.
http://www.delphi3000.com/articles/article_3026.asp
* Controling Winamp from a Dll or Application - by Johannes Fuglsang
How to use the Winamp API.
http://www.delphi3000.com/articles/article_3027.asp
* Return identity id from insert_SQL - by chiefClaudio Hira
How to obtain the value of the identity column in a table when
inserting a record with an INSERT SQL statement.
http://www.delphi3000.com/articles/article_3028.asp
* Listing all Functions of a DLL File - by Matheus Pecci
How to list all functios and procedures of a dll file?
http://www.delphi3000.com/articles/article_3031.asp
* How to write to an Access DB using ADO / SQL - by Michael Casse
Read an MS-ACCESS Database using ADO, verify if it is an ACCESS MDB
and write a Record to MS-ACCESS Database.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1007
* How to check if the recycle bin is empty? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1009
* How to run a console application and get its output? - by Superhausi
http://www.swissdelphicenter.ch/torry/showcode.php?id=990
* How to get the used memory for a process? - by Evgeny V. Levashov
(Works only on Windows NT systems - WinNT, Win2000, WinXP.
http://www.swissdelphicenter.ch/torry/showcode.php?id=1010
* Listening to the Clipboard - by Zarko Gajic
Expanding on Delphi's TClipboard class (Part 1). How to hook the
clipboard notification system to get and respond to events when the
clipboard changes using the Win API and messaging system.
http://delphi.about.com/library/weekly/aa110700a.htm
* Transparency in Delphi 6 - by Zarko Gajic
One of the new features Delphi 6 introduced is the ability to create
forms that are (semi) transparent. The TForm class supports layered
forms with AlphaBlend, AlphaBlendValue, TransparentColor and
TransparentColorValue properties. Has no effect prior to Windows 2k.
http://delphi.about.com/library/weekly/aa022202a.htm
* Windows API Error Handling: Part II - by Marcel van Brakel
Concludes the series with a look at retrieving messages from a
specific message DLL, setting the last-error code, error modes, and
Delphi's approach to error handling.
www.delphimag.com/features/2002/02/di200202mv_f/di200202mv_f.asp
* Hot Spots : Part I - by Victor Hornback
How to create hotspots, regions that detect MouseOver events, to make
images behave like Web page hotspots or hotlinks. These regions can
represent almost any shape imaginable and are easily created using
Windows API functions. Part I shows how to create a hot-spot editor.
www.delphimag.com/features/2002/02/di200202vh_f/di200202vh_f.asp
* How to easily use HTML Help files in your programs - by Dave Murray
Do you long to move from WinHelp to HTML Help in your programs? This
unit converts all WinHelp calls to HTML Help enabling you to upgrade
with the minimum of effort.
http://www.delphi3000.com/articles/article_2994.asp
* Building an Easy-to-Use Parsing Framework (Part I) - by Marc Hoffmann
How to create a simple parsing framework to parse any kind of data?
Our goal will be a class solution which helps up to parse any kind of
data and store all information in an easy-to-access object model.
http://www.delphi3000.com/articles/article_2995.asp
* Initialize StringGrid from INI file - by Eber Irigoyen
A function to initialize StringGrid headers, columns, widths, etc.
http://www.delphi3000.com/articles/article_3001.asp
* How to protect your software against piracy! - by Fernando Martins
Useful discussion on software protection systems. (Read the comments)
http://www.delphi3000.com/articles/article_3002.asp
* Determening DirectX version installed on the system - by Uros Gaber
How to determine if DirectX is installed and it's version.
http://www.delphi3000.com/articles/article_3003.asp
* Why use Packages? - by Max Kleiner
Good article on the advantages of application design using packages.
http://www.delphi3000.com/articles/article_3005.asp
* How to control Excel with OLE? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=156
* How to determine the position of the taskbar? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=347
* How to list the exported functions of a DLL ? - by Colin Pringle
http://www.swissdelphicenter.ch/torry/showcode.php?id=960
* How to create a sizable and none border style form? - by Gurkan ASLAN
http://www.swissdelphicenter.ch/torry/showcode.php?id=984
* How to clear a varaible from RAM? - by Superhausi
How to properly erase a variable so that its data no longer exists in
memory. Very usefull for the temporary storage of passwords.
http://www.swissdelphicenter.ch/torry/showcode.php?id=988
* How to format currency according to locale settings? - by Superhausi
http://www.swissdelphicenter.ch/torry/showcode.php?id=989
* How to get the CPU ID from the registry? - by Eduardo Teixeira
http://www.swissdelphicenter.ch/torry/showcode.php?id=994
* How to duplicate a Table? - by JodeQa
http://www.swissdelphicenter.ch/torry/showcode.php?id=999
* How to convert a Bitmap to an Enhanced Metafile? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1000
* How to set the number of fixed columns in a TDBGrid? - by T Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1001
* How to compile Delphi Projects with a Batch file? - by Superhausi
http://www.swissdelphicenter.ch/torry/showcode.php?id=1003
* How to control Powerpoint with OLE-Automation? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=1005
* Download the official patches for Kylix 1 now! - by John Kaster
Patches are: "Debugger patch for Linux 2.4 kernel" and "dbExpress
driver update for MySQL 3.23."
http://community.borland.com/article/0,1410,28266,00.html
* A WebSnap Online Survey: Part II - by Corbin Dunn
Completing the WebSnap online survey by adding server-side scripting
to the main page and more.
//www.delphimag.com/features/2002/02/di200202cd_f/di200202cd_f.asp
* RichEdit Print Preview - by Jochen Fromm
Displaying a Print-Preview for a Richedit Control seems simple but is
not so easy as MSDN Articles Q142320 + Q253262 show. To show a
Print-Preview with correct Text-Heights and -Widths, you can draw the
RichEdit-Control on a Metafile and print it to the Preview-Canvas.
http://www.delphi3000.com/articles/article_2987.asp
* Codeing Tip.. - by Derrick Nel
How to handle dynamic object creation in a neat and effective way?
Read the comments for an interesting discussion on programming style.
http://www.delphi3000.com/articles/article_2988.asp
* Prime numbers - by Upportune Malters
Finding out if a given number is prime using an array of boolean.
http://www.delphi3000.com/articles/article_2989.asp
* Prime Number Class (Fast Access to Prime Numbers) - by Mike Heydon
Following on from Article ID 2989, this class uses TBit which is more
memory efficient than an array of boolean. This class can check if a
number is a prime or obtain a list of prime numbers from x to y.
http://www.delphi3000.com/articles/article_2990.asp
* Loading any registered picture format into a stream - Howard Barlow
TPicture can load any fileformat registered with it and save to a dfm
file. But its generic stream methods are private. This code shows how
to get access to these methods and store/load any registered TGraphic
descendant to/from a stream or blobfield in a generic way.
http://www.delphi3000.com/articles/article_2991.asp
* How to read an Access DB using ADO? - by Michael Casse
http://www.swissdelphicenter.ch/torry/showcode.php?id=974
* How to create a transparent TForm? - by Mohammad Khorsandy
http://www.swissdelphicenter.ch/torry/showcode.php?id=982
* How to get the word under mouse cursor in a TRichEdit? - by T Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=979
* How to move menu items at runtime? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=957
* Dynamic packages in Delphi - by Vino Rodrigues
Design-time packages simplify the tasks of distributing + installing
custom components. By compiling reused code into runtime packages,
which are optional, you can share it among applications. Packages are
even better when they are used dynamically. They offer a modular
library approach to developing applications. At runtime those modules
may become an optional part of your application. This paper shows how
to create and use dynamic packages in Delphi.
http://community.borland.com/article/0,1410,27178,00.html
* A WebSnap Online Survey: Part I - by Corbin Dunn
First of a two-part article that shows how to create an online survey
using the new WebSnap capabilities of Delphi 6 Enterprise. Introduces
WebSnap by comparing it to Web Broker in previous versions of Delphi,
explains how to build the sample database and begins to construct the
survey application itself.
www.delphimag.com/features/2002/01/di200201cd_f/di200201cd_f.asp
* The BLOB: Working with InterBase's Binary Data Type - by Bill Todd
One of the more useful features of most modern databases is their
ability to store binary data - data of any type, format or size. It's
useful because it's versatile; you can use a binary field to hold
anything from a Word document to an MP3 file.
www.delphimag.com/features/2002/01/di200201bt_f/di200201bt_f.asp
* TASPObject - ASP programming with Delphi Part 2 - by Curtis W. Socha
Now that we know a little bit more about how the TASPObject works we
are going to examine a skeletal structure for building a website that
is extremely scalable. It is completely possible to use this object
as the single entry point for all users.
http://delphi.about.com/library/bluc/text/uc010802a.htm
* Get a process by executable path + read its memory space - by pic sub
Enables you to look into another process's address space. Uses mainly
CreateToolhelp32Snapshot, OpenProcess and ReadProcessMemory.
http://www.delphi3000.com/articles/article_2965.asp
* Component Serialization - by Yoav Abrahami
Serialization is the process of saving a component's state to a file
using streams. Delphi provides an infrastructure for serialization of
components but how do we utilize this infrastructure to the fullest
and what are its limitations?
http://www.delphi3000.com/articles/article_2969.asp
* Determine highest DAO version installed - by Mike Heydon
A function to determine the highest version of DAO installed.
http://www.delphi3000.com/articles/article_2970.asp
* Using XP visual style without components - by mega warrior
How to implement WinXP visual styles (themes) in Delphi without using
any components via MS Common Controls Livrary v6.
http://www.delphi3000.com/articles/article_2971.asp
* Getting Detailled Printer Information - by Geers Christophe
How to retrieve detailed information on the installed printers on
your computer using winspool.
http://www.delphi3000.com/articles/article_2974.asp
* Query result into a string list - by Fernando Martins
How to load the result of a query into a string list.
http://www.delphi3000.com/articles/article_2975.asp
* COM Activation - by Alessandro Federici
Did you ever wonder how COM obejcts are created? Did you know you are
not the one that creates them? Read more about COM activation.
http://www.delphi3000.com/articles/article_2976.asp
* Memory shared in a Dynamic-Link Library - by Bertrand Goetzmann
How can several processes share memory to cooperate? This unit shows
how use a file-mapping object to set up memory that can be shared by
processes that load the DLL.
http://www.delphi3000.com/articles/article_2979.asp
* Fuzzy Matching Strings - by duncan parsons
How to get an idea of how closely 2 strings match.
http://www.delphi3000.com/articles/article_2981.asp
* Towards a more accurate sort order - by Duncan Parsons
Sorting Addresses is a pain at the best of times, especially when a
client supplies bad data. This tip attempts to resolve this issue.
http://www.delphi3000.com/articles/article_2982.asp
* Towards a more accurate sort order in MSSQL7 - by Duncan Parsons
Sorting Addresses is a pain at the best of times, especially when a
client supplies bad data. This tip attempts to resolve this issue for
MSSQL Server. This is a T-SQL version of article 2982.
http://www.delphi3000.com/articles/article_2983.asp
* Simple Query Builder using ADO Components - by S S B M PUVANANTHIRAN
Writing a simple query builder using ADO Components.
http://www.delphi3000.com/articles/article_2984.asp
* SOAP : The World of Services - by Romeo Lefter
Understanding and creating Web services with Delphi.
http://www.delphi3000.com/articles/article_2985.asp
* How to check if a PopUp Menu is open? - by oLeOlE
http://www.swissdelphicenter.ch/torry/showcode.php?id=958
* How to rearrange the tabs in a TPageControl using drag 'n drop?
http://www.swissdelphicenter.ch/torry/showcode.php?id=963
* How to obtain a list of loaded drivers under Windows NT? - by T Stutz
This code takes advantage of the undocumented API call
NtQuerySystemInformation to obtain a list of loaded drivers.
http://www.swissdelphicenter.ch/torry/showcode.php?id=961
* How to get the CPU usage in percent on WinNT/2000/XP? - by T Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=969
* How to zoom a Canvas? - by Marc Dürst
http://www.swissdelphicenter.ch/torry/showcode.php?id=968
* Listing information about users currently logged on to a workstation
By Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=966
* How to check if a TMainMenu is dropped down or not? - by oLeOlE
http://www.swissdelphicenter.ch/torry/showcode.php?id=956
* How to retrieve a shortcut's link information? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=970
* Enable/Disable Fast Task Switching under WinXP? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=972
* Scaning an image directly into your application - by Ronald Rethfeldt
http://www.swissdelphicenter.ch/torry/showcode.php?id=971
Tutorials
=========
* Comparing the Windows 98 and the Windows NT registries - by B. Posey
Critical differences exist between the Win95/98/ME and WinNT/2000/XP
registries. This article examines those differences and highlights
the registries' similarities as well.
http://articles.techrepublic.com.com/5100-10878_11-1047173.html
* Zen Source Library Tutorials
Tutorial subjects include TTreeView, COM, OLE structured storage,
OLE drag + drop, scripting + more.
http://users.iafrica.com/d/da/dart/zen/zen.html
* VB to Delphi Tutorial
http://www.cyber-matrix.com/vb2delphi.html
* Visual Basic to Delphi Conversion Resources
http://www.cyber.com.au/misc/vb2d.htm
* The Delphi Educator - by Curtis W. Socha
Dedicated to teaching some of the more complicated aspects of
programming. COM, COM+, DCOM, ASP, Web Servies & Graphics programming
are covered. Includes a section dedicated to providing solutions to
errors that occur when dealing with COM and it's evil mutant children
DCOM and COM+. Also Web Service problems and some solutions.
http://absolute-research.com/IISSamples/Default/welcome.htm
* Fine-tune WHERE clauses in SQL - by Jeff Davis
The secret to creating powerful SELECT statements in SQL is writing
efficient WHERE clauses. This turorial discusses how you can bypass
open-ended searches by using some advanced tools that will precisely
locate the information you need.
http://articles.techrepublic.com.com/5100-10878_11-1043980.html
Other Links
===========
* DanceMammal.com
Delphi Hints and Tips site, thousands of hints and tips.
http://www.dancemammal.com
* FreeVCS
A freeware source version control and project management system.
FreeVCS can be used in local, LAN, WAN, Internet or mixed
environments. You can choose a Delphi 4-6 IDE expert or a language
independent standalone client. Supported backend databases include
DBISAM 2.x, Interbase 5/6, Oracle 7/8, MSSQL 7/2000 & Informix.
http://www.fredshack.com/docs/freevcs.html (freevcs@thensle.de)
* Quake 2 - Visual C to Delphi Conversion
A site dedicated to converting the original Quake2 (version 3.21)
Visual C source to Delphi. The project is open to anyone who wishes
to participate.
http://www.sulaco.co.za/quake2/
* Cetus Links: Delphi - by Jon Perry
Huge list of online resources for Delphi from newsgroups and tips
sites to components and tools libraries.
http://www.cetus-links.org/oo_delphi.html
* Trucomania
Delphi Tips site in English and Spanish.
http://www.q3.nu/trucomania/
* InterBase 6.5: XML Support and a Whole Lot More - by Bill Todd
The lowdown on InterBase 6.5, which offers 64-bit file I/O, improved
cache management, metadata security, the ROWS clause, and XML export
for easy integration with Web apps. Includeds a sample project.
www.delphimag.com/features/2002/02/di200202bt_f/di200202bt_f.asp
* O'Reilly XML.com
All things XML, although no Delphi specific info. Including: news,
tutorials, book excerpts, reviews, buyer's guides and an event diary.
http://www.xml.com
* Workspace 3D - by Ghia Renaud
A new GUI written in Delphi, entirely in 3D. The concept is a world
with several rooms, each corresponds to a task - Internet room, word
processing room, music room, etc. (English and French)
http://workspace3d.ath.cx/Workspace3D.htm
________________________________________________________________________
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.
________________________________________________________________________
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=p32
________________________________________________________________________
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.
________________________________________________________________________
|