Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


jarto last won the day on March 18

jarto had the most liked content!

About jarto

  • Rank

  • Birthday 02/11/1970

Profile Information

  • Gender
  • Location


  • Company name
    The Smart Company AS
  • Sector
    Information technology
  • Position
    Development Manager

Smart Mobile Studio

  • Edition

Recent Profile Visitors

535 profile views
  1. jarto

    How to resize a modal dialog

    Got it. TW3BlockBox was using 100% as width and height. It's a nice trick but that also prevents javascript from triggering resizes.
  2. jarto

    How to resize a modal dialog

    Thanks. Gonna have a look.
  3. jarto

    Embed SMS Form Project in WordPress Page?

    Wonder if this helps: https://stackoverflow.com/questions/369498/how-to-prevent-iframe-from-redirecting-top-level-window
  4. jarto

    Beware of box shadows!

    I have been working on a new TW3StringGrid for Smart Mobile Studio. The original plan was to include it in 3.0, but there was a problem: It was slow on iOS. So, ever since the release, I've tried to crack this problem. How can Javascript that works beautifully on every other platform and browser be absolutely horrible on iOS? It was extremely fast on desktop browsers and Android tablets. On iOS it took seconds to draw the grid and scrolling it was close to unusable. After countless of hours of testing and trying, I finally found the reason: Box shadows in CSS. For example: .TW3ContainerBorder { border-radius: <?pas=EdgeRounding?>; border-top: 1px solid rgba(250, 250, 250, 0.7); border-left: 1px solid rgba(250, 250, 250, 0.7); border-right: 1px solid rgba(240, 240, 240, 0.5); border-bottom: 1px solid rgba(240, 240, 240, 0.5); -webkit-box-shadow: 0px 0px 1px 1px <?pas=GetRGBA(clDlgShadowBaseColor, 0.3)?>; -moz-box-shadow: 0px 0px 1px 1px <?pas=GetRGBA(clDlgShadowBaseColor, 0.3)?>; -ms-box-shadow: 0px 0px 1px 1px <?pas=GetRGBA(clDlgShadowBaseColor, 0.3)?>; -o-box-shadow: 0px 0px 1px 1px <?pas=GetRGBA(clDlgShadowBaseColor, 0.3)?>; box-shadow: 0px 0px 1px 1px <?pas=GetRGBA(clDlgShadowBaseColor, 0.3)?>; } .TW3FlatBorder { border-radius: <?pas=EdgeRounding?>; border-top: 1px solid rgba(44, 44, 44, 0.8); border-left: 1px solid rgba(44, 44, 44, 0.8); border-right: 1px solid rgba(44, 44, 44, 0.8); border-bottom: 1px solid rgba(44, 44, 44, 0.8); } I had used a TW3ContainerBorder for every cell in the grid. Replacing them with a flat border improved performance dramatically on iOS. Something like an order of magnitude faster. So if you've been having performance problems with iOS, that's most likely the reason.
  5. jarto

    Chat Scroller - Need Some Tips

    I'm going to take a break from my Chromium work and have a look if I can modify ListBox to work with variable row heights. Edit: That's not too difficult to do. It'll just slow down a bit the calculation of rows to be shown. With variable heights you need to loop through all items when with fixed heights you can calculate which ones should be shown. However, having dynamic row heights is a pain and I believe that a chat control would need those. In that case the height of all items change during a device flip or window resize. And I believe that a proper chat control actually needs dynamic size. So, how would I do this? I'd set the min-width of the items to 100% and use PositionMode pmRelative. Then you should be able to just add and remove controls while the browser takes care of resizing and stacking them. Something like this: procedure TForm1.W3Button1Click(Sender: TObject); // Add to the end begin var Item:=TW3DivHtmlElement.Create(Content); //Or anything else Item.PositionMode:=pmRelative; w3_setStyle(Item.Handle, 'min-width', '100%'); Item.InnerText:='Hello world! I am control number '+IntToStr(Content.ControlCount)+'. How are you doing there?'; end; procedure TForm1.W3Button2Click(Sender: TObject); // Remove 1st. begin Content.ForEach( function(const Child: TW3TagContainer): TEnumResult begin Child.Free; result:=erBreak; end); end; procedure TForm1.InitializeForm; begin inherited; // this is a good place to initialize components Content.NativeScrolling:=True; end;
  6. jarto

    Chat Scroller - Need Some Tips

    You can use the same principles as TW3ListBox, but you'd just have to rewrite the rendering part. After all, the tricky part is just to figure out which ones to paint.
  7. jarto

    Chat Scroller - Need Some Tips

    Yeah, it's basically impossible to draw an infinite amount of controls. So I'd store the chat contents as pure data and only dynamically draw the visible ones. This same idea is used in TW3ListBox.
  8. jarto

    Update embedded Chromium

    Hi guys, I've been a busy for a while working on updating the Embedded Chrome we use in the IDE. The one we've used so far has been from Henri Gourvest. Unfortunately it's not been updated for 3 years, but there's a new fork by Salvador Diaz Fau, which is actively updated: https://github.com/salvadordf/CEF4Delphi
  9. jarto

    Development updates

    New update is available: Bug fixes and improvements to the IDE: BringToFront and SendToBack will now affect component creation order Opening files from Project Search Path is fixed
  10. jarto

    FinalizeObject seems not to fire

    Seems like there are bugs in the Form freeing or unregistering code. I have to dig deeper to see what's going on. Thanks for reporting this.
  11. jarto

    Grid control

    I'll send a version to you.
  12. @sibar Thank you. I can reproduce the problem now. Edit: Fixed. Will be in the next update.
  13. jarto

    Grid control

    I have a pretty nice Grid component, which I have not been able to release yet as it has performance problems on iOS. I've been trying to find the reason but haven't found a solution yet. This is extra weird as it's extremely fast on Android and extremely slow on iOS.
  14. jarto

    License (Gumroad)

    Can you please send Jörn (ja at smartmobilestudio.com) an e-mail about this? Please tell him which e-mail address you have registered under Gumroad, so he can find your subscription.
  15. jarto

    RTL Class Browser stays empty

    Weird, that you did not see the DEVELOPMENT-channel. And even weirder that it pops up in full screen. Which Windows-version are you using? The MASTER channel is identical with the current release, so it's also a good one to follow. When you do a portable installation like this, the full installation is inside the folder you created and the RTL folder is right there. Nothing is installed to ProgramData or Program Files then.