Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by IgorSavkic

  1. IgorSavkic


    What I did (for a reset pass form) was to include gogle recapcha js to html, it auto displays/shows a small recaptcha logo on lower right and shows challenge only when my SMS ResetPass button is pressed: var grecaptcha external 'grecaptcha': Variant; grecaptcha.execute(GoogleRecaptchaKey, InitObject(['action', 'pwdreset'])).then( lambda (token: Variant) // We received result from Google recaptcha, pass it along with other entered values to the server // Server will perform final validation of received token (is it valid value or not). WriteLn(Token); glbApp.ResetPass(Trim(edtUserName.value), Trim(edtCust.value), lambda (AClient, AStatus) ShowMessage('If entered details match registered user, password reset details will be sent to your eMail address.'); end ); end );
  2. IgorSavkic

    Responsive Design

    This grid system looks really nice, thanks for introducing it to us. I think with it it's possible to create some nice and fast table grids.
  3. IgorSavkic

    Send requests to Node.js server from client?

    > 3) If file version has changed, send back the new file ? is this possible? would the file be able to be written on the client side? If code is runs in a standard browser (not natified webApp) then I think you can only save it to localstorage (quite easy) and use from there or you can build service worker for caching (lot of work).
  4. IgorSavkic

    Request for feedback: Changing class names in the RTL

    I also do not see much of point in W3 prefix, perhaps idea was to distinguish it from Delphi classes. Anyway if works I would add simple mapping from old to new directly in affected units without doing anything to IDE. Something like TW3Button = TButton or class(TButton)
  5. IgorSavkic

    UI layout

    That's true, after several attempts I've stopped using TLayout alltogether and switched to manual positioning within resize event. What's interesting is frow layout (https://frowcss.com)
  6. IgorSavkic

    Chat Scroller - Need Some Tips

    Perhaps try to have control in virtual mode, meaning do not create all items in control, rather create enough to cover visible portion of the control
  7. IgorSavkic

    WebSocket Srv in Node

    Thanks, this looks like exacatly what I need. I've been trying whole day to make it work and it's always failing with warning that require is not recognized. It seems to me that NWjs developers do not test on Windows since with their exact steps (and code) app cannot even start, I'll try with other versions, hopefully there is one that works.
  8. IgorSavkic

    WebSocket Srv in Node

    Question about Node classes, what is the difference between TNJWebSocketServer in SmartNJ.WebSocket and one in SmartNJ.Server.WebSocket? I'm trying to create a kind of hybrid app, with two modes, client (standard SMS web client) and server (NodeJS server(with regular client as a GUI). App starts as a standard web client, displaying some data from server, depending on config it should start a NodeJS server as well (to which other clients in same LAN will connect). That of course doesn't work in browser so I was thinking of building it with nativefier since I've noticed it packages NodeJS (as dll) in the bundle. However I haven't managed to do it yet, nativefier produce standalone app, and client (GUI) works but server part does not. Server code is fine since it works when started through Node. If anyone worked more with nativefier or has any idea how to make it done I would appreciate it.
  9. IgorSavkic


    Statistics as far as I could see just measure time while SMS was running in certain project. I believe it would be more useful to measure actual work time, while SMS was active (focused) and there were activity (keyboard, mouse). GetLastInputInfo might be a good way to catch it, for example if it returns something above 5mins, stop the timer.
  10. IgorSavkic

    Renaming form in ObjectInspector

    This is same problem from 2.x version, but it's worse now, then it was possible to fix it with editing .sfm file, now only solution is to delete form and start again Anyway, just add one form to project (main), then go to File/New/New form, when prompted name it SecondForm, form is created. Save project, go to SecondForm, in ObjectInspector change Name to frmSecond, save and project becomes uncompilable.
  11. IgorSavkic

    Renaming form in ObjectInspector

    > Through Project manager: Through Property Inspector I think SMS in this should behave as Delphi. Project manager operates on units, so it will display unit name (for example MainForm.pas) and renaming there, renames unit. Object/Property inspector operates on components, so changing form name just does that, changes form name and class, unit is unaffected. For forms units I do like to have a different unit name and a different form name, for example I prefix all controls with it's type abbreviation, something like: Unit: SettingsForm.pas FormControl: frmSettings Panel: pnlMain ListBox: lbItems Panel: pnlRight ListBox: lbCategories Panel: pnlBottom Button: btnOK Button: btnCancel
  12. IgorSavkic

    NodeJS file utils and native app

    Thanks, David and Nico, this will be a good starting point to experiment and get going.
  13. IgorSavkic

    NodeJS file utils and native app

    Has someone tried to make SMS app which uses Node to access native file system, any hints or examples on how to do that? Also have someone tried building native apps with SMS, I see there's a nativefier and in Node it seems possible to access even WinApi, that opens a lot of possibilities.
  14. IgorSavkic

    Procedure code completion

    Often error may be in some other unit not in the one you're working on. In that case it would be good if code completion would work in unaffected-by-error class.
  15. IgorSavkic

    Procedure code completion

    If there's any error in code and code isn't compilable, adding new method to class declaration and pressing Ctrl+Shift+C will often mess code, add new method within some other or move it to the top of the unit (with some other methods). Best would be not to allow code completition if there's some error.
  16. IgorSavkic

    Renaming form in ObjectInspector

    It doesn't happen every time, sometimes it raises AV (I'm attaching callstack for it), most times it just corrupts files without exception and sometimes it works. Here is a video of steps taken. SMS.mp4 CallStack.txt
  17. IgorSavkic

    Renaming form in ObjectInspector

    I'm using version 3.02.20, for me SMSUpdate says there's no development channel available so cannot try anything newer. Anyway, try AfterRename, that is the state of the project when error starts to happen.
  18. IgorSavkic

    Renaming form in ObjectInspector

    For me it happens always, here are two files. First is before renaming which works fine (compiles) and second is after renaming through ObjectInspector that fails. BeforeRename.7z AfterRename.7z
  19. IgorSavkic

    Renaming form in ObjectInspector

  20. IgorSavkic

    serviceWorkers (fetch)

    Thanks for example, I'm gonna try to extend it to with caching to achive offline working site.
  21. IgorSavkic


    Has anybody tried to work with serviceWorkers in SMS? I should built kind of kiosk mode app that should work offline as well, apparently you can get that with serviceWorkers.
  22. IgorSavkic

    Forum access

    Thanks Daniel, that seems to be the same problem. I had to change display name and remove space from it and then it allows me log without reset.
  23. IgorSavkic

    Forum access

    I've changed my password couple of days ago and I've been having trouble with login since. I have to reset password every time I visit forum, I do so, password is accepted and I can go to forum. However, tomorrow (or after logout), login with that password (it's double checked and tried with several browsers) doesn't work.
  24. IgorSavkic

    TabControl & Tabs ?

    > I am attempting to use one form and a TabControl. This way, I have one header, one footer, and navigation buttons on just the form and NOT all the tabs. You don't need tab control for that, just make sure that Header/Footer control are children of Application.Display, that way any form you add will share desktop with those global header/footer.
  25. IgorSavkic

    SMS and MORMOT

    You can use SMS trial for the tests.