« Apesuite Spotlight: Enhanced Firemonkey Clipboard | Main | Apesuite Beta 6 - Preview Demo »
Wednesday
May232012

Apesuite Progress and New Firemonkey Grid Demo

The Apesuite Beta 6 release is coming along very smoothly and we expect to have it in our customers hands by this weekend.  We're essentially done adding new features for this beta and are just cleaning up a few odds and ends before it goes out.  Barring any unforseen circumstances, the update should be in the mail by Friday.

In the spirit of letting everyone in on the excitement, we have uploaded a new grid demo to play around with.  We are still looking for input on this release, so if you run into any glaring problems or have just general questions or feedback, please post them in the comments section of this blog entry.

The new demo can be downloaded here: http://bit.ly/Je5FHP

New features in this update are:

  1. Cell Spans - Cells can span x number of columns and y number of rows.  In practice, this works very similar to Excel's Merge and Center, though by default we do not alter the alignment when cells span multiple columns.
  2. Formula Support - Cells now evaluate Excel-style formulas when rendering the display text. Much like in Excel, cells that begin with an '=' are assumed to be formulas and will attempt to be evaluated. 
  3. Extensible Function Framework - Custom formula functions can easily be supplied to the grid allowing the grid fomula framework to fit exactly with your needs.  All functions are self documenting and can be queried at runtime to provide hints to your users about available features.  Provided in beta 6 is a nice collection of Excel comparable functions as follows: 
      • Logical Functions - AND, OR, NOT, IF, TRUE, FALSE
      • Math Functions - ABS, ACOS, ACOSH, ASIN, ASINH, ATAN, ATAN2, ATANH, CEILING, COMBIN, COS, COSH, DEGREES, EVEN, EXP, FACT, FLOOR, GCD, INT, LCM, LN, LOG, LOG10, PI, MOD, ODD, POWER, PRODUCT, QUOTIENT, RADIANS, RAND, RANDBETWEEN, ROUND, SIGN, SIN, SINH, ROUND, ROUNDDOWN, ROUNDUP, SQRT, SQRTPI, SUM, SUMSQ, TAN, TANH, TRUNC
      • String Functions - ASC, CONCATINATE, LOWER, UPPER, TRIM, CHAR, CLEAN, CODE, DOLLAR, EXACT, FIND, LEFT, LEFTB, LEN, LENB, MID, MIDB, PROPER, REPLACE, REPT, RIGHT, RIGHTB, SEARCH, SUBSTITUTE, T, TEXT, VALUE
      • Date Functions - DATE, DATEVALUE, DAY, EDATE, EODAY, HOUR, MINUTE, MONTH, NOW, SECOND, TIME, TIMEVALUE, TODAY, WEEKDAY, WEEKNUM, YEAR, YEARFRAC
      • Engineering Functions - BIN2DEC, BIN2OCT, BIN2HEX, DEC2BIN, DEC2HEX, DEC2OCT, HEX2BIN, HEX2DEC, HEX2OCT, OCT2BIN, OCT2DEC, OCT2HEX
      • Information Functions - ISBLANK, ISERR, ISERROR, ISNA, ISLOGICAL, ISNUMBER, ISTEXT, ISNONTEXT, ISREF, ISEVEN, ISODD, ISN, TYPE, COLUMN, ROW, HYPERLINK
  4. Find and Replace - The grid has a Finder interface which can be used to perform search and replace on cell contents and formulas. Supports features like Scan Columns vs Rows, Ignore case and match entire cell.
  5. Printing - There is now technically print support built into the grid, but we have been unable to test it.  Firemonkey's printer selection errors out on each of our test machines and does not allow us to get far enough to test.  Let us know if it works for you.
  6. Paste from Dataset - Paste data from a dataset at any location in the grid. Optionally overwrite existing data or move existing data either down or right.  (Live Bindings did not make this release)
  7. Named Ranges - It is now possible to name a range of cells for reference.  The range can be used in formulas, selections or for printing.
  8. Multiple Bug Fixes, Refactorings and speed improvements.

In addition, the new demo has been updated to show off all of the new features and includes two custom functions (SMILE and FIBONACCI) to show how easy it is to add your own functions.  It also shows an example of how to use the grid as a name/value pair editor in the new data connection screen.

We still have work to do before getting Apesuite to RC, but we getting close to having the full range of new components for our initial production release.  As such, we will spend the next few betas working on rounding out missing features and implementing enhancement requests for our existing components. 

As a side note, for those of you looking for C++Builder support...  while this release does install and compile on C++Builder, we're seeing some general instability when pulling together some of the C++ demos.  If you are adventurous and want to help us debug through some of those issues, now would be a good time to get involved.  We are going to make it a point to fix C++ problems before the Beta 7 and have cleaned up completely for the RC.

We are really proud of the work we've done in Apesuite.  Buidling complex components on an immature framework can be quite the chore and Firemonkey, while beautiful and fun at times can often be completely infuriating.  Even so, we've learned to appreciate the real power of the framwork and are excited about what the Firemonkey future holds for the Apesuite products and Sivv in general.

This really is a great time to code in Delphi.

References (3)

References allow you to track sources for this article, as well as articles that were written in response to this article.
  • Response
    Excellent Website, Continue the beneficial work. Thank you.
  • Response
    Response: career change
    arcana - Blog - Apesuite Progress and New Firemonkey Grid Demo
  • Response
    arcana - Blog - Apesuite Progress and New Firemonkey Grid Demo

Reader Comments (2)

The grid demo now starts quite fast. The design is beautiful, and the feature set is good. It's just what I need, except ... the executable is still 26 Mb, and more seriously: It is very slow. Selecting a column takes about a second. Typing in a cell has such a long response time that characters are lost. Many of our users are in developing countries with old machines and they can not use this. Any hope of improvement? I realize that Firemonkey is probably the culprit, but can you get around it? (Of course I would not bother to write this if I did not think your product looks great and I need it !)

June 2, 2012 | Unregistered CommenterØyvind Hammer

@Øyvind Hammer... Thanks for the kind comments.

Part of the size bloat is that it is a debug build, but even so, it would be about 17MB when compiled as a release build. However, I don't think that most of that is coming from the grid.

I will have to investigate where it is coming from, but a blank firemonkey app with our grid compiled in comes to 6.4MB while a blank firemonkey app with no components compiles to 3.5MB. That shows that the grid adds less than 3MB to the size of the file when compiled as a release build. We'll continue to look at it but to be honest, we have other priorities right now for the next beta. We do use generics and anonymous methods which are not the most optimized regarding file size, so that could have something to do with it.

Regarding speed, we still have some optimization to do but are already walking the line between speed and memory consumption. When profiling the application, most of the time is spent in creating pixel shaders, which is strictly a Firemonkey function. I'm sure that as FM improves the framework, we'll automatically gain some performance boost too. Even so, I'm sure that we can find ways to work around the problems, and already have to some degree.

Column selection hasn't really been reported as a speed issue before, so I'd be interested to know more about the system and environment that you are testing on. The big one most people bring up is column/row resizing and multiple cell selection with the mouse. The problem there is that mousemove is not the most responsive event in Firemonkey and we don't get messages as quickly as I think that we should. We've tried working around it to some degree using timers, but timers are also message loop based and therefore just as muddy. We hope to spend a bit of time working this one out though as it's the most glaring problem with the component from a usability standpoint.

Thanks again for your kind words and any other feedback or details you can provide would be terrific.

June 2, 2012 | Registered CommenterSivv Support

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>