Pascal Newsletter #32
The full source code examples of this issue are available for download.
![]() |
![]() |
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 eds2004 @ 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-7 and 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://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://www.eldos.org/elpack/elpack.html * 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/coolcontrols.html * 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/coolmenus.html * 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/coolhints2k.html 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/Jedi:APILIBRARY:13630 * 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/ezcolour.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/fqdbnavplus.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://uk.torry.net/kylix/db/visual/qrsdbedit.zip * 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_klx_security.htm * 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/news/047/story1.htm * 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://www.techrepublic.com/ article_guest.jhtml?id=r00320010319pos01.htm&fromtm=e006 * 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://www.techrepublic.com/ article_guest.jhtml?id=r00320020108jed01.htm&fromtm=e003 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.thensle.de/index.htm (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.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium http://news.optimax.com/delphi/links/links.exe/click?id=70C517ECAE6E http://www.programmingpages.com/?r=latiumsoftwarecomenpascal http://www.top219.org/cgi-bin/vote.cgi?delphi&83 http://top100borland.com/in.php?who=20 http://top200.jazarsoft.com/delphi/rank.php3?id=latium http://213.65.224.200/cgi-bin/toplist.cgi/hits?Id=80 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/download/p0032.zip ________________________________________________________________________ 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? eds2004 @ latiumsoftware.com ________________________________________________________________________ Latium Software http://www.latiumsoftware.com/en/index.php Copyright (c) 2002 by Ernesto De Spirito. All rights reserved. ________________________________________________________________________ |
The full source code examples of this issue are available for download.
![]() |
Errors? Omissions? Comments? Please contact us!






