-
Content Count
63 -
Joined
-
Last visited
-
Days Won
1
Everything posted by Achim Kalwa
-
No, Delphi 11 is not guilty here 😉 There is some code in GX_Configure.pas which looks like some debug leftover: In line 311...316 the dialog is inflated to a minimum of 1000 x 1000 pixel. Remove that code an the configuration dialog will become usable.
-
RAD Studio 11 Alexandria Patch 1 Available
Achim Kalwa replied to Uwe Raabe's topic in Tips / Blogs / Tutorials / Videos
Any the should remove that hint after installing the patch. I'm working with several VMs; and sometimes I forget which VM includes the patch and which one still needs the patch. Some information in the About-box would be helpful, too. Delphi 11 Patch 1 still shows <No Updates Installed>. -
Menu captions with images are hard to read under Windows 11
Achim Kalwa replied to Tom Mueller's topic in VCL
Yes. And I've reported this issue some weeks ago as RSP-35049. The black text is caused by a bug in Vcl.Menus.pas; procedure DoThemedDrawText(): The parameter "Selected" is completely ignored in that code, but should be used to select to correct theme element details. Feel free to vote for it 😉. But even if this will be (hopefully) fixed in some Delphi 11.1 update I'm still looking for a workaround without using a full copy of Vcl.Menus.pas. Something like patching Vcl.Menus at runtime (using Delphi Detours? Or code from Andreas Hausladen's VCLFixPack?) to replace DoThemedDrawText() with a fixed version (see RSP-35049 for the required changes). Any help appreciated. -
read integer value from database, best practice ?
Achim Kalwa replied to FranzB's topic in Databases
Which Database system do you use? Which connection components? If the field in the database is declared as "Integer", it should never contain a Space character. It could be NULL, which means it doesn't contain any value. Most database access components will translate NULL to the value 0, so an empty field should not raise an exception. Which value do you expect in case the field is NULL? To be save, you can test for empty fields yourself: var F : TField; F := Qry.FindField('IntegerField'); if Assigned(F) and (not F.IsNull) then aObject.IntValue := F.AsInteger else aObject.IntValue := -1; // or whatever value you choose in case of an empty field. -
I did not encounter any problems. My version is here: https://github.com/kalwados/DDevExtensions Including changes for HighDPI (i.E. Compile Progress Bar) and Darkmode.
-
Maybe some of the scaling issues could be solved by setting Form.Scaled := True. I've added procedure TfmBaseForm.Loaded; begin inherited; {$IFDEF IDE_IS_HIDPI_AWARE} Scaled := True; {$ENDIF} end; to TfmBaseForm (GX_BaseForm.pas) (to not edit every dfm by hand). But I am not sure if this works on all inherited forms. My first test with the "Goto" experts are looking good: Achim
-
Watch the grid's indicator column: The current (active) row is marked with a triangle, while selected rows are marked with a dot. If the current row is also a selected row, the indicator shows a dot and a arrow. You need to make the current row a selected row: if DBGrid1.SelectedRows.Count = 0 then DBGrid1.SelectedRows.CurrentRowSelected := True;
-
I did a clean install of Delphi 10.4.2. One of the first steps is to compile and install GExperts. SVN revision 3449 compiled fine, but when running the "Register-GExperts-XX104.cmd" it fails with "Runtime error 217 at 50CDB390", followed by "Problem beim Starten von .\GExpertsRS104.dll. Eine DLL-Initialisierungsroutine ist fehlgeschlagen." To trace the error I compiled GExperts in Debug mode, using Debug-DCUs. Then I used Run->Parameters to set "C:\Windows\System32\rundll32.exe" as "Host", and the full path to the compiled GExpertsRS104.dll and ",InstallGExperts" as parameter: Host application: C:\Windows\System32\rundll32.exe Parameters: C:\Full\Path\To\GExpertsRS104.dll,InstallGExperts Now I could debug the installation from within the Delphi IDE. The startup-code InitUnits (in System.pas) initializes all units and calls class constructors; and in Vcl.WinXCtrls.pas it calls a class constructor TSearchBox.Create. This code creates an internal TImageCollection and adds two default images, which finally leads to TWICImage.Create in Vcl.Graphics.pas (Line 10624 ff). The call to CoCreateInstance(CLSID_WICImagingFactory, ...) fails with error code $800401F0 = CO_E_NOTINITIALIZED = 'CoInitialize has not been called' and an exception is raised with message 'Cannot create instance of class CLSID_WICImagingFactory'. To solve this problem, I need to insert CoInitialize(nil) somewhere, and because I won't change VCL and RTL units I had to find another place. Finally I found that the initialization block in GX_GenericUtils.pas is called some steps before the exception is raised, and already uses unit ActiveX, so I placed a CoInitialize(nil) in GX_GenericUtils.pas initialization block. initialization CoInitialize(nil); // this line added Initialize; ... And the error is gone! Finally I could install GExperts into Delphi 10.4.2 😉 [Yes, I know how to use RegEdit]. @dummzeuch : Maybe there is a better place to insert that missing CoInitialize(nil). Also I don't know if that call has side effects on older Delphi versions and should be surrounded by some IFDEFs. Since it is only one line inserted, I did not create a patch. I'm going to report this new VCL bug to quality portal. Thanks for reading, Achim
-
How nice. The issue RSP-33120 has been closed as "test case error" and the comment says:
-
Delphi 10.4.2 application switch after using open file expert
Achim Kalwa replied to merijnb's topic in GExperts
I can reproduce this, too: start Windows Explorer; if maximized, un-maximize to have a nice window. start RAD Studio/Delphi. if maximized, un-maximize the IDE. use GExperts -> Open File. Select any a pas file Result: Windows Explorer gets activated and has the input focus. If the Delphi IDE was maximized, you only see that the focus is lost. -
Reported as https://quality.embarcadero.com/browse/RSP-33120 Feel free to vote 😉
-
Hello Thomas, I would just like to notice that the "Grep" expert is no longer available due to some changes in SVN rev. 3383 ff. The defined hotkey does nothing, and the menu item is gone. The new Grep submenu has "show Grep results", but no "Grep search".
-
Found the reason: GX_GrepSearchExpert in '..\..\source\Grep\GX_GrepSearchExpert.pas', is missing from the dpr files for most Delphi versions except 2007. After adding this unit, Grep Search is available again. Schönen 2. Advent!
-
Tools API - Changing Key Assignment
Achim Kalwa replied to Carlos Tré's topic in Delphi IDE and APIs
@Carlos Tré I like the "Insert Row Below" feature very much, but I had to remove the Ctrl+Enter binding because that is already used for "Open File at Cursor", which I use regulary; but keeping Shift+Enter. And I translated strings and method names from Portuguese to English 😉 -
Tools API - Changing Key Assignment
Achim Kalwa replied to Carlos Tré's topic in Delphi IDE and APIs
Works great, thanks for sharing. -
Tools API - Changing Key Assignment
Achim Kalwa replied to Carlos Tré's topic in Delphi IDE and APIs
@Carlos TréVery interesting; I would like to use that expert, too. What's the name of that expert? Or did you write it yourself and are willing to share the code? -
Delphi keeps asking me to add VclSmp when it is already there
Achim Kalwa replied to obones's topic in Delphi IDE and APIs
VclSmp is the "Embarcadero Sample Components" package, containing TGauge, TSpinEdit, TSpinButton and others. Do you use any of this components in your package? Or contains you package a unit named "spin.pas?" -
For those on older Delphi versions, there is still Andreas "DDevExtensions", which offers a function to disable the Explicit*-properties when saving the DFM file: https://www.idefixpack.de/blog/ide-tools/ddevextensions/
-
In fact first attempt was to integrate this little patch into GExperts. There is already GX_VCLFixPack.pas, which is a slightly modified version of Andreas' VclFixPack.pas. It is currently not in use (disabled by $IFDEF) and needs some cleanup, e.g. remove unused and old Win95 code 🙂. But for a "complete" GX Expert it would be neccessary to have at least an on/off configuration switch in the IDE settings section; but I did not dig deep enough to implement such a thing. And some kind of documentation would be helpful, too. Maybe I'll find some spare time at the weekend for creating a patch to GExperts.
-
I know I am late to the party, but you might try the attached package for Delphi 10.4.1. It uses the hooking code from Andreas Hausladen's VclFixPack v1.4 to patch the TControl.DefineProperties method to a modified code, which does not write those Explicit* properties to the DFM file. Unpack the zip archive, open DControlsFix.dpk in Delphi 10.4.1, compile & install. There is nothing to customize. If this package is installed, the patch is active. If you like to get the default behaviour back, just uninstall the package. Use at your own risk 😉 DControlsFix.zip
-
SynEdit replacement for Delphi 10.1 Berlin / editor wanted for source code (not Delphi)
Achim Kalwa replied to Mr. Daniel's topic in VCL
In the Project Manager do a right-click on the dpk file and choose "install". -
High-level interface-based encapsulation of Direct2D Svg functionality
Achim Kalwa replied to pyscripter's topic in Windows API
It is something I created myself with Delphi 10.3. In the past I used a tool named MetaFileExplorer, but it always crashed on some of the files I need to handle. In a first step I tried to fix that bug in the C++ code, but finally decided to create my own EMF explorer using Delphi. It is not public available; and is far from complete (it only handles ~50% of all possible EMR commands; mainly what the VCL Graphics uses when painting on Canvas). -
High-level interface-based encapsulation of Direct2D Svg functionality
Achim Kalwa replied to pyscripter's topic in Windows API
That was a good hint: Enumerating the emf file shows a EMR_BITBLT as the main graphics command. I was hoping that painting the SVG to a GDI canvas will result in a bunch of GDI commands/operations, but the SVG is rendered to a bitmap representation instead. That's OK for me. -
High-level interface-based encapsulation of Direct2D Svg functionality
Achim Kalwa replied to pyscripter's topic in Windows API
Hello pyscripter, many thanks for this library. I've downloaded the example and enhanced it to draw the SVG onto a metafile canvas; but I get always a black background. When painting on the form's canvas or a paintbox canvas the drawing is transparent as I expected. Any idea how to remove the black background when painting to a metafile canvas? And btw: SVGInterfaces.pas: property "Heigth" is spelled wrong; should be "Height". -
Delphi 10.4 PATCH 2 experiences
Achim Kalwa replied to PeterPanettone's topic in Delphi IDE and APIs
Hello Peter, yes, the downloaded update/patch needs to be installed manually. Close the IDE and doubleclick "patch2.bat". This will trigger the User Account Control (UAC) to give the patch app admin credentials. It will open a black console window, with quickly scrolling messages from the patch progress. I've installed that patch a few days ago; and I can confirm that - no information about the patch is in the About dialog. - the Access Violation in the LicenseManager.exe is fixed. You can verify if the patch was installed successfully by checking the timestamp of some files in the "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin" folder; it should be 2020-07-15 (using ISO date format): - LicenseManager.exe: - dcc32.exe - getit270.bpl If the files are still older (e.g. 2020-05-16), the patch has NOT been installed. Just try again 🙂