Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 03/26/20 in all areas

  1. SOAP is for WebService,it is stable since Delphi 7. WebService framework is buit-in delphi since Delphi 7.
  2. Lars Fosdal

    Rio and MDI Applications

    Users are a fickle bunch. Only devs are worse 😛
  3. A.M. Hoornweg

    Rio and MDI Applications

    The whole thing with MDI is that it is not only suitable to offer a user multiple documents at the same time, but also multiple views at the same time. I haven't seen a good GUI alternative for that. Anything with tabs, bars, pagecontrols etc basically serves to only hide views from sight which is quite the opposite of what I need.
  4. Uwe Raabe

    Rio and MDI Applications

    Taken from: http://docwiki.embarcadero.com/RADStudio/Rio/en/Per_Monitor_V2
  5. Uwe Raabe

    Feature: ParentFont? Yes, but...

    I would like to discuss a feature here before creating a QP entry for that (which seems not to be possible in the moment anyway). There is often the case where I want some controls to be emphasized somehow by adjusting the font style or font color. This will automatically set ParentFont to False . As a drawback the control will no longer act on any changes to the parent font - obviously. In times of VCL styles and the ability for the user to change style and font, this can lead to a bit of extra work to get things looking pretty again. What would you think of a feature like: Yes, I want to use the ParentFont, but don't touch my font style and/or font color settings. I have something in mind like the StyleElements property, where you can select which font properties are to be inherited from the parent and which are not. What do you think?
  6. Lars Fosdal

    Rio and MDI Applications

    MDI has been deprecated for years and is severely broken under Windows 10. Seems that a lot of messages no longer are sent or passed down to children.
  7. Alexander Elagin

    what is the possibility of having a rest/soap webapi in Delphi 2007

    There is well known RemObjects SDK which I think still supports even Delphi 7. Some interesting information regarding JSON support is here: https://talk.remobjects.com/t/how-to-call-rest-server-with-json/18771 . A standard SOAP support has been a part of Delphi RTL since forever and usually works without problems.
  8. "Add Reset App-button into the Debugger Exception Notification and/or enable Crtl+F2 shortcut key to kill the app." if cae, vote please. https://quality.embarcadero.com/browse/RSP-27925
  9. I think the problem you're going to run into is in how the RTTI support changed massively in D2010. Legacy apps built before that aren't going to care. But most libraries since then have come to depend heavily on it for a variety of things, especially when it comes to offering services of many kinds. There's stuff that simply cannot be done in D7 or even D2007 that can be done with the new RTTI support in D2010 and fwd. A lot of these have to do with design-time support as well. So you can sometimes find libs that have run-time support back that far, but not much design-time support. A straightforward REST/JSON API shouldn't be terribly difficult to write, unless you want to be able to send objects over the wire and have them reconstituted at the other end. Short of that, you might find something that works for you.
  10. Remy Lebeau

    Highlight a specific popup menu item?

    The way you are using SetMenuItemInfo() and HiliteMenuItem() in the DropdownMenuShow() method will not work. You are calling them after TPopupMenu.Popup() has exited. Popup() is a blocking method, it does not exit until the popup menu has been dismissed. The TPopupMenu.OnPopup event is fired while Popup() is running. However, upon further review, OnPopup is fired BEFORE the menu is made visible, and TPopupMenu may recreate the menu AFTER OnPopup has been called and BEFORE the menu is actually shown. So, your best bet is likely to subclass the TPopupList window so you can intercept the WM_ENTERMENULOOP message, then customize your menu items at that point. For example: type TPopupListEx = class(TPopupList) protected procedure WndProc(var Message: TMessage); override; end; procedure TPopupListEx.WndProc(var Message: TMessage); begin inherited; if (Message.Msg = WM_ENTERMENULOOP) and (Message.WParam = 1) then begin // customize pmTest items as needed... end; end; initialization Popuplist.Free; //free the "default", "old" list PopupList := TPopupListEx.Create; //create the new one // The new PopupList will be freed by // finalization section of Menus unit. end.
  11. Even it is not just for REST, you can write your own interface based methods and use mORMot as a REST server. Learning curve might be slower compared to some other options. However, it does run from Delphi 6 to Delphi 10.3.3 and has Linux support using Lazarus+FPC. There is no SOAP support as to my knowledge.
  12. Angus Robertson

    what is the possibility of having a rest/soap webapi in Delphi 2007

    The Internet Communications Suite (ICS) has a REST client component using Json and an application web server that sends whatever you give it. There is an ICS topic here. But no SOAP protocol as such, Json seems to have overtaken SOAP as much easier to use. ICS uses SuperObject for Json and reading XML, all Delphi 2007 compatible. Adding a SOAP wrapper to your XML objects should not be too hard. Angus
  13. If you have the option to choose REST only then you might really would like to consider MARS Curiosity. Edit: Just checked GitHub and it seems no packages exists for Delphi 2007.
  14. Ugochukwu Mmaduekwe

    what is the possibility of having a rest/soap webapi in Delphi 2007

    Would have loved to look into Delphi MVC but unfortunately they don't have plans to upgrade the Delphi version they currently use. However I will look into Delphi MVC for my own personal projects. Thanks a lot.
  15. A.M. Hoornweg

    Boolean evaluation

    Not only that, but the code "if Somebool=True" has a little known pitfall. Every Delphi program interfaces with libraries written in C or C++ (such as the Windows API, all sorts of drivers etc) and in the C language, a bool is basically an INT. I have had a few cases where a function was supposed to return a boolean and in reality it returned some integer where 0 signalled FALSE. The code (if Somebool Then...) treats 0 as false and all other values as TRUE. That always works as intended. The code "If Somebool=True THEN ..." only treats 1 as TRUE and everything else as FALSE. CASE statements are affected, too. So the following code fails: var SomeBool:boolean; begin SomeBool:=Boolean(2); //Simulate a DLL returning a "wonky" boolean if (SomeBool=True) then ShowMessage('True'); CASE SomeBool of True: ShowMessage('True'); False:ShowMessage('False'); END; If Somebool then ShowMessage('Still it is true...'); end;
  16. Uwe Raabe

    Feature: ParentFont? Yes, but...

    Getting rid of something can be a bit tricky when you need to maintain your code also with older versions. The basic idea is to introduce that new property with an empty default value matching the current behavior. This will keep the DFM clean and ParentFont functioning as before. These are the parts for a possible implementation: type TFontElement = (pfeCharset, pfeColor, pfeHeight, pfeName, pfeOrientation, pfePitch, pfeSize, pfeStyle, pfeQuality); TFontElements = set of TFontElement; The new property ParentFontElements would be initialized with an empty set, which would be omitted when writing the DFM. property ParentFontElements: TParentFontElements read FParentFontElements write SetParentFontElements default []; The implementation would not affect any rendering at all. It can be implemented completely inside TControl.CMParentFontChanged without any impact to any other place. procedure TControl.CMParentFontChanged(var Message: TCMParentFontChanged); begin if FParentFont then begin if Message.WParam <> 0 then SetFont(Message.Font) else SetFont(FParent.FFont); FParentFont := True; end else if FParent <> nil then begin { TODO : order might be relevant } if pfeCharset in ParentFontElements then Font.Charset := FParent.Font.Charset; if pfeColor in ParentFontElements then Font.Color := FParent.Font.Color; if pfeHeight in ParentFontElements then Font.Height := FParent.Font.Height; if pfeName in ParentFontElements then Font.Name := FParent.Font.Name; if pfeOrientation in ParentFontElements then Font.Orientation := FParent.Font.Orientation; if pfePitch in ParentFontElements then Font.Pitch := FParent.Font.Pitch; if pfeSize in ParentFontElements then Font.Size := FParent.Font.Size; if pfeStyle in ParentFontElements then Font.Style := FParent.Font.Style; if pfeQuality in ParentFontElements then Font.Quality := FParent.Font.Quality; end; end; The ParentFontElements are only used when ParentFont is False, which is automatically set when changing some Font properties. Thus setting ParentFontElements must internally set ParentFont to False and trigger CM_PARENTFONTCHANGED: procedure TControl.SetParentFontElements(const Value: TParentFontElements); begin if FParentFontElements <> Value then begin FParentFontElements := Value; FParentFont := False; if (FParent <> nil) and not (csReading in ComponentState) then Perform(CM_PARENTFONTCHANGED, 0, 0); end; end; Apart from some real world testing and adjusting this is probably all that is needed for an implementation.
  17. Dave Nottage

    Custom TrueType font in FMX Android app?

    That's the only way of doing it, and it's very trivial to do. https://quality.embarcadero.com/browse/RSP-16741
×