Fixing graphic problems in Diablo I and Diablo II

I’m so sucking and low player that actually for past fifteen (!) years I’ve been playing in actually four games: Diablo I, Diablo II, Civilisation and Transport Tycoon. The first two caught my heart so deeply that I even try to run them (Diablo I!) on Windows 7. And… I actually managed to do this.

Since, this involved a lot of googling and asking, here is a summary of my findings.

Read More “Fixing graphic problems in Diablo I and Diablo II”

Delphi TreeView with checkboxes

Delphi’s TListView supports checkboxes out-of-the-box. You just have to set Checkboxes to True and iterate through TListView.Items to find, if particular item have Checked property set to True. You can even enable your own OnCheckboxClick event (not available by default) — I wrote about it here. But very similar to TListView‘s TTreeView does not support checkboxes by default at all.

So, you have to craft entire solution yourself.

Read More “Delphi TreeView with checkboxes”

ListView’s OnCheckboxClick event

Unfortunately, the TListView object does not have a specific event fired, when the Checked state changes for a TListItem (an item in the ListView). If you need to react in such situation, you have to mimic this behaviour yourself. Here are some tips on this.

Every Delphi’s Guru will probably think about subclassing and catching windows messages here. If you’re one of them — at you’ll find an example. But, there’s an easier way to achieve the same.

Read More “ListView’s OnCheckboxClick event”

Read and write ID3Tag in Delphi without any extra components [updated]

There’s an (probably very) old Delphi’s article on how to build simply MP3 Player using only TMediaPlayer component available in every Delphi edition. Since powerful XAudio is no longer offcially available to Windows developers and other MP3 players or components are quite expensive, when it comes to pay for the license, then this could be a good alternative. But, this article catched my attention for a completely different reason — reading and writing ID3Tag v1 in MP3 files, without using external libraries, just the pure Delphi code.

Read More “Read and write ID3Tag in Delphi without any extra components [updated]”

XAudio SDK for Delphi

XAudio SDK probably is (or at least was) the most powerful, yet freeware Software Developer Kit for playing MP3 files in Delphi. It offered outstanding possibilities. Let’s say that fifty (!) events, you could use to write any MP3-related software in Delphi is enough good mark. And there’s more. That is why, it was really pity to me to discover, that this library is no longer available neither to Windows nor free. And finding replacement is really hard, if not impossible.

Read More “XAudio SDK for Delphi”