-
Content Count
2899 -
Joined
-
Last visited
-
Days Won
169
Everything posted by Uwe Raabe
-
As you are already accessing TabSheet6.Controls, you better use ControlCount instead of ComponentCount.
-
It also scales the image if the requested size is not present.
-
Let me guess: fRepCompEnrolment is a form containing a component named sctRepCustListt (not sure about the trailing doubled t, but I copied it) of type TSctReport? Then the file where fRepCompEnrolment is declared is the pas file you are looking for. It can still be that that .pas cannot be found and it works because the compiled .dcu is used instead, but that would be pretty uncommon for this case.
-
Did you search for sctRepCustList? Then search for the type of that variable and you get your report form.
-
Unless I misunderstand you completely, the .pas file have the same name as the .dfm file containing the form. Well, that might indeed be the case, but you might describe your situation in more detail to clarify.
-
OK, on a 64-Bit Windows, the key seen by a 32-Bit application like ModelMaker is HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Embarcadero\BDS\19.0
-
The code for checking the presence of a Delphi IDE is like this: function IsDelphiIDEInstalled(IDEVersion: TDelphiIDEVersion): Boolean; var R: TRegistry; begin R := TRegistry.Create; try R.RootKey := HKEY_LOCAL_MACHINE; Result := R.OpenKeyReadOnly(DelphiIDEKey(IDEVersion)); finally R.Free; end; end; DelphiIDEKey evaluates to Software\Embarcadero\BDS\%d.0 for the newer versions. Note that ModelMaker is only aware of BDS versions up to 19.0 (Delphi 10.2 Tokyo). You might get away with just creating the base key for a non-installed version to trick ModelMaker into looking for the expert. So adding HKLM\Software\Embarcadero\BDS\19.0 to the registry should get you going.
-
Is this in HKEY_LOCAL_MACHINE? If yes, there might be other criteria being checked for existence of a Delphi version. I'm willing to investigate, but my possibilities in regard to ModelMaker are a bit limited compared to MMX.
-
That's possible. IIRC ModelMaker looks for the BDS\xx.x\Experts key in HKLM.
-
Same here and this is how the dialog looks here:
-
I couldn't reproduce, but I am on 12.3 here. Can you give detailed steps to reproduce? Perhaps I tested something plain simple while the real problem is more complex.
-
Feature Request for the Delphi Language (Rethink or Eliminate the Concept of Units)
Uwe Raabe replied to dmitrybv's topic in Algorithms, Data Structures and Class Design
Well, in this case you can. I did a lot of refactoring such code myself during the last decades. The constraint you suggested to remove is a good indicator of progress in such an endeavor. -
There are several bugs fixed in 12.2 and 12.3 affecting frames. https://quality.embarcadero.com/browse/RSP-37402 https://quality.embarcadero.com/browse/RSP-39847 https://quality.embarcadero.com/browse/RSP-40110 https://quality.embarcadero.com/browse/RSP-43560 https://embt.atlassian.net/servicedesk/customer/portal/1/RSS-1020 Perhaps these will fix your problem, too. I will test your project later when I've found some time to configure my system for monitors with different dpi.
-
I just took what the OP wrote and show a way to revert any file somehow changed from ANSI to UTF-8. I never said it is a silver bullet for all circumstances.
-
Because it is the reverse of what Notepad in Windows 11 did to the files.
-
Load the file with UTF-8 encoding and save it with ANSI encoding. uses System.IOUtils; ... TFile.WriteAllText(FileName, TFile.ReadAllText(FileName, TEncoding.UTF8), TEncoding.ANSI); If the files are too large to fit into memory, you need to work with different file names for input and output: var writer := TStreamWriter.Create(NewFileName, False, TEncoding.ANSI); try var reader := TStreamReader.Create(FileName, TEncoding.UTF8); try while not reader.EndOfStream do writer.WriteLine(reader.ReadLine); finally reader.Free; end; finally writer.Free; end;
-
Isn't the root problem where you read these strings in the wrong way and shouldn't it be handled right there?
-
RAD Studio 12.3: E2213 Bad packaged unit format
Uwe Raabe replied to Chau Chee Yang's topic in Delphi IDE and APIs
Looks to me like some caching problem in the IDE. As you seem to have reproducible steps, you should file a bug report. -
You can avoid that by setting MarkDisabledItem to False.
-
Add an event handler for OnEnableItem and set AEnabled := False;
-
According to the unit mentioned, the libraries named sqlite3_fde_x64.obj/sqlite3_fde_x86.obj are used. They come with Delphi and are located in subfolders of $(BDSLIB).
-
First, declare the message type in a common unit: type TIntegerMessage = class(TMessage<Integer>); Second, declare a TMessageListenerMethod in FormA handling that message type: type TFormA = class(TForm) ... private procedure MyMessageHandler(const Sender: TObject; const M: TMessage); ... procedure TFormA.MyMessageHandler(const Sender: TObject; const M: TMessage); begin var msg := M as TIntegerMessage; // do something with the Integer you get from msg.Value end; Third, subscribe/unsubscribe to this message type in TFormA.FormCreate/FormDestroy: procedure TFormA.FormCreate(Sender: TObject); begin TMessageManager.DefaultManager.SubscribeToMessage(TIntegerMessage, MyMessageHandler); end; procedure TFormA.FormDestroy(Sender: TObject); begin TMessageManager.DefaultManager.Unsubscribe(TIntegerMessage, MyMessageHandler); end; Finally, send the message in FormB: begin ... TMessageManager.DefaultManager.SendMessage(Self, TIntegerMessage.Create(42)); ... end; Note: Only the common unit with the type declaration has to be used by both form units. None of them needs to use the other form unit.
-
It seems to be reproducible reliably in the debugger, while without the debugger I can switch the size with or without errors and I was not able to identify a pattern, yet.
-
That would only help if you are using a Delphi version that supports it (i.e. Delphi 11.2 or higher). See https://docwiki.embarcadero.com/RADStudio/Alexandria/en/11_Alexandria_-_Release_2#Updated_FireDAC_Drivers