Pascal Newsletter #35
The full source code examples of this issue are available for download.
![]() |
![]() |
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/printsuite.htm 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 eds2004 @ 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-7 and 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/download/p0034.zip ________________________________________________________________________ 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://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://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.stefancr.yucom.be * Advanced Patch Engine v6.0 - by William Anthony, FREEWARE Using the new HybridGRAF XA Technology Controls. New features include: XP ready Controls, new locking system, smaller size Program + Modules. http://www.torry.net/toolscw.htm * TPowerPoint v1.2 - by Heiko Groschupp, FREEWARE with source Component to control Microsoft Powerpoint via OLE automation. http://hgroshupp.guertler.de * SerialNG v1.0.7 - by Ekkehard Domning, FREEWARE with source Enables an Application to communicate through the serial ports using only WinAPI and Delphi functions. Features: one Thread for send and receive, uses "Overlapped" for all R/W access, control of Timeout, control of Linestates, simple implementation. http://www.domis.de/serialng.htm * HTTPD Component v0.9 - by Swifty, FREEWARE HTTP/1.1 compliant Server component. http://dlux.sch.bme.hu/~swifty * TSysInfoCtrls v1.0 - by Simone Cicco Di, FREEWARE Component/unit to provide some System information: UserName, CompanyName, Computer Name, Date, CPU Vendor + Identifier, Resolution, Windows Version, DirectX Version, Serial Ports, Adapter Type, Printer, Win Product Key, Config Path, Program Directory + System Root, etc. http://www.devresource.net * FindComp v1.2 - by Dimka Maslov, FREEWARE with source A unit that lists computers and workgroups in a LAN, can obtain their IP addresses and enumerate shared network resources. http://endimus.com * DIMime v1.6 - by Ralf Junker, FREEWARE with source A fast MIME (Base64) Encoder and Decoder. Both MimeEncode + MimeDecode have a straightforward, flexible interface making them easy to use with buffers, strings and all other types you can imagine. http://www.zeitungsjunge.de/delphi * GDIPLUS v1.0 - by Henri Gourvest, FREEWARE with source GDI+ is a new graphics subsystem for Windows and provides a new set of graphics APIs for rendering 2D graphics, images and text. GDI+ is the only API for drawing in the .NET Framework, but in Delphi it is a complement to the GDI providing more advanced rendering capabilities. http://www.progdigy.com * RichView XML v1.0 - by Jiè Banzet, FREEWARE w. source A TRichView addition for saving XML, has its own DTD for effective saving of all content (bullets, hotspots, controls, tables, etc). http://www.torry.net/vcl/edits/rich/richviewxmlexe.zip * ShellPlus Components - by ShellPlus Development Group, FREEWARE With Shell+ you can easy develop your own Shell Extensions. http://www.swissdelphicenter.ch/en/download.php?id=220&kat=komponenten * TFileMonitor - by Winston Kotzan, FREEWARE Monitors a directory for changes, signalling an event. http://www.swissdelphicenter.ch/en/download.php?id=173&kat=komponenten * Glyph Collection - by Thomas Greiner, FREEWARE 5,700 Bitmap glyphs (32x32) extracted from all kinds of applications. http://www.swissdelphicenter.ch/en/download.php?id=8&kat=icons 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/library/weekly/aa020202a.htm * Remedial XML for programmers: Basic syntax - by Lamont Adams Maybe you've been stranded on a desert island hiding in a cave or avoiding all "Web stuff." Whatever reason, you're lacking XML savvy and want to remedy the situation. This first instalment in a 3-part series introduces XML and its basic syntax. http://builder.com.com/ article.jhtml?id=u00220020327adm01.htm&page=1&vf=tt * Remedial XML: Enforcing document formats with DTDs - by Lamont Adams Still playing catch-up when it comes to XML? No sweat, this XML tutorial continues with an introduction to DTDs. http://builder.com.com/ article_guest.jhtml?id=u00220020401adm01.htm&fromtm=e046 * Remedial XML: Using XML Schema - by Lamont Adams One way of enforcing structural requirements for an XML document is by using a document type description (DTD). This article touches on the shortcomings of DTDs and discusses the basics of a newer, more powerful standard: XML Schemas. http://builder.com.com/ article_guest.jhtml?id=u00320020418adm01.htm&fromtm=e601 * Resolve conflicts with XML namespaces - by Brian Schaffner Using XML to define your business data can be difficult when you have overlapping departments & redundant data definitions. XML namespaces can help resolve conflicts between element names. http://builder.com.com/article.jhtml?id=u00820020218sch01.htm&vf=tt * Introduction to XSLT - by Jason Monberg & Mike Wynholds Extensible Stylesheet Language (XSL) consists of 3 languages for converting XML documents into other formats. XSL Formatting Objects (XML FO) describes visual formatting, while XPath accesses specific parts of an XML document. But XSL Transformations (XSLT) is the language for actually converting from one XML format into another. http://builder.com.com/article.jhtml?id=u00120010910gcn01.htm&vf=ra * Advanced SQL with Joins - by TechRepublic SQL joins are a powerful tool for any database developer. There are various types of joins but using the correct approach requires knowledge. This article will help you put joins to work. http://clickthru.online.com/Click?q=48-ggFbIdBVysa6yBwXlfgj1FbSnFeR * Essential Delphi - by Marco Cantu Free Ebook! http://www.marcocantu.com/edelphi/default.htm * Kylix 2 BizSnap - by Bob Swart http://www.drbob42.com/kylix/ 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.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. 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 <eds2004 @ 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/download/p0035.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!






