<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: XE2 FireMonkey Designer &#8211; Clipboard Gotcha</title>
	<atom:link href="http://www.deltics.co.nz/blog/?feed=rss2&#038;p=750" rel="self" type="application/rss+xml" />
	<link>http://www.deltics.co.nz/blog/?p=750</link>
	<description>Keeping Pascal afloat in Aotearoa</description>
	<lastBuildDate>Mon, 06 May 2013 11:27:56 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: RAD Studio XE2 정보 모음</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10775</link>
		<dc:creator>RAD Studio XE2 정보 모음</dc:creator>
		<pubDate>Fri, 02 Dec 2011 05:14:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10775</guid>
		<description><![CDATA[[...] XE2 FireMonkey Designer &#8211; Clipboard Gotcha [...]]]></description>
		<content:encoded><![CDATA[<p>[...] XE2 FireMonkey Designer &#8211; Clipboard Gotcha [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jolyon Smith</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10543</link>
		<dc:creator>Jolyon Smith</dc:creator>
		<pubDate>Tue, 06 Sep 2011 22:59:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10543</guid>
		<description><![CDATA[@Torbin - imagine the same developer who has put a button on a panel and then wants another button on the same panel.  Well, he thinks - I already HAVE a button on that panel, so I shall simply copy that.  So he copies the button he just placed, presses Ctrl+V and the new button is placed not as a child of the panel (i.e. the same parent as the original that was *copied*) but instead is placed as a child of the original button.  Not only is the &quot;Copy&quot; NOT a copy (it has a different parent), but the thing being copied has also been changed (it now has a child)!!

That&#039;s some spooky quantum clipboard interaction going on right there!  :)

Actually, this isn&#039;t possible with the bugs in the FireMonkey designer right now...  you cannot Copy and then immediately Paste (on my XE2 installation - ymmv).  You first have to change the selection in the structure view.

It strikes me as much easier to explain to someone that if you copy a button which has it&#039;s form as parent then you get *another* button with form as parent, than it is to explain that if you copy something then not everything about what you are copying actually gets... copied.

Similarly it strikes me as very easy to explain that if you want to change the parent of something then you should do precisely that - change it&#039;s parent.  This functionality is a key feature of the Structure View!  The use of Cut/Paste to re-parent controls I think pre-dates the Structure View, so the behaviour that made sense then, and which was coerced into behaving mostly intuitively mode by an accident of a property of the VCL, not by design, perhaps doesn&#039;t make as much sense now.

It&#039;s somewhat ironic that I am told on the one hand I should unlearn my VCL designer habits AND ALSO be told that I should continue to maintain the habit of using a side-effect of the clipboard to re-assign parenting of controls....  :)]]></description>
		<content:encoded><![CDATA[<p>@Torbin &#8211; imagine the same developer who has put a button on a panel and then wants another button on the same panel.  Well, he thinks &#8211; I already HAVE a button on that panel, so I shall simply copy that.  So he copies the button he just placed, presses Ctrl+V and the new button is placed not as a child of the panel (i.e. the same parent as the original that was *copied*) but instead is placed as a child of the original button.  Not only is the &#8220;Copy&#8221; NOT a copy (it has a different parent), but the thing being copied has also been changed (it now has a child)!!</p>
<p>That&#8217;s some spooky quantum clipboard interaction going on right there!  <img src='http://www.deltics.co.nz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Actually, this isn&#8217;t possible with the bugs in the FireMonkey designer right now&#8230;  you cannot Copy and then immediately Paste (on my XE2 installation &#8211; ymmv).  You first have to change the selection in the structure view.</p>
<p>It strikes me as much easier to explain to someone that if you copy a button which has it&#8217;s form as parent then you get *another* button with form as parent, than it is to explain that if you copy something then not everything about what you are copying actually gets&#8230; copied.</p>
<p>Similarly it strikes me as very easy to explain that if you want to change the parent of something then you should do precisely that &#8211; change it&#8217;s parent.  This functionality is a key feature of the Structure View!  The use of Cut/Paste to re-parent controls I think pre-dates the Structure View, so the behaviour that made sense then, and which was coerced into behaving mostly intuitively mode by an accident of a property of the VCL, not by design, perhaps doesn&#8217;t make as much sense now.</p>
<p>It&#8217;s somewhat ironic that I am told on the one hand I should unlearn my VCL designer habits AND ALSO be told that I should continue to maintain the habit of using a side-effect of the clipboard to re-assign parenting of controls&#8230;.  <img src='http://www.deltics.co.nz/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Thuma</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10537</link>
		<dc:creator>Michael Thuma</dc:creator>
		<pubDate>Tue, 06 Sep 2011 14:35:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10537</guid>
		<description><![CDATA[...is essentially the same as that of the VCL designer. The difference is that any FireMonkey control can be the parent of any other FireMonkey control,

- The GID is one aspect of the Firemonkey.

The FireMonkey in the way we see it now is a very young evolution ... and introduced during the time none one is allowed to talk about officially. So I think best is to report such things and give the team the opportunity to rethink and redesign. Anyway it is amazing that the such a fundamental change has been introduced in such a short period of time but already works &#039;good&#039;. Anyway an update package is said to come app. eom.]]></description>
		<content:encoded><![CDATA[<p>&#8230;is essentially the same as that of the VCL designer. The difference is that any FireMonkey control can be the parent of any other FireMonkey control,</p>
<p>- The GID is one aspect of the Firemonkey.</p>
<p>The FireMonkey in the way we see it now is a very young evolution &#8230; and introduced during the time none one is allowed to talk about officially. So I think best is to report such things and give the team the opportunity to rethink and redesign. Anyway it is amazing that the such a fundamental change has been introduced in such a short period of time but already works &#8216;good&#8217;. Anyway an update package is said to come app. eom.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbins</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10535</link>
		<dc:creator>Torbins</dc:creator>
		<pubDate>Tue, 06 Sep 2011 11:17:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10535</guid>
		<description><![CDATA[Lets imagine a programmer that is creating his first FM application. He drops a panel on the form and then a button. After that he wants to place a button on the panel. He cuts out button, selects the panel and presses Ctrl+V. What happened? Button lands on the form, because form designer keeps parent. That programmer says a few nice words in the address of Jolyon Smith, and starts digging in the help. It takes him half an hour to find that magical Ctrl+Shift+V.
Jolyon how mach time it took to fix your issue? I think much less then half an hour. So the current behaviour of the designer is actually better, don&#039;t you think so?]]></description>
		<content:encoded><![CDATA[<p>Lets imagine a programmer that is creating his first FM application. He drops a panel on the form and then a button. After that he wants to place a button on the panel. He cuts out button, selects the panel and presses Ctrl+V. What happened? Button lands on the form, because form designer keeps parent. That programmer says a few nice words in the address of Jolyon Smith, and starts digging in the help. It takes him half an hour to find that magical Ctrl+Shift+V.<br />
Jolyon how mach time it took to fix your issue? I think much less then half an hour. So the current behaviour of the designer is actually better, don&#8217;t you think so?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10534</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Tue, 06 Sep 2011 09:43:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10534</guid>
		<description><![CDATA[Yeah - there are some things that needs to be fixed...

F12 Gotcha - after a FM application has run, you cannot switch from code to design by pressing F12. 

It is (oddly) possible to switch from design to code by pressing F12 after a run.

After clicking tabs - F12 works again...

Not really related to the Clipboard, but to the FM designer....]]></description>
		<content:encoded><![CDATA[<p>Yeah &#8211; there are some things that needs to be fixed&#8230;</p>
<p>F12 Gotcha &#8211; after a FM application has run, you cannot switch from code to design by pressing F12. </p>
<p>It is (oddly) possible to switch from design to code by pressing F12 after a run.</p>
<p>After clicking tabs &#8211; F12 works again&#8230;</p>
<p>Not really related to the Clipboard, but to the FM designer&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jolyon Smith</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10533</link>
		<dc:creator>Jolyon Smith</dc:creator>
		<pubDate>Tue, 06 Sep 2011 08:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10533</guid>
		<description><![CDATA[I didn&#039;t suggest preceding actions should modify following ones.  I suggested that in the FireMonkey designer the &quot;Parent&quot; property should be preserved as part of a copy/paste operation.

Always.

(the only exception to this would of course be when the parent referenced on the clipboard no longer exists).

I then also suggested that if the *user* wanted to paste into the form with the paste operation &quot;rooted&quot; at the currently selected object then a &quot;Shift&quot;+Paste operation could be used to achieve that.]]></description>
		<content:encoded><![CDATA[<p>I didn&#8217;t suggest preceding actions should modify following ones.  I suggested that in the FireMonkey designer the &#8220;Parent&#8221; property should be preserved as part of a copy/paste operation.</p>
<p>Always.</p>
<p>(the only exception to this would of course be when the parent referenced on the clipboard no longer exists).</p>
<p>I then also suggested that if the *user* wanted to paste into the form with the paste operation &#8220;rooted&#8221; at the currently selected object then a &#8220;Shift&#8221;+Paste operation could be used to achieve that.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10532</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Tue, 06 Sep 2011 07:38:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10532</guid>
		<description><![CDATA[Well, think of it other terms, and of breaking habits, what you&#039;re asking would be a little bit like asking &quot;why isn&#039;t the primary Windows UI the keyboard and the DOS command line? Why using a mouse with only two buttons when my keyboard has 100+ keys?&quot;

&gt;but then you will get into a different kettle of fish with the behaviour 
&gt;of an action being determined by what action preceded it

I don&#039;t follow you there, you&#039;re also asking for the action to be determined by the action that preceded it, you&#039;re just arguing about how the preceding action should be interpreted. It&#039;s rather common to have an action depend on what is currently selected, or what you were doing before.

&gt;the difference between Cut/Copy is 99% expressed at the time of
&gt;Cut/Copy, NOT at the time of Paste.

Cut is traditionally expected to be a bundled copy+delete, that&#039;s the only difference there should be between the two.

In UI you often have things that should be together, and for which the alignment is relative (a label, its edit and a related button f.i.), in a graph you&#039;ll nature parent those, and can then move them around as a group with relative positionning.

That&#039;s much more useful and productive than parenting to a parent container, and then having to manually keep thing together through multi-select and manual realigns, etc.]]></description>
		<content:encoded><![CDATA[<p>Well, think of it other terms, and of breaking habits, what you&#8217;re asking would be a little bit like asking &#8220;why isn&#8217;t the primary Windows UI the keyboard and the DOS command line? Why using a mouse with only two buttons when my keyboard has 100+ keys?&#8221;</p>
<p>&gt;but then you will get into a different kettle of fish with the behaviour<br />
&gt;of an action being determined by what action preceded it</p>
<p>I don&#8217;t follow you there, you&#8217;re also asking for the action to be determined by the action that preceded it, you&#8217;re just arguing about how the preceding action should be interpreted. It&#8217;s rather common to have an action depend on what is currently selected, or what you were doing before.</p>
<p>&gt;the difference between Cut/Copy is 99% expressed at the time of<br />
&gt;Cut/Copy, NOT at the time of Paste.</p>
<p>Cut is traditionally expected to be a bundled copy+delete, that&#8217;s the only difference there should be between the two.</p>
<p>In UI you often have things that should be together, and for which the alignment is relative (a label, its edit and a related button f.i.), in a graph you&#8217;ll nature parent those, and can then move them around as a group with relative positionning.</p>
<p>That&#8217;s much more useful and productive than parenting to a parent container, and then having to manually keep thing together through multi-select and manual realigns, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jolyon Smith</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10531</link>
		<dc:creator>Jolyon Smith</dc:creator>
		<pubDate>Tue, 06 Sep 2011 06:37:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10531</guid>
		<description><![CDATA[@Eric:  I&#039;m not sure that the &quot;specification&quot; of *any* &quot;scene graph&quot; goes so far as to define what copy/paste should do in a specific GUI editor for itself (the specification of the GUI will be a separate case from the specification of the scene graph).

The fact that a particular graphics framework is implemented AS a scene graph says nothing about how the GUI&#039;s that work within any particular domain specific implementation should work.

That is the decision of the GUI designers and what is most appropriate to their use cases.

The FireMonkey Form Designer is... a FORM DESIGNER.  Not a &quot;scene graph editor&quot;, even though it may be technically precisely that.

In a FORM designer, if I create a copy of a button contained by control X then I should get another button contained in control X - that is after all what &quot;copy&quot; means... make me another one LIKE THIS.  The fact that the VCL achieves this result in most - but not all - cases is perhaps by accident rather than design.

In the case of a &quot;Cut&quot; you could argue that the behaviour could/should be different but then you will get into a different kettle of fish with the behaviour of an action being determined by what action preceded it - i.e. paste does X if preceded by Copy but does Y if preceded by Cut.  A variance which isn&#039;t at all common w.r.t Cut/Copy/Paste behaviour... the difference between Cut/Copy is 99% expressed at the time of Cut/Copy, NOT at the time of Paste.

Having said that, if *intuitive* such a variation shouldn&#039;t matter - it would be interesting to explore that variation further perhaps.

But no, I correct myself.

It is absolutely positively by accident that the VCL get&#039;s it right on the occasions that it does, as evidenced by the way that it also get&#039;s it &quot;wrong&quot; when pasting controls that are containers.  It is just that the consequences of that accident are writ far larger in the FireMonkey designer, exposed - but not excused - by it&#039;s different fundamental architecture.]]></description>
		<content:encoded><![CDATA[<p>@Eric:  I&#8217;m not sure that the &#8220;specification&#8221; of *any* &#8220;scene graph&#8221; goes so far as to define what copy/paste should do in a specific GUI editor for itself (the specification of the GUI will be a separate case from the specification of the scene graph).</p>
<p>The fact that a particular graphics framework is implemented AS a scene graph says nothing about how the GUI&#8217;s that work within any particular domain specific implementation should work.</p>
<p>That is the decision of the GUI designers and what is most appropriate to their use cases.</p>
<p>The FireMonkey Form Designer is&#8230; a FORM DESIGNER.  Not a &#8220;scene graph editor&#8221;, even though it may be technically precisely that.</p>
<p>In a FORM designer, if I create a copy of a button contained by control X then I should get another button contained in control X &#8211; that is after all what &#8220;copy&#8221; means&#8230; make me another one LIKE THIS.  The fact that the VCL achieves this result in most &#8211; but not all &#8211; cases is perhaps by accident rather than design.</p>
<p>In the case of a &#8220;Cut&#8221; you could argue that the behaviour could/should be different but then you will get into a different kettle of fish with the behaviour of an action being determined by what action preceded it &#8211; i.e. paste does X if preceded by Copy but does Y if preceded by Cut.  A variance which isn&#8217;t at all common w.r.t Cut/Copy/Paste behaviour&#8230; the difference between Cut/Copy is 99% expressed at the time of Cut/Copy, NOT at the time of Paste.</p>
<p>Having said that, if *intuitive* such a variation shouldn&#8217;t matter &#8211; it would be interesting to explore that variation further perhaps.</p>
<p>But no, I correct myself.</p>
<p>It is absolutely positively by accident that the VCL get&#8217;s it right on the occasions that it does, as evidenced by the way that it also get&#8217;s it &#8220;wrong&#8221; when pasting controls that are containers.  It is just that the consequences of that accident are writ far larger in the FireMonkey designer, exposed &#8211; but not excused &#8211; by it&#8217;s different fundamental architecture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10530</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Tue, 06 Sep 2011 06:11:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10530</guid>
		<description><![CDATA[Jolyon, it might disagree with your VCL habits, but the copy-paste behavior is actually the correct one for a scene graph, which is what FireMonkey is.]]></description>
		<content:encoded><![CDATA[<p>Jolyon, it might disagree with your VCL habits, but the copy-paste behavior is actually the correct one for a scene graph, which is what FireMonkey is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ron</title>
		<link>http://www.deltics.co.nz/blog/?p=750&#038;cpage=1#comment-10528</link>
		<dc:creator>Ron</dc:creator>
		<pubDate>Tue, 06 Sep 2011 02:49:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.deltics.co.nz/blog/?p=750#comment-10528</guid>
		<description><![CDATA[I think FMX is fine for a basic data input type application right now. It&#039;s missing reporting, and it doesn&#039;t look like TChart supports FMX styling yet (looks very out of place at this point IMO), but that will all change soon enough I&#039;m sure. It&#039;ll just take some time for third parties to get the hang of things is all. And I personally expected a significant SP1 for this release due to all the new technology introduced. Most of the things I&#039;ve seen are very, very fixable in an SP.]]></description>
		<content:encoded><![CDATA[<p>I think FMX is fine for a basic data input type application right now. It&#8217;s missing reporting, and it doesn&#8217;t look like TChart supports FMX styling yet (looks very out of place at this point IMO), but that will all change soon enough I&#8217;m sure. It&#8217;ll just take some time for third parties to get the hang of things is all. And I personally expected a significant SP1 for this release due to all the new technology introduced. Most of the things I&#8217;ve seen are very, very fixable in an SP.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
