DOWNLOAD NEW VERSION OF XCL DOCUMENTATIONHere You can download the total set of this documentation files in a single archive XCLdoc.zip

    This page is updated very often, so click 'Reload' button in your browser to get fresh version!

Pluralitas non est ponenda sine neccesitate.

(Principle known as Occam's Razor)


eXtreme
Class
Library

members
go here

Last updated: 24-11-1999

Why Windows applications so large and so fat?
How to make small applications for Windows in Delphi?
How to create good programs without VCL?

Let us start XCL project and reduce code size of our applications!
Aren't XCL controls too poor?

Why Windows applications so large and so fat?

    Its very simple. All these contain too many code and resources that are not really needed to provide its functionality. For example, in Delphi we usually start new project with a single empty form. If we build this project we can see that size of program that yet do nothing is already more than 100K bytes. And it is only needed to provide some carcass and then during further programming code will growing more. Finally, after creating something sensible application that can do whatever You will got at least 300K bytes in the best case! (Yes, I know, that after building it with run-time libraries it is collapsing to several kilobytes, but using this method You need to distribute at least one dpl or bpl file with size more than 1Mb with such "tiny" application).
    And why it is so? Why this unnecessary code is attaching to application while building it? Because of linker (which is existing in Delphi too) is attaching code of all units, which names are referenced in already added units.

How to make small applications for Windows in Delphi?

    Answer not too complex. First refuse from using VCL (and forms in particular). Use only Windows.pas, ShellAPI.pas and Messages.pas. Call only API functions. If You want use some powered objects (lists, stringlists, inifiles and so on) be careful. Test size of Your application before and after including new unit to USES clause of Your project. If growing is too big, refuse from it, and think: if You can not create similar unit with only required functionality support? If You can, do it so. Do not afraid! Windows API contain all You need. But...
    Yes, I know it is not convenient. Refusing from VCL and the most of powerful objects provided by Delphi makes programming very hard and very slow. Often You already forgot (or even did not know) about several API calls. If You started Your carrier in Windows from Delphi, all these are hard twice. As a result You have to reduce additional functionality of your small apps made without VCL, simplify their behavior and got too poor code which without doubts looses in comparison with similar Delphi powered applications - even in their exterior look.

How to create good programs without VCL?

    All You need to create good programs is a good library of objects suitable to provide You with all services You want to have. TObject class is not bad basic to create clever objects that therefore do not need too many code and keep Your program size in reasonable limits. Indeed, growing of code when using VCL starts with TPersistent. This last is the ancestor class for most of VCL components. It is intended to provide Delphi VCL components and controls with ability to read their initial state from the form definition block located in executable. Refusal of VCL is first of all refusal of TPersistent. Because all components are descendents from TPersistent You can not use forms, components and controls. But controls what You usually use are not the part of Delphi. These all are part of Windows and Delphi only provides pleasing object-oriented interface with them. It is possible to provide similar object-oriented interface with all Windows controls such as button, label, edit, toolbar, and so on by hand just creating correspondent object class. And if it is programmed it can be re-usable not only by You but by anybody in the World. I think that it is not work for single programmer. So...

        Let us start XCL project and reduce code size of our applications!

    By given document I (Mr.Bonanzas) declare start of OPEN FOR ALL eXtreme Class Library project. Anybody who wants to join this project can contact me. I will provide members list of this project on my WEB page (here). Anybody who have ideas, suggestions and necessary experience is invited. Welcome to XCL!

 

graphic.gif (9935 bytes)

  XCL is freeware at all. In part, this means that nobody can sell it for any kind of charge. Anybody can use it for creating products of any kind, including commercial software products without any restrictions. As it is said usually in License Warranty Agreement,

"In no event shall the author be held liable for any damages whatsoever,including without limitation, damages for loss of business profits,business interruption, loss of business information, or any other loss arising from the use or inability to use the software."

Aren't XCL controls too poor?

   I can definitively say: NO. XCL controls even more power in some cases. Moreover, XCL allows to solve of some problems of exterior in Delphi applications, which could not be solved in VCL at all. E.g., it is a problem of flickering, which can be solved in XCL using add-ons. And, it is a problem of autosizing of forms (solved using add-ons) and proper scaling of those. And, it is a problem of appearing/disappearing of scrollbars, problem of resizing of thumb-button on scrollbars and problem of flickering of scrollbars. I can also add here, that many problems, which are interesting for beginners (e.g.: how to hide app from taskbar, how to rotate fonts), can be solved in XCL much easier then in VCL - just with one line of code.
   Oh, I forgot to mention the greatest problem - size of executable... In XCL it is solved too.


eXtreme Class Library

Last updated: 24.11.99

Why eXtreme Class Library?

'eXtreme' because it consists of objects not components. So application made with its can be eXtremely small.
'Class' because it is intended to provide interface with standard Windows controls such as button, checkbox, listbox, treeview, richedit and other Microsoft Foundation Class objects. Also it provides similar objects which are not windowed and not based on MFC like graphic controls in Delphi VCL. These all are needed to provide normal programming environment and in most cases too overloaded in Delphi with code which often are useless. For example, if You use TStringlist without sorting possibility code which provide this unclaimed feature will be added in any case and You can not refuse from it. And so on.
'Library' because it is must be FREE for use by anybody in the World who want use it. All members of XCL project must be agree what their code will be available with source for anybody who want to use it (not end application - that is out of the question). Only in that case still possible to improve this project and include new members.
   

How to start?

First, You have to get acquainted with agreements above. Then, You can download xcl.zip which contains XCL project sources at the current state. Then if You find it possible for You, join us (me)!

How to join?

Look at the task list and choose kind of problem what You can solve. Then e-mail me. After joining Your name will appear in members list and in task list. After finishing task You choose another task and so on. But work what You finished sometimes may require Your attention. You have to stay responsible for all corrections in your code. If You can not continue work with XCL or become busy for a time but your code need to be fixed or improved this work can be re-entrusted to another member of our project. Remember, that our association is free and voluntary union of programmers who agree to listen up another opinions, take and give advises, make and receipt suggestions, take part in any discussions concerning this project.

XCL programming basic principles.

Any object designed for eXtreme Class Library must satisfy to the following concepts:

XCL members list.

    Here You can see members of XCL project and data what they found possible be published about them. Also, in right columns You can see tasks that are made by them and current job of every member if he(she) working under. If You have questions or suggestions to particular member concerning task for which he is responsible You may contact him(her) directly if e-mail is available ( if not, contact me ).
    Names of base (usually abstract) classes are italicized, end classes intended to use in applets have bold names.

Member name

Tasks finished

Current task

Vladimir Kladov (Mr.Bonanzas)

http://mercury.spaceports.com/~bonanzas

1st member

XClass, XVisual , ZList, XWindow (+XWindowsManager), XApplet (modified by C.Kok), XForm (+XFormsManager), XFormAutoSizer, XControl, XControlAutoPlacer, XGraphics.pas (XPen, XBrush, XFont), XCanvas (+XCanvasManager), XCanvasObjectsManager, XControls.pas (XCustomControl, XLabel, XCustomBevel, XBevel, XPanel, XSplitPanel, XStatus, XSplitSizer, XGrep, XGauge, XHysto, XGroup, XPaint, XCustomCheckBox, XCheckBox, XRadioBox, XCustomCheck, XCheck, XRadio, XCustomButton, XButton, XDropButton, XScroller, XScrollBar, XScrollBox, XGrid, XListView, XTimer, XMenu, XResizeAntiFlicker, XEdit (+4 add-ons);
XMfcControl and its descendents: CCustomStatic, CLabel, CCustomPaint, CPaint, CPanel;
   ZDDB, ZHiBmp, ZDIBitmap, ZBitmap, ZIcon, ZGifDecoder, ZGif.

always working under documentation;

XCL Wizard.

Tim Slusher

http://www.nlcomm.com/~junior

2nd member

  ZStream, ZFileStream, ZMemoryStream (in XStreams.pas) and correspondent changes in XFileUtils.pas, XStrLists.pas.
  ZStrings, ZStringList in XStrLists.pas.
  CButton, CEdit, CMemo in XMFCControls.pas.
   CRichEdit, ... ?
C.Kok

http://huizen.dds.nl/~carlokok/cajws.html

3rd member

   Useful modifications of XApplets.pas allowing to minimize/restore XCL applet using its taskbar button pop-up (system) menu.
  Unit XDialogs.pas with Open/Save dialogs implementation.
 
Luke Guzsir (nick GuX)

candidate

  Small bug fix for Delphi3: type definition LongWord in Classes.pas.  
Sergey Kashalov (nick Gray)

http://www.mtu-net.ru/gray

candidate

  Changes of some type declarations (integer to cardinal) and other, leading to fix bug #1 with incompatibility in IE5 environment (or may be with some Delphi builds? - V.K.)  
Your name here   Task for You

?

 

XCL.hlp,

XGifClip;

ZJpeg;

applets made in Delphi XCL,

may be more?

 

XCL task list.

    classtab_ico.gif (1792 bytes)Here You can see list of available problems to solve named 'tasks' (I moved it into separate html, because this list became too big). If problem is solved or it is solving now then  name of member is appearing in right column of table below.  Any case name of task in left column is referred onto more detailed description of this one in separate html (if such description is ready). You may click it to read either project definition or final description if task finished. If You feel that task list not full, feel free to e-mail me about it to suggest new necessary task name and its brief and/or detailed definitions.
    Choose one of not allocated problems to become a member or if You consider that task list is not complete, add your own here. Feel Yourself free to use source of any solved task similar given to get a template to solve any other. If You give task be remember that Your code must satisfy to basic principles of XCL project. E-mail me, if You are ready to vote yourself as XCL developers team member.

Here You can see part of hierarchy tree with some of ready to use XCL controls.


XCL banner

XCL vs VCL. Let us make our Delphi programs small !

Even if You are not a member, but just use or plan to use XCL in your work, You may refer to this page using banner above. Just place it on your page with reference to my page either
(1) by copying and pasting banner above onto your page;
(2) or by inserting following html into your page html:

<a href=http://xcl.cjb.net" target="_blank"><img src="xcl_vs_vcl.gif" width=80 height=40 alt="XCL vs VCL. Let us make our Delphi programs small !" border=0></a>

 

XCL Forum

Now XCL Forum is open. You can go there and discuss XCL. Now it is empty, and waiting for your opinions, suggestions, questions, and so on.

 

XCL Articles

Here You can read text stories about XCL. Written by me and may be not only by me. My experience in leterature (especially in English) is not too great, so I will gladly accept your remarks and corrections concerning English - please by e-mail.

XCL snap

DOWNLOAD NEW VERSION HEREHere You can download the newest version (v1.62 from 25-Nov-1999) of XCL in xcl.zip (180K without samples).

DOWNLOAD SAMPLESHere You can download set of samples. I decided to store these in separate archive samples.zip (~106K) starting from v1.60.

DOWNLOAD UPDATE FROM v1.61 to v1.62If You have v1.61 (from 23-Nov-1999) installed, You may download this small archive with changes from v1.61 to v1.62 - xcl162.zip ( ~32K ).

XCL Applets.

    This article is created to place here links to downloadable applets created using XCL. If You, readers, used XCL to create some small utilities, which could be useful for other people, please e-mail me and I will place here either archive with your utility, or link to download it elsewhere from the Internet/FTP. And may be, link to your page.

resmon_ico.gif (1242 bytes)ResourceMonitor 1.0. Size: 30K. By Vladimir Kladov (C) 1999.
  • Shows GDI/User free resources (only for Windows9x). Freeware with source. Get source in xcl.zip (SAMPLE13). Here You can download archive with fully functional version (60K unpacked, 30K after UPXing). Download (28K).
launcher.gif (344 bytes) Freeware Launcher 1.0 Size: 51K. By Vladimir Kladov (C) 1999.
  • Right-side autohiding quick launch panel applet (for Windows 9x and NT4). Freeware, source on request. Here You can dowload archive with functional executable and instructions of installation and maintaining. Download (50K).

 

Using of XCL

I found that some developers can not immediately get desirable effect of reducing executable by using XCL or even compile project without errors. May be it is because they did not pay attention to some important info. May be it is because such info is located by parts in different places of this documentation. Here I will try to concentrate references to such significant info, calling its as 'lessons'.


XCL bugs and known problems

XCL Links.

XCL mailing list.

   Register below, and You will receive a message into your mail-box every time than this page is updated.

Join the mailing list, enter your e-mail address:

Subscribe      Unsubscribe


DOWNLOAD NEW VERSION OF XCL DOCUMENTATIONHere You can download the total set of this documentation files in a single archive XCLdoc.zip     Idea of XCL Copyright (C) Kladov Vladimir, 1999