Jump to content

David Hoyle

  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by David Hoyle

  1. David Hoyle

    Delphi and Peganza Expert causes access violation

    Then you will need to contact Peganza's support and let them know.
  2. David Hoyle

    How to compare performance between Delphi versions?

    What kind of issues did you have? BPLs for different version need to be in different directories if they do not have any kind of naming convention for Delphi IDE version. Some components will complain they cannot be found unless the folder they are in is on the path. Instead of adding to either your system path or user path; try modifying the path variable in the IDEs environment variables so that its isolated to that version of the IDE - this has worked for me in the past.
  3. David Hoyle

    Delphi and Peganza Expert causes access violation

    Have you download just the DLL or did you compile it from the source? Do you know if it is compatible with 10.4.2? Okay, Looking at the support page it only supports up to 10.3 not 10.4.
  4. David Hoyle

    How to compare performance between Delphi versions?

    You can install all major releases side by side, you just cannot do that with point releases. I have 2006 through to 10.4.2 all installed on this machine I'm typing on with no issues other than removing all the BDS related path data from the path (it's not needed in general).
  5. Which installer did you use: On-Line or Off-Line? Since both are based on Get It its BDS.exe that runs the installation process. Could you have an overzealous AV programme that's removing the bds.exe as its definitions are not up to date for the latest release?
  6. David Hoyle

    Need help finding the IDesigner

    No. What is the context under which you are trying to do what you are attempting. To do what I've described you need to write an Open Tools API BPL or DLL and add it to the IDE. This will then give you access to the designer once you have an IOTAModule reference to your form.
  7. David Hoyle

    Need help finding the IDesigner

    I'm not sure I understand correctly what you are trying to do here but the Open Tools API can provide you access to the IDesigner from INTAFormEditor.GetFormDesigner. You can get the INTAFormEditor by querying the IOTAModule interface for the form.
  8. I'm trying to create a rending engine that can use different canvas's where the coordinate system could Integer or Single. This is so that the differences between the output systems can be abstracted at the canvas level. I've tried to used generics (see code below) but it will not compile. I don't know whether I'm trying to be too ambitious or whether I'm missing something. The below code is a test project that shows the issue. Any help would be appreciated. Note: The below code is not intended to run as it's missing some implementations, I'm just looking for it to compile. Program IndirectGenerics; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; Type IPen<T> = Interface Function GetWidth : T; Procedure SetWidth(Const AValue : T); Property Width : T Read GetWidth Write SetWidth; End; ICanvas<T> = Interface Function GetPen : IPen<T>; Property Pen : IPen<T> Read GetPen; End; TConcreteCanvas<T> = Class(TInterfacedObject, ICanvas<T>) Strict Private FPen : IPen<T>; Strict Protected Function GetPen : IPen<T>; Public Constructor Create; End; TConcreteDrawingEngine<T> = Class Strict Private FCanvas : ICanvas<T>; Strict Protected Public Constructor Create(Const Canvas : ICanvas<T>); Procedure DoSomething; End; { TConcreteCanvas<T> } Constructor TConcreteCanvas<T>.Create; Begin // FPen := End; Function TConcreteCanvas<T>.GetPen: IPen<T>; Begin Result := FPen; End; { TConcreteGantt<T> } Constructor TConcreteDrawingEngine<T>.Create(Const Canvas: ICanvas<T>); Begin FCanvas := Canvas; End; Procedure TConcreteDrawingEngine<T>.DoSomething; Begin FCanvas.Pen.Width := 1; // <= Does not compile as it thinks T is not Integer End; Var IntegerCanvas : ICanvas<Integer>; IntegerDrawingEngine : TConcreteDrawingEngine<Integer>; SingleCanvas : ICanvas<Single>; SingleDrawingEngine : TConcreteDrawingEngine<Single>; Begin Try IntegerCanvas := TConcreteCanvas<Integer>.Create; IntegerDrawingEngine := TConcreteDrawingEngine<Integer>.Create(IntegerCanvas); //... SingleCanvas := TConcreteCanvas<Single>.Create; SingleDrawingEngine := TConcreteDrawingEngine<Single>.Create(SingleCanvas); //... Except On E: Exception Do Writeln(E.ClassName, ': ', E.Message); End; End.
  9. David Hoyle

    Generic Drawing Engine

    Thank you @David Heffernan and @Eugine Savin. Clearly, I was too ambitious. I tried a few other things with generics and then abandoned them when they didn't work either. I decided to change the underlying coordinate system to Single from Integer and I'm using TPointF and TRectF and the real-time rendering in my application, even with VCL styles, does not seem to have diminished. Still need to test on an old machine with a crappy graphics card but I think this will allow me to do what I want going forwards.
  10. Check your IDEs Environment Variables (in the Options dialogue) and see if it is redefining the PATH variable to something that stops the IDE being able to search for the BPLs.
  11. David Hoyle

    Tools API - Changing Key Assignment

    Ctrl+D has never worked for me but then again I'm still using WordStar/Classic IDE key bindings which might grab Ctrl+D for moving the cursor.
  12. David Hoyle

    Tools API - Changing Key Assignment

    I already do this with GExperts so I know it can be done unfortunately I'm on my work machine so cannot show you. The menu item is now hidden underneath View | Editor I think but it is there somewhere. I use Ctrl+Alt+D so I need to disable this shortcut first (disassembly view I think) and then I can assign it for Format Source.
  13. David Hoyle

    Tools API - Changing Key Assignment

    Use GExperts to define an alternate keybinding for this rather go through the rigmarole of creating an expert to do this.
  14. Install WordFence (the are free and paid version) and keep the number of plug-ins to a minimum.
  15. David Hoyle

    cannot install Konopka VCL Controls from GetIt

    Did you install from the ISO? If so you need to reconfigure GetIT for on-line use: `GetItCmd.exe -c=useonline ` (http://docwiki.embarcadero.com/RADStudio/Sydney/en/Release_Notes).
  16. David Hoyle

    Grep search empty window with 10.4.1

    My mistake @dummzeuch I thought it was dependant upon JCL/JVCL. I must be thinking of something else.
  17. David Hoyle

    Grep search empty window with 10.4.1

    @dummzeuch I think the only thing that stops me compiling it myself is setting up all the JCL/JVCL dependencies unless that has changed.
  18. David Hoyle

    ExtractFileDrive bug

    The \\?\UNC is for unicode path up to 32K in length so you can work around the MAX_PATH limit. I wouldn't expect ExtractFileDrive to work with these as you would add the \\?\UNC prefix before calling CopyFileW() etc. There is similar syntax for drive letter. Have a look at the Microsoft Documentation (Looks like they've change something in Windows 10 recently as well - https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-copyfile
  19. @limelect Yes, BPLs can see to be easier to work with but bear in mind that if you code something wrong you can make the IDE you are working in unstable. I always use a secondary IDE using a -rNewRegKey command line and then I can kill of that session if I do something wrong.
  20. Her e's my code from last night. Add Comp To Form.zip
  21. I don't have any experience with FMX but I suspect we need to understand whether the currently selected control can take other child controls. Unfortunately I don't have the time today to have a look at this but I will look into this.
  22. @Remy Lebeau you were right, I just didn't call it properly. The below code works for me in 10.4.1... // Set the control framework ActivateClassGroup(Vcl.Controls.TControl); // <= THIS FIXES IT!!!!!!!!! // Get the generic form editor for the current module Module := TACTFUtilities.CurrentModule; FormEditor := TACTFUtilities.FormEditor(Module); // Get the simple class name from a dropdown, i.e. TLabel, TButton, TEdit, etc strClassName := edtComponentClassName.Text; Delete(strClassName, Pos('=', strClassName), strClassName.Length); // Insert the component with the selected component parent If Assigned(FormEditor) Then Begin Component := FormEditor.GetCreateParent; Component := FormEditor.CreateComponent( Component, strClassName, 10, 10, 50, 28 ); FormEditor.MarkModified; End;
  23. Alas @Remy Lebeau's suggestion has not worked in the 2 scenarios I have. I will pick this up again later today or tomorrow as I'm sure I had some part of it working with qualified names last week.
  24. Thanks @Remy Lebeau, I will check this out today.
  25. @limelect I mean Unit.Component or perhaps event Package.Unit.Component. At some point in the work I did last Saturday when trying to find a solution for you, I'm positive one of the solutions accepted this format as a string. I'll try again tomorrow.