In my last blog post Getting the Windows version, I claimed that there is no way to get the actual version number of Windows 10 without reading the version information of the Kernel32.dll and interpreting it 1. Since then I have been told that there is actually a Registry key that contains the Windows version: … Continue reading Getting the Windows version revisited
Category: Delphi
Getting the Windows version
When Microsoft introduced Windows 10 they said it would be the last version of Windows ever. They lied of course, because since then we have had multiple versions of an operating system called "Windows 10". Even worse, starting with Windows 8 they made their WinAPI function GetVersionEx lie about the Windows version, if the program … Continue reading Getting the Windows version
A simple way to create an URL label in Delphi
An URL label is a TLabel on a form which displays some blue, underlined text which, when clicked with the mouse, opens a web page. This kind of labels is nothing new in Delphi, I remember using them even back in the 1990s, but they always were a pain in the lower back to create: … Continue reading A simple way to create an URL label in Delphi
Image Processing Magic
It's a bit frightening what image processing "magic" can do to a picture: Original: Processed: And that's not even advanced "magic" but some rather simple code written in Delphi (most of which I can't publish here unfortunately). What it does is: Smooth brigthness by applying a brigthness map. Adjust for lens edge blur by selective … Continue reading Image Processing Magic
Extend the event OnClick of all MenuItems in the screen to execute another block of code
Shameless self promotion: On StackOverflow somebody asked the question in the title and I answered it. And as you might have guessed, I am mighty proud of having had that idea. It might be interesting to know that this is how GExperts fixes some of the IDE bugs and enhances some forms: It creates a … Continue reading Extend the event OnClick of all MenuItems in the screen to execute another block of code
Things that every desktop program should do
There are a few things that every single one of our internal programs should do: Every dialog should be sizeable if it makes any sense at all. Delphi makes that easy with the Align and Anchor properties. Ask yourself the following questions. If you answer any of them with Yes, you should make the dialog … Continue reading Things that every desktop program should do
Changes between GExperts 1.3.12 and 1.3.13
I had to look them up myself, so it took a while but here they are, the changes, bugfixes and improvements between the GExperts 1.3.12 (released 2018-12-22) and 1.3.13 (released yesterday, 2019-03-30): Bugfix (#105): Set Tab Order expert no longer worked with Delphi 6, 7 and 2005 (Remember what I wrote about testing these versions?)Improvements … Continue reading Changes between GExperts 1.3.12 and 1.3.13
GExperts 1.3.13 experimental twm 2019-03-30 released
Just in time before April fools day 2019 there is the new GExperts release (it's still 2019-03-30 so you are safe 😉 ). Please be aware that I mostly work with Delphi 2007, so this version can be regarded as tested quite well, followed by Delphi XE2. The others are only known to compile and … Continue reading GExperts 1.3.13 experimental twm 2019-03-30 released
dzEditorLinendsFix 1.0.4 released
This is nothing to write home about, really, just a small change: Previously when starting the tool, the main window was shown for a short time before it got hidden. Now that no longer happens. Don't now what this is about? You are probably lucky then and don't need this tool. But if you still … Continue reading dzEditorLinendsFix 1.0.4 released
GnuGetText.pas using Utf8ToUnicodeString instead of Utf8ToWideString
A few weeks ago, Sue King contacted me because there was a problem with using dxGetText together with the Nexus DB components. For Unicode aware Delphi versions gnugettext.pas declares a function utf8decode which calls System.UTF8ToWideString. After replacing a call to utf8decode with UTF8ToUnicodeString the problem went away. Since I don't want to break backwards compatibility … Continue reading GnuGetText.pas using Utf8ToUnicodeString instead of Utf8ToWideString