Jump to content

PeterBelow

Members
  • Content Count

    508
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by PeterBelow

  1. PeterBelow

    Quick and clean way to create auto-snapping forms

    What is build into the VCL is the drag and dock support also used by the RAD Studio IDE, the "snap to border" functionality is something different. If none of these two features match your need you have to build you own, which you seem to have done now. Do you know you can use inheritance with forms as well? Build a base form class with the functionality you need, add it to any new project you need this functionality in and then create new forms in the designer by using File -> New -> Others, and pick the base class from the "inheritable items" section. Just changing the ancestor class from TFrom to your base class in the editor does not work directly, since forms have associated DFM files. You would also need to edit the DFM file as text and change the first "object" to "inherited" for this to work.
  2. Via TStringHelper you have to first convert the string into an array of char, modify that, and then convert the array into a new string. var LChars: TArray<char>; LStr: string; begin LStr := StringOfChar('A', 20); LChars := LStr.ToCharArray; LChars[Low(LChars)+1] := LChars[Low(LChars)+1].ToLower; LStr := String.Create(LChars);
  3. PeterBelow

    Abnormal file size..

    The default for the linker options of a debug configuration is to include debug information into the produced EXE. That massively increases the size of the EXE, and, if you are using the IDE debugger (for a 32 bit project), is also completely useless, since the IDE debugger gets the debug info from the DCUs, not the EXE.
  4. PeterBelow

    Disable the Jedi property editors?

    You have to modify the design-time package that registers the property editor and rebuild it. Or just disable the package if you do not use any of the controls from it.
  5. PeterBelow

    Maintaining For loop(s)

    Instead of Projects: TArray<TProject> use a list class: type TProjectList = class(TList<TProject>) end; Add public methods to the class that implement your current for loops. This way you have all this code centralized in one place, which should massively simplify the maintenance. And while you're at it: convert the record into a class. Lists of records are a bit inefficient since accessing the items in the list involves a lot of copying of data. You can then use a TObjectlist<TProject> as base class for your TProjectlist and let the list manage the memory of the TProject objects you add to it (OwnsObjects parameter for the list constructor set to true, which is the default).
  6. PeterBelow

    Where is BrandingAPI

    The source for the units that are actually compiled into the IDE packages is not available. You only have what is needed to write IDE extensions using the OpenTools API, and even that is not always complete. It may contain references to other classes or routines available through one of the IDE packages, though, but usually you are not meant to use them in your extensions.
×