Saturday
May262012

Apesuite Spotlight: Enhanced Firemonkey Clipboard

I just wanted to give you another preview of a new feature coming to Apesuite Beta 6.  

We had a lot of people complaining that our Grid Demo did not behave correctly when cut/copy/paste between applications such as Word and Excel.  We decided that due to the similarity of our component to applications like Excel and Numbers that this complaint would not be going away any time soon and that we should take a few extra hours to improve on our inter-application clipboard functionality.

Unfortunately, Firemonkey has a very simplistic interface that allows only a single string token to be saved to and retrieved from the clipboard.  This wasn't going to work for us as we need to store multiple formats to the clipboard.  To realistically handle most scenarios, we'd have to at least store tab delimited text for excel/numbers, rtf text for ms word, html for various html editors and browsers and of course, our internal copy and paste format that is respective of all metadata that would need to be replicated with the transaction.  

Our answer to this problem was to write our own system crossplatform clipboard object that works on multiple types of data and data formats and allows a clipboard that holds multiple formats at the same time.  

The functionality can be found via a global Clipboard funciton in the "Ape.System.Clipboard" unit. Here's a quick overview of how you can utilize this new feature:

Before adding anything to the clipboard you will want to make sure that there isn't anything else there:

Clipboard.Clear;

Then add some text to the clipboard by setting the Text property:

Clipboard.Text := 'This is my text';

Now if you want to add that same text with some HTML tags:

Clipboard.HTML := 'This is <b>my</b> text';

And say you had an image of your text that you also wanted to make available for a paint program:

Clipboard.PNG := MyImage.Bitmap;

Clipboard.TIFF := MyImage.Bitmap;

Now on the flipside, say you want to use consume items from the system clipboard.  To pull the text as a string:

str := Clipboard.Text;

or to grab your image back from clipboard:

if Clipboard.HasPNG then

  bmp := Clipboard.PNG;

  try

    MyImage.Bitmap.Assign(bmp);

  finally

    bmp.Free;

  end;

One of the most important aspects of clipboard usage is being able to define your own format.  We allow you to do this with the TypedText and TypedData properties:

Clipboard.TypedText['myformat'] := 'My|custom|format';

Clipboard.TypedData['myBinaryFormat'] := MyStream;

Of course, all of this is intended to work in both Windows and OS X.  

This new Clipboard functionality should open you up to coding more like a first class citizen of the operating system.  Please give this a try when you get your hands on Beta 6 and let us know what you think.

 

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.

Friday
May112012

Apesuite Beta 6 - Preview Demo

We are working hard on finalizing Beta 6 of the Apesuite package for Firemonkey.  
 
As part of this process we'd like to get some early feedback on a few of our new components coming out in Beta 6.  The following is a link to a demo download that includes binaries for Windows and OS X.  We would appreciate it if you could download it and start playing around with it.
Featured in the demo are the following new components:
  • TSmartGrid - A very versatile and flexible spreadsheet style grid component that aims for inline editing, advanced styling with fills and borders, excel-style navigation and selection, low memory footprint (theoretically), importing and exporting of multiple formats and fast (well as fast as Firemonkey will allow, which is still pretty slow at the moment).
  • TFontComboBox - A cross platform combo box that lists the fonts available on the system.
  • TFontToolbox - A toolbox for our TPageBar component that makes it easy to set all font settings.
  • TFillEditor - A panel that provides an editor for a Firemonkey TBrush (Fill, Stroke properties).
The feedback we are most interested in has to do with the SmartGrid navigation, selection, formatting and editing. 
  1. Are there any keybindings that seem to be missing?
  2. Is there any action that doesn't feel natural or consistent with other sheet type editors (mac or windows)?
  3. Is there some specific performance bottleneck you are running into?
  4. Is there a specific feature that you would like to see implemented in this component?
If you could provide feedback to us quickly, that would be great.  We're trying to finalize our feature set to iron out as many quirks as possible before beta 6 release. As I said in our recent blog post, we're aiming for beta 6 release this month and would like it to be sooner rather than later. Your help will be crucial to making that happen.
 
Non-customers can provide feedback in the comments of this blog post and customers can use the official support channels.
 
Thanks in advance for taking a look.
Thursday
May032012

Apesuite Beta 6 Preview and Sivv Support Site

It has been a while since I provided any information about what is cooking here at Sivv and I appologize for that.  We've been working hard on some new components for Beta 6 as well as some bug fixes to our current components.

Before I get into Beta 6, I just want to mention that our support site is currently offline.  We know this and are working to come up with an alternative system.  We weren't exactly happy with the system we had in place and after our support server was taken out by the recent Remote Desktop vulnerability, we decided to just keep it offline until we come up with a better option.  For now, we are supporting our customers via email and the appropriate contact information should be in your poduct readme files.

And now for a little bit on Beta 6.

Beta 6 will include over 10 new components including one big one that should prove to be very popular. I'm not going to mention exactly what it is, but you can probably guess based on the screenshot below:

Incidentally, the screenshot also shows off 5 of our other new components to be arriving with Beta 6.

We are aiming for a May release for beta 6 and hopefully well before the end of the month.

I just want to say thanks to our customers for your patience while we finalize a lot of these cool new features.  You are the best and we can't wait to get this next version in your hands.

 

Friday
Mar232012

Apesuite Beta 5 - XE2 Update 4 Approved

I previously had issued a warning against upgrading to XE2 Update 4 if you were using Apesuite components.  

http://arcana.squarespace.com/blog/2012/3/1/delphi-xe2-update-4-warning.html

I'm pleased to announce that the latest Apesuite Beta 5 seems to be working much better with Update 4 and the reported issues by our customers seems to have been corrected.  All demos that ship with Apesuite seem to work without fault and other internal testing has passed with flying colors.

So I guess what I'm saying is upgrade without abaondon...  unless you really hate fuzzy fonts.  Nothing we can do about that one.