Jump to content

shineworld

Members
  • Content Count

    349
  • Joined

  • Last visited

  • Days Won

    4

shineworld last won the day on January 8

shineworld had the most liked content!

Community Reputation

89 Excellent

About shineworld

  • Birthday 05/09/1970

Technical Information

  • Delphi-Version
    Delphi 12 Athens

Recent Profile Visitors

8281 profile views
  1. shineworld

    Delphi code on gitlab/github

    Personally, I don't mind paying for a product like Delphi. I always hate having to wait months for updates before a product is truly usable and seeing major bugs that carry over from version to version without being fixed with updates. Every transition from version k-1 to k is a huge time investment, and the libraries I use aren't always so quick to provide updates, but I think that's common. I've also used .NET, of course, but things change even faster there, and products developed years ago are a huge headache to update to the current framework. Delphi already has many open libraries, under various licenses, so I don't feel the need to have an open environment as well. No one would touch it, and if they did, in my opinion, it would do more harm than good. To support the IDE, I use many plugins that already do a lot of good things (I have often wondered why they have never become an integral part of the IDE, o name a few: GXEperts' Grep or DDevExtesnions' multi-project Version Info management). The fact remains that I bring code into projects, even complex code from 20 years ago, and it works smoothly, or with minimal issues. No time is wasted. Creating installation packages is fast, as millions of lines of code can be reduced to little more than an exe file: Compilation is so fast that in just a few minutes I have everything I need to test and release the product.
  2. shineworld

    Delphi code on gitlab/github

    I've been using Delphi since it came out, although I stuck with certain versions for a long time, even though I always had them all, for reasons of stability between the various versions. Now I'm happy with 12.3, even though it drives me crazy with refactoring, an indispensable feature when you have really large projects like mine. I installed 13 on a VM, but when I realized that even that minimal refactoring had been removed, I left it there waiting for something to be done.
  3. shineworld

    UIAutomation in Delphi 13

    Could UIAutomation increase the possibility of malicious software interfacing more easily with an application to cause problems?
  4. shineworld

    VERY simple tag editor component

    Antialiased polyline is very simple to do with Image32 library: uses Img32, Img32.Draw, Img32.Vector; ... Procedure TTagComponent.Paint; var W: Integer; H: Integer; Path: TPathD; Img: TImage32; PenWidth: Integer; PenColor: TColor32; BrushColor: TColor32; textrect: TRect; s: String; const BORDER = 4; SPINER = BORDER + 8; TEXT_H_OFFSET = SPINER + 3; TEXT_V_OFFSET = BORDER + 3; begin W := Self.ClientWidth; H := Self.ClientHeight; Img := TImage32.Create(W, H); try BrushColor := Color32(TStyleManager.ActiveStyle.GetStyleColor(scEdit)); If _drawactive Then Begin PenColor := Color32(TStyleManager.ActiveStyle.GetStyleFontColor(sfWindowTextDisabled)); PenWidth := 2; End Else Begin PenColor := Color32(TStyleManager.ActiveStyle.GetStyleColor(scBorder)); PenWidth := 1; End; Img.Clear(BrushColor); Path := MakePath ( [ BORDER, BORDER, Self.ClientWidth - SPINER, BORDER, Self.ClientWidth - BORDER, Self.ClientHeight div 2, Self.ClientWidth - SPINER, Self.ClientHeight - BORDER, BORDER, Self.ClientHeight - BORDER, SPINER, Self.ClientHeight div 2 ] ); DrawPolygon(Img, Path, frEvenOdd, BrushColor); DrawLine(Img, Path, PenWidth, PenColor, esPolygon); Img.CopyToDc(Self.Canvas.Handle, 0, 0, False); textrect := TRect.Create(TEXT_H_OFFSET, TEXT_V_OFFSET, W - TEXT_H_OFFSET, H - TEXT_V_OFFSET); s := Trim(Self.Caption); Self.Canvas.Font.Assign(Self.Font); Self.Canvas.Font.Color := TStyleManager.ActiveStyle.GetStyleFontColor(sfWindowTextNormal); Self.Canvas.TextRect(textrect, s, [tfSingleLine, tfVerticalCenter, tfCenter, tfEndEllipsis]); finally Img.Free; end; end; sample.7z
  5. shineworld

    VERY simple tag editor component

    You can think to use Image32 https://github.com/AngusJohnson/Image32 or Graphics32 to create antialiased things.
  6. shineworld

    KSVC 8.0

    Manually installed and works fine. Thanks.
  7. shineworld

    KSVC 8.0

    I've removed 7 and installed 8 too. No 64-bit design time packages are availables.
  8. shineworld

    TreeView Child Node Data

    In a Python program, with DelphiVCL, I'm trying to use the TreeNode.Data field to contain extra node infos. def add_node_recursive(treeview: TreeView, parent_node: TreeNode, data: dict): axis_label = '' axis_id = data['id'] if axis_id in ['X', 'Y', 'Z', 'A', 'B', 'C']: axis_label = f'{axis_id}-axis' elif axis_id == 'TP': axis_label = f'Toolpath' elif axis_id == 'MCS': axis_label = f'Machine Zero Point' else: axis_label = f'{axis_id}' axis_node = treeview.Items.AddChild(parent_node, axis_label) print(type(axis_node)) print(type(axis_node.Data)) [Dbg]>> print(type(axis_node)) <class 'TreeNode'> [Dbg]>> print(type(axis_node.Data)) <class 'NoneType'> [Dbg]>>> dir(axis_node) ['AbsoluteIndex', 'AfterConstruction', 'AlphaSort', 'Assign', 'BeforeDestruction', 'CPP_ABI_1', 'CPP_ABI_2', 'CPP_ABI_3', 'CheckState', 'Checked', 'ClassInfo', 'ClassName', 'ClassNameIs', 'ClassParent', 'ClassType', 'CleanupInstance', 'Collapse', 'Count', 'Create', 'CustomSort', 'Cut', 'Data', 'DefaultHandler', 'Delete', 'DeleteChildren', 'Deleting', 'Destroy', 'Dispatch', 'DisplayRect', 'DisposeOf', 'DropHighlighted', 'DropTarget', 'EditText', 'Enabled', 'EndEdit', 'Equals', 'Expand', 'Expanded', 'ExpandedImageIndex', 'FieldAddress', 'Focused', 'Free', 'FreeInstance', 'GetHandle', 'GetHashCode', 'GetInterface', 'GetInterfaceEntry', 'GetInterfaceTable', 'GetLastChild', 'GetNamePath', 'GetNext', 'GetNextChild', 'GetNextVisible', 'GetPrev', 'GetPrevChild', 'GetPrevVisible', 'Handle', 'HasAsParent', 'HasChildren', 'ImageIndex', 'Index', 'IndexOf', 'InheritsFrom', 'InitInstance', 'InstanceSize', 'IsFirstNode', 'IsVisible', 'Item', 'ItemId', 'Level', 'MakeVisible', 'MethodAddress', 'MethodName', 'MoveTo', 'NewInstance', 'OverlayIndex', 'Owner', 'Parent', 'QualifiedClassName', 'SafeCallException', 'Selected', 'SelectedIndex', 'SetProps', 'StateIndex', 'Text', 'ToList', 'ToString', 'ToTuple', 'TreeView', 'UnitName', 'UnitScope', '__bound__', '__class__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__owned__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'getFirstChild', 'getNextSibling', 'getPrevSibling'] Initially node Data is set to NoneType but If I try to assign something I get: AttributeError: Error in setting property Data Error: Expected a PPyObject
  9. shineworld

    DelphiVCL and TreeView OnCollpasing

    An user wrote me "AllowCollapse.Value = False" instead of "AllowCollapse = False".... Work! Thank you
  10. I'm using TreeView and I'm trying to disable the node collapsing with event OnCollapsing(Sender, Node, AllowCollapse). The Python method is called when a TreeView node is clicked for collapse: def TreeViewCollapsing(self, Sender, Node, AllowCollapse): AllowCollapse = False In the event I've set AllowCollapse to False, but in engine code the AllowCollapse := PyObject_IsTrue(LVarParam.Value) = 1; returns True: procedure TTVCollapsingEventHandler.DoEvent(Sender: TObject; Node: TTreeNode; var AllowCollapse: Boolean); var LPyObject, LPyNode, LPyTuple, LPyResult, LPyAllowCollapse: PPyObject; LVarParam: TPyDelphiVarParameter; begin Assert(Assigned(PyDelphiWrapper)); if Assigned(Callable) and PythonOK() then with GetPythonEngine() do begin LPyObject := PyDelphiWrapper.Wrap(Sender); LPyNode := PyDelphiWrapper.Wrap(Node); LPyAllowCollapse := CreateVarParam(PyDelphiWrapper, AllowCollapse); LVarParam := PythonToDelphi(LPyAllowCollapse) as TPyDelphiVarParameter; LPyTuple := PyTuple_New(3); PyTuple_SetItem(LPyTuple, 0, LPyObject); PyTuple_SetItem(LPyTuple, 1, LPyNode); PyTuple_SetItem(LPyTuple, 2, LPyAllowCollapse); try LPyResult := PyObject_CallObject(Callable, LPyTuple); if Assigned(LPyResult) then begin Py_DECREF(LPyResult); AllowCollapse := PyObject_IsTrue(LVarParam.Value) = 1; end; finally Py_DECREF(LPyTuple); end; CheckError(); end; end;
  11. shineworld

    New offline CHM files for Rad Studio 12.3

    Grazie !
  12. shineworld

    VTK in DelphiVCL or DelphiFMX

    Python + DelphiVCL + VTK + VCL Styles, a great combo! A sample video of a Python program that I use to fastly check the new kinematics algorithms.
  13. shineworld

    Delphi 12.3 is available

    I have always used and will always continue to use Delphi, as long as I am allowed in the company. Other languages and IDE environments have been added but it will be out of affection, I find the Delphi one very friendly, complex to the point and with things that are really needed. Of course, this depends a lot on the scope of the software, but in mine it is perfectly apt, where other environments become scattershot (too many things and not congruent with each other). What I admire about the Delphi RAD developers is their dedication. It has been dozens of years, that despite the fact that for many it is an outdated environment and language that they are dedicated to keeping it active, to meet new needs, limited as they all are by budget problems. But Delphi is still alive, and I easily shame the final products made by other colleagues with “newer” environments. Like everyone I would like to have more and more, and think that every problem it has can be magically solved in a short time, but you know, that is not the case for any of us who develop code for a living. You always look for a compromise between investment availability and goals to be achieved.
  14. shineworld

    RAD 12.3 and Eclipse Temurin JDK

    Me too. However all worked fine.
  15. shineworld

    What new features would you like to see in Delphi 13?

    Import and ability to use common C++ DLL files (eg: OpenCV, VTK, OpenCascade, etc). Actually I use Python4Delphi to get access to some features of these DLL but it is just a workaround.
×