Virtual-TreeView icon indicating copy to clipboard operation
Virtual-TreeView copied to clipboard

Refactorings to simplify FireMonkey port

Open joachimmarder opened this issue 6 years ago • 8 comments

See pull request #839 for a detailed discussion. Proposed changes:

  • Since FMX uses the type single for coordinates and dimensions, while VCL uses Integer, we should create an lais to avoid having too many $ifdef in the code.
  • Some function use the type HDC, we should try to switch to TCanvas instead.
  • We should discuss to throw old and rarely used features overboard, like tiled background and own drawn alpha-blended selection
  • Get rid of UtilityImages / VirtualTrees.res, they are also not high-dpi compatible. Maybe draw them at runtime on bitmaps.
  • Extract TVTDataObject, VTDRagManager etc. to own unit.

joachimmarder avatar Nov 06 '18 21:11 joachimmarder

All looks ok but

We should discuss to throw old and rarely used features overboard, like tiled background and own drawn alpha-blended selection

but this one should stay. I use it myself. I can migrate this to FMX but definitely later. The priority for drawing migration is drawing the header for me.

livius2 avatar Nov 07 '18 07:11 livius2

I can change all to alias TDimension but two questions

  1. change also events?
  2. change also published properties? If not this is harder task - because some properties are in BaseTree as public but in descendant as published.

I see more problems here. Overrided procedures can not have TDimension replacement...

livius2 avatar Nov 07 '18 08:11 livius2

Changing published properties should not be breaking, so yes. For the events we should consider waiting to the next major version of Virtual TreeView. It will work, but the IDE will show an (unnecessary) warning.

I wonder: Is Firemonkey making actual use of the decimal places that the Single type offers, or do you typically have whole number here too?

A V8.0 might be a good point to finally merge the branches and make such small breaking changes. There is another event that should be changed (#837).

joachimmarder avatar Nov 07 '18 08:11 joachimmarder

  • Since FMX uses the type single for coordinates and dimensions, while VCL uses Integer, we should create an lais to avoid having too many $ifdef in the code.
  • Some function use the type HDC, we should try to switch to TCanvas instead.

changes commited

I wonder: Is Firemonkey making actual use of the decimal places that the Single type offers, or do you typically have whole number here too?

It depend of usage case. Normally we have fraction=0 but you can have some scalling and any calculation can be made by fraction.

livius2 avatar Nov 07 '18 11:11 livius2

changes commited

Not sure how to get these changes and leave out all your other changes. I will apply them manually in master branch at a later time.

joachimmarder avatar Nov 07 '18 13:11 joachimmarder

I suppose you can cherry-pick this particular commit

livius2 avatar Nov 07 '18 16:11 livius2

Added support of header drawing - its columns and button styles Still few pixel issues but near to compleated

livius2 avatar Nov 09 '18 22:11 livius2

Added some click events, expand, collapse, header column resize, focus rect.. It looks now really promissing :)

livius2 avatar Nov 12 '18 17:11 livius2