From Jeff Overcash (overcash@onramp.net):
There is a bug in some video cards in the way they handle the ImageList API. When an ImageList is being built in memory that cards will freeze the computer or corrupt the images when they have to swap the ImageList back out to main memory to complete the building on large imagelist's like the 180+ image component pallete list. The S3 chipset has been particularly problematic (Win98 is even worse).
Try these
Apply SP2 and SP3 to your Delphi4 at
http://www.inprise.com/devsupport/delphi/downloads/index.html.
SP2 tries to workaround the problem by prebuilding the imagelist large
enough so it should not start in internal memory and start in main
memory.
Get the latest driver (www.s3.com or your vendor if your vendors
doesn't work, try the S3 as they tend to be more compliant)
Start Delphi with the -ns switch
Under the [display] section of the SYSTEM.INI file
add the following line
BusThrottle=1 (reboot afterwards)
Reboot in safe mode and start Delphi. Goto the properties of the
component pallet and hide all the controls that you rarely use. This
will reduce the imagelist that is getting built and might get you under
the threshold.
reduce the hardware acceleration for the card.
(display->properties->settings->advances->performance)
play with color depth/resolution 1024x768 in 16 bit color seems the
worse (particularly with Delphi 3).
Get the latest DirectX drivers.
Also Delphi 4 can not run in Win98 under 16 color mode. You must be at
least at 256 colors.
PS. Both SP2 and SP3 try to workaround this by creating the initial
ImageList large enough so that it either a) starts in main memory or b)
will not have to grow while adding. There really is not much more that
Borland can do. This is a driver bug and the workarounds have actually
exposed bugs in other drivers that deal with creating large initial
ImageLists. In this case Borland was damned if they did, damned if they
didn't. SP1 was included in SP2 so when you installed SP2 you also got
the first patch. If the BusThrottle works for you this is by far the
best solution. All it does is instruct the driver that it must give a
little time slice to the OS so affects on performance are not noticable
(so far no one has reported back to me that they can even tell a
difference between using and not using the BusThrottle setting except
that Delphi runs). Unfortunately not all drivers respect this setting.