GExperts bug: CTRL+V on FMX form designer inserts into secondary editor window

I got a bug report for GExperts and Delphi 10.4 that's really curious: When a secondary editor window is open in the IDE and the FMX form designer is active, trying to insert a component from the clipboard into the form inserts the textual description of that component into the editor windows instead. I could … Continue reading GExperts bug: CTRL+V on FMX form designer inserts into secondary editor window

How to fix the “teEngine not found” compile error

Today I had a very strange compiler error in Delphi 10.2, that occurred on one computer but did not occur on another computer: myUnit.pas(28): error F2613: Unit 'TeEngine' not found. The project was checked out from svn on both computers, so the source code was identical. So the unit "VCLTee.TeEngine" from TeeChart was in a … Continue reading How to fix the “teEngine not found” compile error

Allow svn:author to be changed for a subversion repository

Note to self: In order to allow changes to the author of an svn commit, the pre-revprop-change hook of the repository must be changed like this: Insert the line [bash] if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi [/bash] just below the existing, similar line that allows changing svn:log. … Continue reading Allow svn:author to be changed for a subversion repository

How to use JumpFolder to create multiple “start menus”

Even after Microsoft abandoned the stupid idea of the Windows 8 start screen and gave us back the start menu in Windows 10 there is still a lot to desire. Of course you can replace the the start menu with a tool like Open Shell (formerly known as Classic Shell) which improves it quite a … Continue reading How to use JumpFolder to create multiple “start menus”

When sorting a “StringList” is very costly

The following code looks innocuous but slows down a program significantly: [delphi] type TJCHListSortCompare = function(Item1, Item2: Integer): Integer of object; TCheckListBoxWithHints = class(TCheckListBox) private procedure QuickSort(L, R: Integer; SCompare: TJCHListSortCompare); // [...] procedure TCheckListBoxWithHints.QuickSort(L, R: Integer; SCompare: TJCHListSortCompare); var I, J, P: Integer; tmpObj: TObject; tmpStr: string; tmpChecked: Boolean; begin repeat I := L; … Continue reading When sorting a “StringList” is very costly

New Explicit Properties Filter expert in GExperts

I never understood the benefit of writing the ExplicitLeft / Top / Width / Height properties for TControl and descendants, which were added in Delphi 2007, to the dfm files. They store the control's position and size before its Align property was set to something like alClient or alRight, so they can be restored later. … Continue reading New Explicit Properties Filter expert in GExperts