TIOBE Index for August 2026

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular web sites Google, Amazon, Wikipedia, Bing and more than 20 others are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written. The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system.
TIOBE Index for August 2026

TIOBE index

String, AnsiString in Delphi 2007, in Delphi 2009. Differences and Migration Implications

CodeGear Delphi 2007, 2009
Official Unicode support was added in Delphi 2009 with code name Tiburón.

In Delphi Versions <= 2007, string was an alias for AnsiString (a single-byte character string type).
In Delphi Versions >= 2009, this changed, and string became an alias for UnicodeString (a multi-byte, UTF-16 character string type), while AnsiString remained available as a type for 8-bit character data.

This change was a major shift to include full Unicode support and has significant implications for code written in Delphi <= 2007 that is being migrated to Delphi 2009 or later.

Key Differences and Migration Implications

String Alias:
  • Delphi 2007 and earlier: String = AnsiString. The data was 8-bit and its interpretation (code page) was generally linked to the operating system's regional settings.
  • Delphi 2009 and later: String = UnicodeString. The data is 16-bit (WideChar), typically using UTF-16 encoding, allowing for a broad range of characters.
Character Types:
  • Delphi 2007: Char = AnsiChar (8-bit).
  • Delphi 2009: Char = WideChar (16-bit).
Type   | Delphi 2007 | Delphi 2009, XE
-------+-------------+----------------
string | AnsiString  | UnicodeString
char   | AnsiChar    | WideChar
pchar  | PAnsiChar   | PWideChar

Data Handling:
  • Direct assignments between AnsiString and the new UnicodeString (string) in Delphi 2009 involve implicit conversions, which can cause to performance issues or, more importantly, data loss if not handled carefully. The compiler will often issue warnings for these conversions.
  • The internal structure of AnsiString itself changed slightly between versions (e.g., in Delphi 2009, it stores a code page number, which was not present in Delphi 2007's AnsiString), making sharing strings between DLLs compiled with different versions problematic.

Migration pieces of Advice

To migrate code that uses strings between these versions, you generally have preferred approaches:
  1. Explicitly Ansi-fy the Code (Short-term fix): Replace all instances of the generic string, Char, and PChar with their explicit 8-bit equivalents: AnsiString, AnsiChar and PAnsiChar. This retains the old behavior but means your application will not leverage Unicode natively and will still encounter conversion overhead when interacting with the rest of the Unicode VCL/RTL in Delphi 2009.
  2. Resort to Unicode: Update your code to use the native UnicodeString (string) type throughout your application. Use AnsiString only at the boundaries where you interact with legacy data, files, or external APIs that require ANSI encoding (e.g., when saving or loading data from an older database). Use functions like TEncoding.GetString to properly decode data.
  3. // Delphi <= 2007 code — assumes 1 byte per char, breaks silently under Unicode procedure TrimBuffer(var Buf: array of Char; MaxLen: Integer); var P: PChar; begin P := @Buf[0]; Inc(P, MaxLen); // wrong stride Char is 2 bytes P^ := #0; end;
    The correction isn’t simple recompilation, but to audit every PChar, every SizeOf(Char) assumption, and every place where raw bytes to a file or socket expecting ANSI.
  4. Compiler directives and conditional code
    The Version constants are not intuitive but they may lead to mistakes:
    {$IFDEF VER150} // Delphi 7 {$IFDEF VER185} // Delphi 2007 Win32 has VER180 & VER185 {$IFDEF VER200} // Delphi 2009 Tiburon {$IFDEF VER210} // Delphi 2010 Weaver
    Prefer to use Compiler Version than Version constants
    {$IF CompilerVersion >= 20.0} // Delphi 2009 and higher ... {$ELSE} ... {$IFEND}
    If the codebase has already passed one migration, it likely has {$IFDEF} blocks keyed to old version constants. Don’t delete these blindly — audit each one with attention.

The ANSI function to Ansi-fy, syntax for string


Ansi-fy
const C ='...'; const C: AnsiString ='...';
CompareText AnsiCompareText
CompareStr AnsiCompareStr

Delphi 2007 and Delphi 2009+ difference in string types. Migration
To be continued

Delphi Version in Windows System Registry

Initially the project was made October 27, 2010 by Rodrigo Ruz
The essence of the project is to detect the Delphi (or Rad-Studio) versions installed in a system by check the existence of registry keys under the HKEY_CURRENT_USER root. Good illustration to the article Default system registry path for Delphi and C++Builder

The project was simplified, only one form was left and newer Delphi versions from XE2 up to Delphi 13 Florence were added.
The Delphi version remained the same - 2007
Checked in Delphi 2007
Date last modified: August 25, 2026

The project Delphi Version in System Registry is available in My Github Repository

Default system registry path for Delphi and C++Builder

Embarcadero logo
User Settings Root folder - HKEY_CURRENT_USER
Shared/Global Settings Root folder - HKEY_LOCAL_MACHINE
Delphi logo

Delphi


Borland Delphi 2Software\Borland\Delphi\2.0
Borland Delphi 3Software\Borland\Delphi\3.0
Borland Delphi 4Software\Borland\Delphi\4.0
Borland Delphi 5Software\Borland\Delphi\5.0
Borland Delphi 6Software\Borland\Delphi\6.0
Borland Delphi 7Software\Borland\Delphi\7.0
Borland Delphi 8Software\Borland\Delphi\8.0
Borland Developer Studio 2005Software\Borland\BDS\3.0
Borland Developer Studio 2006Software\Borland\BDS\4.0
CodeGear RAD Studio 2007Software\Borland\BDS\5.0
CodeGear RAD Studio 2009Software\Borland\BDS\6.0
CodeGear RAD Studio 2010Software\Borland\BDS\7.0
Embarcadero RAD Studio XESoftware\Embarcadero\BDS\8.0
Embarcadero RAD Studio XE2Software\Embarcadero\BDS\9.0
Embarcadero RAD Studio XE3Software\Embarcadero\BDS\10.0
Embarcadero RAD Studio XE4Software\Embarcadero\BDS\11.0
Embarcadero RAD Studio XE5Software\Embarcadero\BDS\12.0
Embarcadero RAD Studio XE6Software\Embarcadero\BDS\14.0
Embarcadero RAD Studio XE7Software\Embarcadero\BDS\15.0
Embarcadero RAD Studio XE8Software\Embarcadero\BDS\16.0
Embarcadero RAD Studio 10.0 SeattleSoftware\Embarcadero\BDS\17.0
Embarcadero RAD Studio 10.1 BerlinSoftware\Embarcadero\BDS\18.0
Embarcadero RAD Studio 10.2 TokyoSoftware\Embarcadero\BDS\19.0
Embarcadero RAD Studio 10.3 RioSoftware\Embarcadero\BDS\20.0
Embarcadero RAD Studio 10.4 SydneySoftware\Embarcadero\BDS\21.0
Embarcadero RAD Studio 11 AlexandriaSoftware\Embarcadero\BDS\22.0
Embarcadero RAD Studio 12 AthensSoftware\Embarcadero\BDS\23.0
Embarcadero RAD Studio 13 FlorenceSoftware\Embarcadero\BDS\37.0

Software implementation

C++Builder logo

C++Builder


Borland C++Builder 1Software\Borland\C++Builder\1.0
Borland C++Builder 3Software\Borland\C++Builder\3.0
Borland C++Builder 4Software\Borland\C++Builder\4.0
Borland C++Builder 5Software\Borland\C++Builder\5.0
Borland C++Builder 6Software\Borland\C++Builder\6.0
Borland Developer Studio 2006Software\Borland\BDS\4.0
CodeGear RAD Studio 2007Software\Borland\BDS\5.0
CodeGear RAD Studio 2009Software\Borland\BDS\6.0
CodeGear RAD Studio 2010Software\Borland\BDS\7.0
Embarcadero RAD Studio XESoftware\Embarcadero\BDS\8.0
Embarcadero RAD Studio XE2Software\Embarcadero\BDS\9.0
Embarcadero RAD Studio XE3Software\Embarcadero\BDS\10.0
Embarcadero RAD Studio XE4Software\Embarcadero\BDS\11.0
Embarcadero RAD Studio XE5Software\Embarcadero\BDS\12.0
Embarcadero RAD Studio XE6Software\Embarcadero\BDS\14.0
Embarcadero RAD Studio XE7Software\Embarcadero\BDS\15.0
Embarcadero RAD Studio XE8Software\Embarcadero\BDS\16.0
Embarcadero RAD Studio 10.0 SeattleSoftware\Embarcadero\BDS\17.0
Embarcadero RAD Studio 10.1 BerlinSoftware\Embarcadero\BDS\18.0
Embarcadero RAD Studio 10.2 TokyoSoftware\Embarcadero\BDS\19.0
Embarcadero RAD Studio 10.3 RioSoftware\Embarcadero\BDS\20.0
Embarcadero RAD Studio 10.4 SydneySoftware\Embarcadero\BDS\21.0
Embarcadero RAD Studio 11 AlexandriaSoftware\Embarcadero\BDS\22.0

Wallet of Satoshi. Some troubles revealed

I spent a whole day of my only life trying to figure out what the matter was.

Wallet of Satoshi
App Version 3.3.6 (352), iOS 26.6

This complements the information from the WoS official website and I think may be useful to those who also encounter similar problems.
Switch between custodial and self-custodial wallet of Satoshi
The custodial wallet runs with a direct connection with the Belarusian IP address. But the self-custodial wallet only runs via VPN! And I couldn't switch the wallet to non-custodial wallet without VPN.


Custodial Wallet

Switch between custodial and self-custodial wallet of Satoshi without VPN freezes at three-quarters part
Switch between custodial and self-custodial wallet without VPN freezes at three-quarters part.

Self-custodial Wallet

Wallet of Satoshi stuck without VPN at startup during Syncing... at three quarters
Wallet of Satoshi stuck without VPN at startup during Syncing... at three quarters.
If self-custodial wallet was once initialized it is possible to return to custodial wallet by menu.
Create a New Wallet / Restore Existing Wallet of Satoshi
If self-custodial wallet was not once initialized on device, this state of the application can only be overcome either by restoring the self-custodial wallet of Satoshi, if it was already once created before, or by reinstalling the application.
Force-closing the app and restarting leads to nothing new, the app starts in the same state.

No or lost VPN

Wallet of Satoshi with message: Recovery Failed! Please check your 12 words and try again.
1. For example, if the connection requires VPN, Wallet of Satoshi displays a message: "Recovery Failed! Please check your 12 words and try again."
Green color indicates that the words are correct, there is a connection problem.
Turn on the VPN before starting the wallet recovery. If this status happened, the VPN will not help, restart WoS.
2. Red and green colors in the font can serve as a clue for an attacker while words brute force.
Wallet of Satoshi gives out the message: A network error occured. Please check your connection.
If the VPN connection is dropped or you disconnect, Wallet of Satoshi gives out the message: "A network error occured. Please check your connection."
The message disappears when the VPN is restored.
Without VPN stuck the Wallet of Satoshi on the Finalizing... at the eleventh of twelve parts of circle
Switching from WoS Custody Wallet to Self-custodial wallet without VPN stuck the app on the Finalizing... at the eleventh of twelve parts of circle.
Despite the fact that the Custodial and Self-custodial wallets have different Lightning addresses, the wallet in Self-custodial mode receives notifications about the money arrival to the Custodial address without VPN enabled.

On August 16th I sent a link to this description of my experience with the Wallet of Satoshi, they gave a ticket and not a word.

Conclusion: soon of all you'll be able to use your Wallet of Satoshi from Belarus without a VPN.

Pygame 2.6.1. was not installed on Python 3.14.6 (3.14.5)

Pygame logo
Running py -m pip install -U pygame --user to install Pygame the error message occured: Getting requirements to build wheel did not run successfully.
After update to pillow-12.2.0 the Pygame was not install all the same.

pygame 2.6.1 was released: Sept. 29, 2024

Pygame is dead?

For newer versions of Python (e.g. 3.14+), it's best to use the latest community release: python -m pip install pygame-ce.

TitleBar - Delphi component which adds many features: AutoHide, SetRegion, border width for form, color for everything, good looking borders, ShowInTaskbar, etc.

TitleBar - Delphi component which adds many features
This is a curiosity component demonstrates, what can be made of Delphi forms and control elements.
This is another note for Delphi code modernization trend
Changes in TTitleBar by Valient Newman in an attempt to revive an old project and to make the component meet the requirements of Delphi 6 and higher.
Corrections were tested in Delphi 2007, 2009 environment. Date last modified by Newman: January 30, 2025
Checked in in Delphi 2007, 2009
Updated January 30, 2025

TTitleBar v2.01

TitleBar - Delphi component which adds many features: AutoHide, SetRegion, border width for form, color for everything, good looking borders, ShowInTaskbar, etc.

The components TTitleBar v2.01 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. Source code is provided free of charge. The software is provided to you “AS-IS”. As such, there is no guarantee of any support whatsoever.


credits to:
Seth Taylor made this component on February 8, 1999 on Delphi 3

Christmas tree on Python on Turtle

Christmas tree on Python on Turtle
# Christmas tree on Python import turtle def line(x1, y1, x2, y2): turtle.penup() turtle.goto(x1, y1) turtle.pendown() turtle.goto(x2, y2) screen = turtle.Screen() screen.title("Christmas Fir tree") screen.setup(500, 500) # To turn the drawing upside down screen.setworldcoordinates(0, screen.window_height(), screen.window_width(), 0) turtle.pencolor('green') line(200,210,220,230) line(220,230,180,230) line(180,230,200,210) line(200,230,230,250) line(230,250,170,250) line(170,250,200,230) line(200,250,250,270) line(250,270,150,270) line(150,270,200,250) line(200,270,270,290) line(270,290,130,290) line(130,290,200,270) line(200,290,290,310) line(290,310,110,310) line(110,310,200,290) turtle.hideturtle() turtle.exitonclick()

This simple code example was intentionally made similar to Christmas tree on Pascal on Android

The Christmas tree on Python on Turtle is available in My Github Repository

Christmas tree on Pascal on Android

Fir Tree on Pascal N-IDE on Android

Fir Tree on Pascal N-IDE on Android

Realized on Pascal N-IDE - Editor Compiler.

Pascal N-IDE - Editor Compiler, Nguyễn Mậu Hiếu, mauhieudev on Google Play

The Christmas tree on Pascal on Android is available in My Github Repository



Fir Tree Code on Pascal N-IDE on Android
program Firtree; uses graph, crt; var g,h: integer; begin g := detect; initgraph(g,h,'EGAVGA.BGI'); setcolor(2); line(200,210,220,230); , line(220,230,180,230); line(180,230,200,210); line(200,230,230,250); line(230,250,170,250); line(170,250,200,230); line(200,250,250,270); line(250,270,150,270); line(150,270,200,250); line(200,270,270,290); line(270,290,130,290); line(130,290,200,270); line(200,290,290,310); line(290,310,110,310); line(110,310,200,290); readln; end.

Once upon a time there were Delphi Haters and their list of vendors who stopped supporting Delphi

Cemetery of Delphi Vendors who stopped supporting
I found Delphi Haters' Blog. Vendors who stopped supporting Delphi with date: Saturday, July 24, 2010
The fact is that Delphi/Object Pascal is in 8th position on tiobe.com TOP10 list of programming languages for November 2025 and the fact is encouraging.
There is fresh, the almost exact copy of origin list of vendors who stopped supporting Delphi I made a copy of these lists for myself and deleted the duplicates in them.
As for me, this is not a Delphi Vendors Cemetery, but an expanded window of opportunity and an experience that can be borrowed.

I look for information about them in search engines.

Vendors who went out of business

  • athrasoft.com – Vendor of Athrasoft Plugins
  • cgiexpert.com – Vendor of CGIExpert
  • odbc98.com – Vendor of ODBC98 – reason cited as poor or non-existent sales
  • classicsw.com – Vendor of Classic Component
  • PIMFlashfesoft.com – Vendor of PIMFlash
  • turbopower.com – Vendor of TurboPower Components
  • maxcomponents.net – Vendor of Max Help and Max Components
  • buypin.com – Vendor of B.S. components
  • vistadb.com – Vendor of Apollo database
  • asp-express.com – Vendor of classic ASP components
  • classicworks.com.au – Vendor of Classworks Development VCL
  • defined.net – Vendor of Defined Forms
  • dream-com.com – Vendor of Dream Company
  • crynesoft.com – Vendor of Genesis Component Pack
  • teletech-systems.com – HelpWriter application
  • volgadb.com – Vendor of Volga Database
  • DFS (Delphi Free Stuff)
  • animatedmenus.com – Vendor of Animated Menus – cited Poor sales
  • acctsync.com – Vendor of QuickBooks Components
  • DuckReports – Vendor of Duck Reporting Components
  • BalticSolutions – Vendor of ColorMemo
  • Helping Hands Software – n/a
  • UDC Corp – Vendor of MemoWriter, PowerSpreadsheet
  • IBrightSolutions – Vendor of Simulation Software
  • Unley Software – KeyDB
  • DictaSoft.com, Layout Components
  • CrystalVCL.net, Crystal VCL and other components
  • Cando Framework
  • RHITech.com, Excel Add-in component
  • DScriptVCL.com, Delphi Scripting VCL components
  • CSS-Software.com, CSS Component Suite
  • JB Components/ JB Component Suite
  • CytonResearch.com, VCL Component Packs
  • Codecellerate.com, Drawing Engine,
  • EZCad Soft, EZSoft Engineering
  • ValdSoft, VSLib component package
  • AriseSoft, AriseSoft Shell Component Pack (and others)
  • CoolPaint.com, HTML tokenizer, HTML mini-viewer, Cool Chart
  • ksv.hypermart.net, Handmade VCL Components
  • alphadomino.ru, Gantt Chart components
  • ta4delphi.com, Technical Analysis Charting components
  • praktical.com, Praktical Organic button components
  • maverick.co.uk, Aqua Mac-looking components
  • FlatStyle.de, Flat Style Components
  • SlickTools.com, InfoMatters office components
  • MediaPilot.com, Installation components
  • Intag.de, DxComponent Collection

Vendors who stopped supporting Delphi

  • Softel VDM – Vendor of SftTree, SftBox, SftButton – reason cited as “massive software piracy”
  • AHM Tritron Tools – Vendor of AHM Components
  • adrock.com – Adrock Calendar Components (GPL)
  • tekhnologos.com – Their VCL library is no longer for licensing
  • SweetControls.com – Sweet Controls
  • degisy.com – Degisy Controls

Vendors who stopped supporting one of their Delphi components/ or all of their products

  • MicroOlap.com, Packet Sniffer for Delphi, end of life
  • SciBit.com MySQL Components, end of life
  • KsDev.com, Block Engine, Office VCL (disappeared from their site)
  • lphaAsp.com Alpha Corporation, Alpha Units, Alpha Interceptor (disappeared from their site)
  • Djordje Peric, PDJ Packs (their website is no longer available)
  • CodeBot.com, CodeBot library (no longer available for download)
  • SuiPack.com, KeyDB (formerly from SUIPack)
  • Syntetix.com, Theme Control
  • CoolDev.com (All their Delphi products are now freeware)
  • 9spice.net RapidSolutions, RapidTree, 9Rays Treeview
  • Willmark.ru, WillMark Tree Wizard
  • GeoCities/Stephan Marais – Open Sybase CT-Library Library
  • TekhneLogos.com, PowerCad, supposedly given a non-existent 10% discount on Torry’s
  • Baltsoft.com, ProjectPlus components
  • Tops.com.pl, SMSC Delphi components (cited as “no demand” or “very low response”)
  • Timelesstech.com, all their Delphi components (Lock & Key, Fax components)

DFS EllipsisPanel is Delphi component that can shorten the caption text, replacing it with '...'

TdfsEllipsis Panel Demo
Delphi code modernization trend
Changes in TdfsEllipsisPanel have been made by Valient Newman to make the component meet the requirements of Delphi 2, 2009 and higher.
Checked in 2009
Updated 22 dec 2025

TdfsEllipsisPanel v1.20

DFS EllipsisPanel is Delphi component that can shorten the caption text, replacing it with '...' when it does not fit the available space. Also a generic function that "ellipsifies" a string is provided.

The components TdfsEllipsisPanel v1.20 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. All DFS source code is provided free of charge. The software is provided to you "AS-IS". As such, there is no guarantee of any support whatsoever. The component throws an Access violation error and its source code can be used as an example for study.



credits to:
Bradley D. Stowers The author of All Delphi Free Stuff (“DFS”)
Copyright 1996, Brad Stowers. All Rights Reserved.

DFS GrabBar - Delphi component, grab bar, or splitter, to allow two windows to be resized simultaneously

TdfsGrabBar Demo
Delphi code modernization trend
Changes in TdfsGrabBar have been made by Valient Newman to make the component meet the requirements of Delphi 2, 2009 and higher.
Checked in 2009
Updated 22 dec 2025

TdfsGrabBar v1.17

DFS GrabBar is a bar that allows two TWinControl components to be resized by dragging it.

The components TdfsGrabBar v1.17 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. All DFS source code is provided free of charge. The software is provided to you "AS-IS". As such, there is no guarantee of any support whatsoever.



credits to:
Bradley D. Stowers The author of All Delphi Free Stuff (“DFS”)
Copyright 1996, Brad Stowers. All Rights Reserved.

DFS MRUFileList - Delphi component to simplify adding MRU file lists to menus

TMRUFList Demo with RadStudio Delphi 2009 Closed Files list
Delphi code modernization trend
Changes in TdfsMRUFileList have been made by Valient Newman to make the component meet the requirements of Delphi 2, 2009 and higher.
Checked in Delphi 2007, 2009
Updated 21 dec 2025

TdfsMRUFileList v2.68

DFS MRUFileList - Delphi component that greatly simplifies adding MRU file lists to menus.
TMRUFList Demo was made with RadStudio Delphi 2009 Closed Files list in mdFileNameOnly.

The components TdfsMRUFileList v2.68 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. All DFS source code is provided free of charge. The software is provided to you "AS-IS", and all risks and losses associated with it's use are assumed by you. As such, there is no guarantee of any support whatsoever.



credits to:
Bradley D. Stowers The author of All Delphi Free Stuff (“DFS”)
Copyright 1996, Brad Stowers. All Rights Reserved.

MiTeC File Explorer is Windows Explorer-like component

TMFileExplorer Demo
Delphi code modernization trend
Changes in TMFileExplorer have been made by Valient Newman to make the component meet the requirements of Delphi 6 and higher.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 20 dec 2025

TMFileExplorer v1.15

MiTeC File Explorer is Windows Explorer-like component.

The components TMFileExplorer v1.15 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. All source code is provided free of charge. As such, there is no guarantee of any support whatsoever.



credits to:
Michal Mutl his GitHub
Copyright © 1999, 2003.

DFS Icon Controls: Icon ComboBox and Icon ListBox caching components for Delphi

TdfsIconComboBox Demo with Delphi 2009 icons
Delphi code modernization
Changes in TdfsIconComboBox and TdfsIconListBox have been made by Valient Newman to make the component meet the requirements of Delphi 2, 2009 and higher.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 18 dec 2025

TdfsIconComboBox and TdfsIconListBox v1.17

The caching Icon ComboBox and Icon ListBox components for Delphi.

A dropdown list style combobox that displays the icons that exist in a given file, and a listbox that displays the icons that exist in a given file, either horizontally or vertically.

TdfsIconListBox Demo with Delphi 2009 icons

Features: Optionally, the control can disable itself when the filename is invalid. Optionally, the control can load icons "on demand." This speeds up the initialization process greatly because all icons do not have to be loaded when the control is created. Many file formats can be read from, including: .EXE, .DLL, .ICO .ICL { PCTools? Icon Library .NIL { Norton Icon Library ListBox can simulate a grid of icons, allowing you to set the number of icons to be displayed in both the X and Y direction. This setting can be changed dynamically.

The components TdfsIconComboBox and TdfsIconListBox v1.17 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments. All DFS source code is provided free of charge. As such, there is no guarantee of any support whatsoever.



credits to:
Bradley D. Stowers The author of All Delphi Free Stuff (“DFS”) Copyright 1996, Brad Stowers. All Rights Reserved.

FWTrayIcon - component for registering class to work with the system tray

FWTrayIcon - component for registering class to work with the system tray demo
Delphi code modernization
Changes in TFWTrayIcon by Valient Newman to make the component meet the requirements of Delphi 2009 and higher.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 18 dec 2025

TFWTrayIcon v1.05

Сomponent for registering class to work with the system tray.

The component TFWTrayIcont v1.05 is available in My Github Repository

The component has realization issues for instance with hint display and the use of this component is on your own risk.

The software is provided as is without any garanties and warranty.
This component can be freely used and distributed in commercial and private environments.



credits to:
Fangorn Wizards Lab Exstension Library
Alexander (Rouse_) Bagel, his GitHub
© Fangorn Wizards Lab 1998 - 2005.

FWHint - component to register class to work with application hints

FWHint - component demo
Delphi code modernization
Changes in TFWHint by Valient Newman to make the component meet the requirements of Delphi 2009 and higher.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 17 dec 2025

TFWHint v1.05

Сomponent for registering class to work with application hints.

The component TFWHint v1.05 is available in My Github Repository

This component can be freely used and distributed in commercial and private environments.



credits to:
Fangorn Wizards Lab Exstension Library
Alexander (Rouse_) Bagel, his GitHub
© Fangorn Wizards Lab 1998 - 2005.

DlgTest is design-time testing of TCommonDialog component descendants

CodeGear Delphi 2007
Delphi legacy code modernization
Corrections brought in DlgTest by Valient Newman to make the component meet the requirements of Delphi 6, when the design-time and runtime code must be separated.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 17 dec 2025
The component DlgTest is available in My Github Repository This component can be freely used and distributed in commercial and private environments.

DlgTest v1.05

Design-time testing of TCommonDialog component descendants.
credits to :
Bradley D. Stowers The author of All Delphi Free Stuff ("DFS")
Copyright 1996, Brad Stowers. All Rights Reserved.

DFS Color Button

Delphi legacy code modernization
Corrections brought in CBtnForm, ColorAEd, DFSClrBn by Valient Newman to make the component meet the requirements of Delphi 2, 2009 and higher, where WinTypes, WinProcs units are absent.
Checked in Delphi 7 and Delphi 2007, 2009
Updated 15 dec 2025

TdfsColorButton v2.62

A Windows 95 and NT 4 style color selection button, which displays a palette of 20 color for fast selection and a button to bring up the color dialog.

This component can be freely used and distributed in commercial and private environments.

The component DFS Color Button is available in My Github Repository



credits to :
Bradley D. Stowers The author of All Delphi Free Stuff ("DFS")
Copyright 1996, Brad Stowers. All Rights Reserved.

If WinTypes and WinProcs units are absent in Delphi

Alias to the project: WinProcs=Windows WinTypes=Windows
WinTypes and WinProcs units are absent in Delphi 2 and higher.

WinTypes.pas and WinProcs.pas are units from Windows 3.1x., they come from Turbo Pascal and Delphi 1.
In Win9x and later they were replaced with Windows.pas.


First solution to add an alias to the project: WinProcs=Windows, and WinTypes=Windows.
Delphi admits some aliases. For example, aliases for backwards compatibility from WinProcs and WinTypes to Windows.
The full string with conditional compilation directives may be sush as WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

Second solution is to use in code conditional compilation directives for various Delphi versions.

{$IF CompilerVersion >= 9.0} // Delphi 2 and higher Windows, {$ELSE} WinTypes, WinProcs, {$IFEND}
Remaking old components for Delphi
Переделывая старые компоненты для Delphi