Jump to content

Die Holländer

Members
  • Content Count

    276
  • Joined

  • Last visited

  • Days Won

    5

Die Holländer last won the day on March 12

Die Holländer had the most liked content!

Community Reputation

88 Excellent

Technical Information

  • Delphi-Version
    Delphi 12 Athens

Recent Profile Visitors

14850 profile views
  1. Maybe in combination with: bds.exe /ProductInfo:Trial - returns True/False if the product is a Trial version.
  2. Enterprise returns Enterprise.. So "Personal" seems the Community Edition.
  3. What does the professional edition say in the "Detail" properties of the bds.exe? Also “Personal”? (or Professional)
  4. What error do you get when you compile something with dcc32.exe from the Community Edition. Can't you catch this error and make you decision based on that?
  5. There is this small component I use for ages (CEVersionInfo) that takes the version info from the Delphi IDE. (Menu-Projects-Project Options-Version Info) In the IDE I put the Delphi version name into the "Comments" field and in the program source you can use it just like: "myEdit.Text:=CEVersionInfo.Comments" I've searched the web for the component but only saw some sites where I didn't dare to click to.. I'm willing to publish the source because there is no copyright involved and it is quite small code. It can take the following info fields: FCompanyname :='<info not available>'; FFileDescription :='<info not available>'; FFileVersion :='<info not available>'; FInternalname :='<info not available>'; FLegalCopyright :='<info not available>'; FLegalTradeMarks :='<info not available>'; FOriginalFilename :='<info not available>'; FProductName :='<info not available>'; FProductVersion :='<info not available>'; FComments :='<info not available>'; FMajorVersion :='<info not available>'; FMinorVersion :='<info not available>'; FRelease :='<info not available>'; FBuild :='<info not available>';
  6. Last week I also needed such timeline component and I started with the basic Jedi Timeline component. It is a basic component but with a bit of programming and the use of an extra StringGrid for the right side, a ScrollBox (horizontal scroll) and extra Scrollbar (vertical scroll) I got all the functionality I needed. It has an imagelist property to display images in the timeline. delphi-jedi.org TJvTimeLine
  7. Die Holländer

    Alternative for RDP solution

    Could you clarify what you mean by "cheapest way" and can you tell more about the cost and your environment? Their website doesn’t provide any information about pricing, which I believe could negatively impact their sales. Potential customers are discouraged when they have to contact a company just to get basic cost information. It would be helpful if they included some example use cases along with the associated costs. For example, if I already have a cloud-based database solution (e.g., MSSQL/Azure File storage/Office365) with 30 users and several Delphi applications, what would be the estimated cost of implementing a VirtualUI solution?
  8. I'm looking forward to the full story of this project. Are you going the Delphi route (webserver, webcore, UniGui, etc..) or (Java)script API - end-points - back-end HTML CSS front-end route? Bravo ! 😎🏅🏆
  9. Die Holländer

    IDE bugs

    What version of Delphi do you use? Go to the taskmanager and look to the Delphi IDE, keep refreshing the taskmanager and see if the memory of the Delphi IDE goes up all the time eating your entire memory.
  10. Die Holländer

    TeeBI free full sources released

    Works very well.
  11. Die Holländer

    What .PAS file does a form use?

    Another example of a datamodule hell and query statements in a GUI form..😒
  12. Die Holländer

    What .PAS file does a form use?

    There must be something in the .DFM files where you can see if it is a specific report form, like a component class/name or a specific button name. Can't you search in your .DFM text files for such indicator? The name of the .DFM file is then the same as the .PAS file.
  13. Die Holländer

    Retrieving outlook contact emails

    I found some old code to retrieve the list of a group, like "Global Address List" The code here is based on to put the addresses in a TreeView. I checked the code and it is still running OK but I noticed that I don't see the e-mail addresses anymore but instead it reports a string like: "/o=ExchangeLabs/ou=....." Maybe this is because of the exchange server configuration in my environment. see: how-to-get-email-address-from-o-exchangelabs-ou-exchange-administrative-group You have to play with it to see if you get the proper info you want. Maybe you can post the final answer here if you find the proper addresses.. Note that the code has a filter to only show two groups: If (CurGroupName='All Groups') or (CurGroupName='Global Address List') Then... //Uses Outlook2000; Procedure TMailTrans.CreateGALTreeForSendMailItem(aTreeView : TTreeView); Var pProp : PSPropValue; MP : IMAPIProp; strAddress : String; i, j, Check: Integer; myAddressList: AddressList; myAddressLists: AddressLists; myAddressEntries: AddressEntries; myAddressEntry: AddressEntry; CurNode, ChildNode, DetailNode :TTreeNode; CurGroupName : String; begin If NmSpace=NIL Then Begin OutlookApplication1.Connect; NmSpace:=OutlookApplication1.GetNamespace('MAPI'); NmSpace.Logon('', '', False, False); End; myAddressLists := IUnknown(NmSpace.AddressLists) as AddressLists; aTreeView.Items.BeginUpdate; aTreeView.Items.Clear; for i := 1 to myAddressLists.Count do begin CurGroupName:=myAddressLists.Item(i).Name; If (CurGroupName='All Groups') or (CurGroupName='Global Address List') Then Begin CurNode:=aTreeView.Items.Add(Nil,myAddressLists.Item(i).Name); CurNode.ImageIndex:=2; CurNode.SelectedIndex:=2; myAddressList := myAddressLists.Item(i); if Assigned(myAddressList.AddressEntries) then Begin myAddressEntries := myAddressList.AddressEntries; for j := 1 to myAddressEntries.Count do begin strAddress:='Unknown'; myAddressEntry := myAddressEntries.Item(j); if Assigned(myAddressEntry) then Begin if myAddressEntry.MAPIOBJECT<>NIL then Begin if Assigned(myAddressEntry.MAPIOBJECT) then Begin { Check:=IUnknown(myAddressEntry.MAPIOBJECT).QueryInterface(IMailUser,MP); If Check=0 then MP:=IUnknown(myAddressEntry.MAPIOBJECT) as IMailUser else MP:= IUnknown(myAddressEntry.MAPIOBJECT) as IDistList; if S_OK = HrGetOneProp(MP, $39FE001E, pProp) then begin strAddress:=String(pProp.Value.lpszA); MAPIFreeBuffer(pProp); end; // else strAddress:=myAddressEntry.Address; } strAddress:=myAddressEntry.Address; ChildNode:=aTreeView.Items.AddChild( CurNode, myAddressEntry.Name); ChildNode.ImageIndex:=7; ChildNode.SelectedIndex:=7; DetailNode:=aTreeView.Items.AddChild( ChildNode, strAddress); DetailNode.ImageIndex:=6; DetailNode.SelectedIndex:=6; End; End; { DetailNode:=aTreeView.Items.AddChild( ChildNode, myAddressEntry.Address); DetailNode.ImageIndex:=6; DetailNode.SelectedIndex:=6; } End; End; End; end; //Application.Processmessages; end; aTreeView.Items.EndUpdate; end;
  14. Die Holländer

    Advise for building a document

    Can't you create a complete Richtext (RichText+TabelText+RichText) during the process and add the whole RichText on the Band?
  15. Wow.. That's quite a list of qualifications you want.. C#, .NET, ASP.NET(Blazor), Delphi, C++, JavaScript, HTML5, CSS3, SQL, Python, embedded systems development.
×