Jump to content

Die Holländer

Members
  • Content Count

    297
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by Die Holländer

  1. Die Holländer

    TeeBI free full sources released

    Works very well.
  2. Die Holländer

    What .PAS file does a form use?

    Another example of a datamodule hell and query statements in a GUI form..😒
  3. 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.
  4. 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;
  5. 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?
  6. 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.
  7. Die Holländer

    Get Error Object

    Maybe this is what you need.. You have to tell TidHTTP that it should return the error JSON message and not only the HTTP error code. Result:=False; idHTTP.Request.ContentType := 'application/json;odata=verbose'; //Tell the idHTTP that it should NOT ignore the (JSON) errormessage returned by the server. idHTTP.HTTPOptions := idHTTP.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent]; //Add the message in a string var. ReceiveData := idHTTP.Put(Param, JsonToSend); if (idHTTP.ResponseCode div 100) = 2 then begin Result:=True; end else Begin //Parse/Show the message aMessage:=CreateErrorMessage(ReceiveData); End;
  8. Die Holländer

    Get Error Object

    You only show the JSON parsing part. What do you use to perform the Put? (Like TidHTTP?)
  9. Die Holländer

    Azure Relay

    Yes, these are basically the pages reflecting what Glenn shows in the Youtube video. As you can see almost all of the development, configuration, testing and deploying is based on Visual Studio Code (extensions) and only the "Hello world" webbroker exe is made in Delphi. I was hoping that the "Azure IDE helper plugin" will bypass the Visual Studio Code part. Another thing is that it's also difficult to go through the Azure deploying part by it's dashboard that supports now about 100 zillion Cloud possibilities, options and configurations.
  10. Die Holländer

    Azure Relay

    Maybe there is something possible with Python4Delphi and Pika...
  11. Die Holländer

    Azure Relay

    I really hope that Embarcadero will investigate the possibilities of using Azure with Delphi. During the session in this youtube video about Azure Cloud Development with Delphi I saw a statement (at time 40:38) : "Azure IDE helper plugin under development by Glenn Dufke" I have tried to configure an Azure function myself but the Azure Portal interface has been changed a lot and I didn't succeed. I don't know if he ever completed such a plugin but I've tried to find and ask him but didn't succeed.
  12. Die Holländer

    Problem with Calculated fields in a TFDQuerry

    I was just wondering why you use a cache list. I use a DBGrid in one of my projects and added the calculated fields as extra columns in the DBGrid and to the FieldDefs of the query. Also in my case there is a file read calculated field and I hardly see any speed difference while displaying the resultset of the databse including the calculated fields. So, I never have used a cache list and I was just wondering why you need one, but as Uwe explained that sometime you need a cache list if the process is too slow and probably if you don't use a DBGrid.
  13. Die Holländer

    Problem with Calculated fields in a TFDQuerry

    But a dataset like DBGrid or client dataset is caching the calculated field values, right?
  14. Die Holländer

    Problem with Calculated fields in a TFDQuerry

    And... why do you use a Dictionary and not the calculated field?
  15. Die Holländer

    Problem with Calculated fields in a TFDQuerry

    Just for interest.. >>Dictionary<ID, FileSize> How did you fill this Dictionary and why are you using it during the OnCalcFields and not using the extra calculated field from the resultset itself for displaying?
  16. Die Holländer

    Delphi 12 Ribbon Issue

    When creating a GUI for applications with database and business logic, using tab menus, like Ribbon component, with many buttons can lead to a lot of code in your form. Create at least objects with you database logic..
  17. Die Holländer

    certificate error

    Edge also..
  18. 👍 Very nice place. Also quick bus to Amsterdam center nearby. Plenty of herring and smoked eel availble.
  19. Die Holländer

    Slow performance. HELP!

    Is it always on specific SQL statements/queries, like the Select you showed? You can try not to lock those Selects by: 'select * from "myTable" where ..... with(NOLOCK)'; Just to see if the locking READ COMMITTED is the problem. See if the database drivers your users using are still the same.
  20. Die Holländer

    ToolBar just knoledg

    Can you tell what your problem is?
  21. Die Holländer

    ToolBar just knoledg

    Maybe because in design time you copied the toolbar from dmSharedImages module on your form. While pasting the toolbar on your form the IDE knows where the images are located. That's why you see on the form: Images = dmSharedImages.Images In Runtime your form has no connection to the dmSharedImages, so the images are ignored and they disappear.
  22. Die Holländer

    Convert project c# to pascal

    python4delphi
  23. Die Holländer

    Applications for Linux

    Also for FireDac you need at least Delphi Enterprise. (Professional only FireDac local/embedded databases)
  24. Die Holländer

    components ?!

    There are too much components to add them in a book. There are visual, non-visual and thirth party components. Are you talking about components native delivered in Delphi? (Which version of Delphi?) You have to explain what programming problem you want to solve before you know what components you need to use.
  25. Die Holländer

    FMX learning resources?

    Right-Click on the webpage and "Translate to .....". (or where your browser has this option)
×