<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Paweł Głowacki</title>
	<atom:link href="http://blogs.embarcadero.com/pawelglowacki/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.embarcadero.com/pawelglowacki</link>
	<description>Delphi Programming</description>
	<pubDate>Tue, 24 Apr 2012 09:21:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en-US</language>
			<item>
		<title>Bezier Surface Visualization (from Turbo Pascal to Delphi FireMonkey)</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/04/23/39614</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/04/23/39614#comments</comments>
		<pubDate>Mon, 23 Apr 2012 16:33:41 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Labs]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[source-code]]></category>

		<category><![CDATA[Bezier]]></category>

		<category><![CDATA[Bezier Surface]]></category>

		<category><![CDATA[Math]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[Resources]]></category>

		<category><![CDATA[Surface]]></category>

		<category><![CDATA[Visualization]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39614</guid>
		<description><![CDATA[Today I have been presenting "FireMonkey 3D Programming" session on the SDE event in Zeist in the Netherlands. Bob Swart was so kind and invited me to present on the first session of the day in the "Delphi" conference track and I wanted to prepare a brand new demo to show off the power of [...]]]></description>
			<content:encoded><![CDATA[<p>Today I have been presenting "FireMonkey 3D Programming" session on the <a href="http://www.sdn.nl/">SDE event</a> in Zeist in the Netherlands. <a href="http://www.drbob42.nl/">Bob Swart</a> was so kind and invited me to present on the first session of the day in the "Delphi" conference track and I wanted to prepare a brand new demo to show off the power of FireMonkey.</p>
<p>There is more and more FireMonkey resources available online, including new <a href="http://blogs.embarcadero.com/firemonkey">"FireMonkey blog"</a>, <a href="embt.co/firemonkey-info">FireMonkey Info page</a>, <a href="embt.co/firemonkey-quickstart">FireMonkey quickstart tutorials</a> and many more. Some of the best FireMonkey code pieces can be found at <a href="http://blogs.embarcadero.com/ao">Anders Ohlsson blog</a>. I especially like his EDN article on <a href="http://edn.embarcadero.com/article/42007">"Visualizing 3D mathematical functions using FireMonkey"</a> that explains how to programmatically create mesh data for visualization using <a href="http://docwiki.embarcadero.com/Libraries/en/FMX.Objects3D.TMesh">"TMesh"</a> FireMonkey component. The source code for this demo is available at the <a href="http://cc.embarcadero.com/item/28722">Code Central</a>.</p>
<p><a href="/files/2012/04/anders3dmathfuncscreenshot_5851.png"><img src="/files/2012/04/anders3dmathfuncscreenshot_5851-300x260.png" alt="" width="300" height="260" /></a></p>
<p>Two decades ago I have been studying computer graphics at the <a href="http://eng.pw.edu.pl/">Warsaw Institute of Technology</a> and I still have some of my <a href="http://en.wikipedia.org/wiki/Turbo_Pascal">Turbo Pascal 5.5</a> source code with graphics applications for <a href="http://en.wikipedia.org/wiki/DOS">DOS</a>. One of the projects for the labs on programming digitally controlled devices was to visualize a bicubic surface also known a <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_surface">"Bezier Surface"</a>. Using <a href="http://www.dosbox.com/">DosBox</a> I was able to run my original, compiled DOS application inside my Windows 7 64-bit virtual machine.</p>
<p><a href="/files/2012/04/puns5screen1_5854.png"><img src="/files/2012/04/puns5screen1_5854-300x235.png" alt="" width="300" height="235" /></a></p>
<p>The whole program is just one file with Turbo Pascal 5.5 code ("puns5.pas") and is using BGI for displaying graphics on the SVGA-compatible graphics card. It would not be possible to reuse the actual painting code, however I was able to extract three procedures, and some constants and variables from the the original Turbo Pascal code responsible for generating the 2-dimensional 11&#215;11 matrix of 3D points that make up the wireframe. Bezier surface is a special case of <a href="http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline">NURBS</a> surface that is very commonly used in <a href="http://en.wikipedia.org/wiki/3D_computer_graphics_software">3D modeling</a>. The shape of the surface is controlled by a 4&#215;4 matrix of 3D control points as illustrated on <a href="http://en.wikipedia.org/wiki/B%C3%A9zier_surface">wikipedia</a>:</p>
<p><a href="/files/2012/04/beziersurface2000px_5857.png"><img src="/files/2012/04/beziersurface2000px_5857-300x241.png" alt="" width="300" height="241" /></a></p>
<p>Below is the source code responsible for generating the 4&#215;4 matrix of control points ("CreateBicubicMatrix2") and the resulting 11&#215;11 matrix that approximates the bezier surface ("CountBicu" and "CreateNet").</p>
<pre><code>
<strong>const</strong>
  nx = 10;
  ny = 10;

<strong>type</strong>
  p3 = <strong>array</strong>[0..2] <strong>of</strong> single;
  Net = <strong>array</strong>[0..nx,0..ny] <strong>of</strong> p3;
  BicubicMatrix = <strong>array</strong>[0..3, 0..3] <strong>of</strong> p3;

<strong>procedure</strong> CreateBicubicMatrix2 (<strong>var</strong> G : BicubicMatrix) ;
<strong>var</strong> x,y,z : real; i,j : byte;
<strong>begin</strong>
  y:=-150;
  <strong>for</strong> i:=0 <strong>to</strong> 3 <strong>do</strong>
  <strong>begin</strong>
    x:=-150;
    <strong>for</strong> j:=0 <strong>to</strong> 3 <strong>do</strong>
    <strong>begin</strong>
      G[i,j,0]:=x;
      G[i,j,1]:=y;
      G[i,j,2]:=0;
      x:=x+100;
    <strong>end</strong>;
    y:=y+100
  <strong>end</strong>;
  G[0,0,2]:=250;
  G[3,0,2]:=50;
  G[0,3,2]:=50;
  G[3,3,2]:=-200;
  G[3,2,2]:=-200;
  G[2,3,2]:=-200;
<strong>end</strong>;

<strong>function</strong> CountBicu( wsp : integer; u,v: real; G : BicubicMatrix) : real;
<strong>var</strong> c,vb,u2,u3,t,t2,t3,v2,v3,k,k2,k3: real; j : byte;
<strong>begin</strong>
  c:=0;
  u2:=sqr(u);
  u3:=u*u2;
  t:=1-u;
  t2:=sqr(t);
  t3:=t*t2;
  v2:=sqr(v);
  v3:=v*v2;
  k:=1-v;
  k2:=sqr(k);
  k3:=k*k2;
  <strong>for</strong> j:=0 <strong>to</strong> 3 <strong>do</strong>
  <strong>begin</strong>
    <strong>case</strong> j <strong>of</strong>
      0: vb:=k3;
      1: vb:=3*k2*v;
      2: vb:=3*k*v2;
      3: vb:=v3
    <strong>end</strong>;
    c:= c + vb * (G[j,0,wsp]*t3 + G[j,1,wsp]*3*t2*u + G[j,2,wsp]*3*t*u2 + G[j,3,wsp]*u3 )
   <strong>end</strong>;
  Result:=c;
<strong>end</strong>;

<strong>procedure</strong> CreateNet(<strong>var</strong> N : Net; G : BicubicMatrix);
<strong>var</strong> u,v: real; i,e,f: integer;
<strong>begin</strong>
  <strong>for</strong> e:=0 <strong>to</strong> nx <strong>do</strong>
    <strong>for</strong> f:=0 <strong>to</strong> ny <strong>do</strong>
    <strong>begin</strong>
      u:=e/nx;
      v:=f/ny;
      <strong>for</strong> i:=0 <strong>to</strong> 2 <strong>do</strong>
        N[e,f,i]:=CountBicu(i,u,v,G);   <span style="color: #003399"><em>{ i - coord id: x, y or z }</em></span>
    <strong>end</strong>;
<strong>end</strong>;
</code></pre>
<p>I have started from the original Anders Ohlsson <a href="http://cc.embarcadero.com/item/28722">source code</a> for 3D mathematical function visualizations with FireMonkey and did some refactoring. There is a new button added for selecting "Bicubic Surface" and scroll bars for rotating the mesh in X, Y and Z dimensions.</p>
<p>Below is the actual source code for filling in "TMesh" component passed as the parameter with vertices, indices and material information. Below is the code responsible for creating the bezier surface programmatically using the original Anders&#8217; texture.</p>
<pre><code>
<strong>const</strong>
  s = 0.1; <span style="color: #003399"><em>// scale factor for display</em></span>

<strong>function</strong> ScaleCol(c: single): single;
<strong>begin</strong>
  <span style="color: #003399"><em>// scale color value "c" from "-25..25" to "0..1"</em></span>
  c := c + 25;
  Result := c / 50;
<strong>end</strong>;

<strong>procedure</strong> GenerateBicuMesh(<strong>const</strong> AMesh: TMesh);
<strong>var</strong> G: BicubicMatrix; N: Net; bmp: TBitmap;
  i,j: integer; p: TPoint3D;
  sizeN: integer; vertid, ixid: integer;
  verts : <strong>array</strong> [0..3] <strong>of</strong> TPoint3D;
<strong>begin</strong>
  CreateBicubicMatrix2(G);
  CreateNet(N,G);

  bmp := TBitmap.Create(1,360);
  <strong>for</strong> i := 0 <strong>to</strong> 359 <strong>do</strong>
    bmp.Pixels[0,i] := CorrectColor(HSLtoRGB(i/360,0.75,0.5));

  AMesh.Material.Texture := bmp;

  sizeN := (nx+1) * (ny+1);
  AMesh.Data.VertexBuffer.Length := 4 * sizeN;
  AMesh.Data.IndexBuffer.Length := 6 * sizeN;

  <strong>for</strong> i := 0 <strong>to</strong> nx-1 <strong>do</strong>
    <strong>for</strong> j := 0 <strong>to</strong> ny-1 <strong>do</strong>
    <strong>begin</strong>
      vertid := (i*(ny+1) + j) * 4;
      ixid := (i*(ny+1) + j) * 6;

      verts[0] := Point3D( N[i,j,0]*s, N[i,j,1]*s, N[i,j,2]*s);
      verts[1] := Point3D( N[i+1,j,0]*s, N[i+1,j,1]*s, N[i+1,j,2]*s);
      verts[2] := Point3D( N[i,j+1,0]*s, N[i,j+1,1]*s, N[i,j+1,2]*s);
      verts[3] := Point3D( N[i+1,j+1,0]*s, N[i+1,j+1,1]*s, N[i+1,j+1,2]*s);

      <strong>with</strong> AMesh.Data <strong>do</strong> <strong>begin</strong>
        <strong>with</strong> VertexBuffer <strong>do</strong> <strong>begin</strong>
          Vertices[vertid]   := verts[0];
          Vertices[vertid+1] := verts[1];;
          Vertices[vertid+2] := verts[2];;
          Vertices[vertid+3] := verts[3];;
        <strong>end</strong>;

        <strong>with</strong> VertexBuffer <strong>do</strong> <strong>begin</strong>
          TexCoord0[vertid]   := PointF(0, ScaleCol(verts[0].Z));
          TexCoord0[vertid+1] := PointF(0, ScaleCol(verts[1].Z));
          TexCoord0[vertid+2] := PointF(0, ScaleCol(verts[2].Z));
          TexCoord0[vertid+3] := PointF(0, ScaleCol(verts[3].Z));
        <strong>end</strong>;

        IndexBuffer[ixid]   := vertid;
        IndexBuffer[ixid+1] := vertid+1;
        IndexBuffer[ixid+2] := vertid+2;
        IndexBuffer[ixid+3] := vertid+2;
        IndexBuffer[ixid+4] := vertid+1;
        IndexBuffer[ixid+5] := vertid+3;
      <strong>end</strong>;
    <strong>end</strong>;
<strong>end</strong>;
</code></pre>
<p>Below is the screenshot from the "Bezier Surface" visualization in Delphi FireMonkey 3D application.</p>
<p><a href="/files/2012/04/bicusurffmxe2_5860.png"><img src="/files/2012/04/bicusurffmxe2_5860-300x259.png" alt="" width="300" height="259" /></a></p>
<p>The full source code of the "Bezier Surface" demo can be found at the <a href="http://cc.embarcadero.com/item/28811">Embarcadero Code Central</a>.</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39614&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39614" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Bezier%20Surface%20Visualization%20%28from%20Turbo%20Pascal%20to%20Delphi%20FireMonkey%29&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F04%2F23%2F39614" id="akst_email_39614" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/04/23/39614/feed</wfw:commentRss>
		</item>
		<item>
		<title>Building awesome Mac clients for web services built with Visual Studio and C#</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/04/02/39599</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/04/02/39599#comments</comments>
		<pubDate>Mon, 02 Apr 2012 09:24:18 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[source-code]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[C++Builder]]></category>

		<category><![CDATA[EDN]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[whitepaper]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39599</guid>
		<description><![CDATA[If your customers are asking you about a “Mac” version of your existing Windows application, you may want to look at the new Embarcadero FireMonkey application development platform. FireMonkey makes it very easy to create great looking, native, compiled applications for Mac as well as for Windows. FireMonkey is a great way for building clients [...]]]></description>
			<content:encoded><![CDATA[<p>If your customers are asking you about a “Mac” version of your existing Windows application, you may want to look at the new <a href="http://www.embarcadero-info.com/firemonkey/">Embarcadero FireMonkey</a> application development platform. FireMonkey makes it very easy to create great looking, native, compiled applications for Mac as well as for Windows. FireMonkey is a great way for building clients application with advanced GUI features like programmable effects and animations to your existing web services implemented with Microsoft Visual Studio 2010.</p>
<p><span>RAD Studio XE2 comes with multiple compilers, including Windows 32/64-bit compilers and native OS X compiler. Basically you just need to select active target platform and recompile your project and you can build applications that natively run on Windows and OS X. </span></p>
<p><a href="/files/2012/04/allplatformsinpm_5766.png"><img src="/files/2012/04/allplatformsinpm_5766.png" alt="" width="251" height="291" /></a></p>
<p><span>That’s truly unique capability. Being able to target Windows and OS X from the same Delphi or C++Builder code is something that no other IDE on the market can currently provide.</span></p>
<p><a href="/files/2012/04/mac-client-with-animations_5763.png"><img src="/files/2012/04/mac-client-with-animations_5763-300x223.png" alt="" width="300" height="223" /></a></p>
<p>I have put together a tutorial and a demo that features a simple ASP.NET 4.0 C# web service and a Mac OS X client application for it built with Delphi XE2 and FireMonkey. I have also recorded the whole process of building the ASP.NET web service and Mac client for it using Camtasia. The recording is just one 25-minute long mp4 file that you can download from the Code Central.</p>
<ul>
<li>EDN tutorial: "Building awesome Mac clients for web services built with Visual Studio and C#" <a href="http://edn.embarcadero.com/article/42160">http://edn.embarcadero.com/article/42160</a></li>
<li>Source code:  <a href="http://cc.embarcadero.com/item/28791">http://cc.embarcadero.com/item/28791</a></li>
<li>Video recording:  <a href="http://cc.embarcadero.com/item/28792">http://cc.embarcadero.com/item/28792</a></li>
<li>Slides:  <a href="http://cc.embarcadero.com/item/28793">http://cc.embarcadero.com/item/28793</a></li>
</ul>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39599&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39599" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Building%20awesome%20Mac%20clients%20for%20web%20services%20built%20with%20Visual%20Studio%20and%20C%23&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F04%2F02%2F39599" id="akst_email_39599" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/04/02/39599/feed</wfw:commentRss>
		</item>
		<item>
		<title>Delphi Developer Days 2012 in Amsterdam today and tomorrow</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/03/29/39591</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/03/29/39591#comments</comments>
		<pubDate>Thu, 29 Mar 2012 09:20:21 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Delphi-Developer-Days]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39591</guid>
		<description><![CDATA[I&#8217;m just sitting at the first day of Delphi Developer Days 2012 workshop organized by Cary Jensen and Marco Cantu in the city centre of Amsterdam. This is the second stop of the tour. Earlier this week DDD 2012 were delivered in London and next stops are Washington DC, Chicago, Frankfurt and Rome. Check out [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just sitting at the first day of Delphi Developer Days 2012 workshop organized by Cary Jensen and Marco Cantu in the city centre of Amsterdam. This is the second stop of the tour. Earlier this week DDD 2012 were delivered in London and next stops are Washington DC, Chicago, Frankfurt and Rome. Check out the details at <a href="http://www.delphideveloperdays.com/">http://www.delphideveloperdays.com/</a></p>
<p>I had the privilege to do a short "RAD Studio XE2" keynote presentation and also took this as the opportunity to introduce to the audience new Embarcadero Sales Director for Benelux, Alexander Goes, who used to work with me back in the Borland days in Amstelveen office. Embarcadero is clearly growing and one of the signs of it is reopening of the Embarcadero office in Amstelveen for Benelux countries.</p>
<p><a href="/files/2012/03/ddd20123_5689.JPG"><img src="/files/2012/03/ddd20123_5689-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>The attendees at DDD in Amsterdam are not only from the Netherlands, but also from other countries like Belgium, Norway, Denmark and even Greece. Marco and Cary are great Delphi experts and speakers. Beyond live sessions every attendee also received 450 pages printed book with the contents of all the sessions and more.</p>
<p>Marco showed a very nice FireMonkey demo application running on iPad. Depending on iPad position the direction of light components is changing, so the lighting on the sphere changes. I loved it:-)</p>
<p><a href="/files/2012/03/ddd20122_5692.JPG"><img src="/files/2012/03/ddd20122_5692-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Right now Marco goes into the inner working of FireMonkey styles&#8230; That&#8217;s super interesting stuff to see how flexible FireMonkey styles are&#8230;</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39591&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39591" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Delphi%20Developer%20Days%202012%20in%20Amsterdam%20today%20and%20tomorrow&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F03%2F29%2F39591" id="akst_email_39591" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/03/29/39591/feed</wfw:commentRss>
		</item>
		<item>
		<title>Delphi event in Romania for the first time ever!</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/03/16/39581</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/03/16/39581#comments</comments>
		<pubDate>Fri, 16 Mar 2012 09:25:03 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[DBX]]></category>

		<category><![CDATA[DataSnap]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[InterBase]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[AppWave]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[HD]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39581</guid>
		<description><![CDATA[The history is happening right now, right here! I&#8217;m just back from Bucharest, the capital of Romania. Yesterday it was a pure pleasure to present "RAD Studio XE2 in Action LIVE!" to the crowd of enthusiastic developers. It looks it was the first Delphi/C++Builder event ever in Romania!

The audience was very technical and positive. There [...]]]></description>
			<content:encoded><![CDATA[<p>The history is happening right now, right here! I&#8217;m just back from <a href="http://en.wikipedia.org/wiki/Bucharest">Bucharest</a>, the capital of Romania. Yesterday it was a pure pleasure to present "RAD Studio XE2 in Action LIVE!" to the crowd of enthusiastic developers. It looks it was the first Delphi/C++Builder event ever in Romania!</p>
<p><a href="/files/2012/03/bucharest2012031501_5570.jpg"><img src="/files/2012/03/bucharest2012031501_5570-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>The audience was very technical and positive. There was no end to questions about Delphi, C++Builder, FireMonkey, future plans for RAD Studio and many other, sometimes very low-level.</p>
<p>The event was divided into three logical parts:</p>
<ul>
<li>Embarcadero and RAD Studio XE2 Overview</li>
<li>FireMonkey Deep Dive</li>
<li>RAD Cloud Services</li>
</ul>
<p>After the brief introduction to Embarcadero/CodeGear/Borland history we moved to the Embarcadero products, including developer tools, database tools, InterBase and AppWave. In the RAD Studio XE2 overview I have focused on native development with Delphi/C++Builder/FireMonkey and web development with RadPHP. During the demo part I have presented the new Delphi 64-bit compiler, VCL styles, new "TZipFile" and Documentation Insight, followed by the "hello world" RadPHP application and some jQueryMobile demos.</p>
<p>After the break it was all about FireMonkey. Slides mixed with demos. Compiling FireMonkey application for Windows and Mac OS X from the same source code was probably the biggest hit, plus many other demos illustrating key FireMonkey concepts like parenting, animations, effects, styles, 3D basics and advanced scientific and business visualizations.</p>
<p>In the last part of the event my goal was to showcase the most important features of "Enterprise" version of Delphi, C++Builder and RAD Studio, including connectivity to remote databases with dbExpress and LiveBindings, new Cloud API and DataSnap architecture, including mobile connectors and callbacks.</p>
<p>Great thanks to Embarcadero partner in Romania - <a href="http://www.scop.ro/brand-uri/embarcadero/">SCOP</a> - for helping to make this event happen! Great job Gabriela! I&#8217;m looking forward to the second, third and more events in Romania!</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39581&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39581" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Delphi%20event%20in%20Romania%20for%20the%20first%20time%20ever%21&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F03%2F16%2F39581" id="akst_email_39581" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/03/16/39581/feed</wfw:commentRss>
		</item>
		<item>
		<title>RAD Studio in Action LIVE in Olomouc (CZ) and Breukelen (NL)</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/03/09/39567</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/03/09/39567#comments</comments>
		<pubDate>Fri, 09 Mar 2012 15:04:57 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[InterBase]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39567</guid>
		<description><![CDATA[That was a really good week! RAD Studio XE2 is such an incredible release that I keep travelling and showing Delphi and FireMonkey to developers around Europe.
On Tuesday, I have been to Olomouc in Moravia in Czech Republic. There were close to 120 enthusiastic Delphi programmers gathered. Everybody liked the new FireMonkey architecture and possibilities [...]]]></description>
			<content:encoded><![CDATA[<p>That was a really good week! <a href="http://www.embarcadero.com/products/rad-studio">RAD Studio XE2</a> is such an incredible release that I keep travelling and showing <a href="http://www.embarcadero.com/products/delphi">Delphi</a> and <a href="http://www.embarcadero.com/products/firemonkey">FireMonkey</a> to developers around Europe.</p>
<p>On Tuesday, I have been to <a href="http://en.wikipedia.org/wiki/Olomouc">Olomouc</a> in Moravia in Czech Republic. There were close to 120 enthusiastic Delphi programmers gathered. Everybody liked the new FireMonkey architecture and possibilities for building great looking native apps for Windows, Mac and iOS from the same source code!</p>
<p><a href="/files/2012/03/olomouc1_5505.jpg"><img src="/files/2012/03/olomouc1_5505-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>On Wednesday I had a big pleasure to demonstrate FireMonkey and RAD Cloud to around 130 developers during the RAD Studio XE2 event in Breukelen (just next to Amsterdam) with <a href="http://blogs.embarcadero.com/davidi">David I</a>.</p>
<p><a href="/files/2012/03/davidiimg1_5508.jpg"><img src="/files/2012/03/davidiimg1_5508-298x300.jpg" alt="" width="298" height="300" /></a></p>
<p>The future of Delphi, FireMonkey and native code development seems to be so bright, so the organizers prepared orange sun glasses for all attendees:-)</p>
<p><a href="/files/2012/03/handsup1_5511.jpg"><img src="/files/2012/03/handsup1_5511-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>Next week I&#8217;m flying to Romania to present <a href="http://forms.embarcadero.com/forms/EM12Q1RORADStudioXE2inAction">"RAD Studio XE2 in Action LIVE!"</a> on Thursday, March 15th. I see you there:-)</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39567&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39567" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=RAD%20Studio%20in%20Action%20LIVE%20in%20Olomouc%20%28CZ%29%20and%20Breukelen%20%28NL%29&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F03%2F09%2F39567" id="akst_email_39567" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/03/09/39567/feed</wfw:commentRss>
		</item>
		<item>
		<title>Delphi and FireMonkey in Warsaw this week was great!</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/02/24/39555</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/02/24/39555#comments</comments>
		<pubDate>Fri, 24 Feb 2012 20:20:53 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[DataSnap]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[InterBase]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[SOA]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[RAD Studio]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39555</guid>
		<description><![CDATA[I&#8217;m back from Warsaw where I have been presenting Delphi XE2 and FireMonkey to Polish developers. In fact it was the third event in Warsaw about Delphi and FireMonkey since the release of RAD Studio XE2 back in September 2011!
 
That&#8217;s amazing to watch happy faces of Delphi developers seeing all the great "visually stunning" [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m back from Warsaw where I have been presenting Delphi XE2 and FireMonkey to Polish developers. In fact it was the third event in Warsaw about Delphi and FireMonkey since the release of RAD Studio XE2 back in September 2011!</p>
<p><a href="/files/2012/02/20120222-pl-warsaw-02_5370.jpg"><img src="/files/2012/02/20120222-pl-warsaw-02_5370-300x154.jpg" alt="" width="300" height="154" /></a> <a href="/files/2012/02/20120222-pl-warsaw-01_5373.jpg"><img src="/files/2012/02/20120222-pl-warsaw-01_5373-300x154.jpg" alt="" width="300" height="154" /></a></p>
<p>That&#8217;s amazing to watch happy faces of Delphi developers seeing all the great "visually stunning" FireMonkey HD and 3D demos, including excellent "Gallery 3D" components presented a while ago by <a href="http://blogs.embarcadero.com/jtembarcadero/">JT</a> on <a href="http://youtu.be/MSk4LqFgNFQ">YouTube</a>.</p>
<p>Next week I&#8217;m off for one week of skiing in Austria and then I&#8217;m back on the road again with "RAD Studio XE2 in Action LIVE!" events in Czech Republic on March 6th and on the following day in Holland with <a href="http://blogs.embarcadero.com/davidi/">David I</a>.</p>
<ul>
<li><a href="http://forms.embarcadero.com/forms/EM12Q1CZSKRADStudioXE2inAction">March 6th, Czech Republic, Olomouc, Hotel Flora</a></li>
<li><a href="http://www.barnsten.com/nl/events/details?events_id=26">March 7th, The Netherlands, Breukelen, Hotel Breukelen</a></li>
</ul>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39555&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39555" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Delphi%20and%20FireMonkey%20in%20Warsaw%20this%20week%20was%20great%21&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F02%2F24%2F39555" id="akst_email_39555" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/02/24/39555/feed</wfw:commentRss>
		</item>
		<item>
		<title>FireMonkey Molecule Viewer demo source code</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/02/14/39545</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/02/14/39545#comments</comments>
		<pubDate>Tue, 14 Feb 2012 11:19:15 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[source-code]]></category>

		<category><![CDATA[chemical]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[molecules]]></category>

		<category><![CDATA[visualizations]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39545</guid>
		<description><![CDATA[Today is Valentine&#8217;s Day. For Delphi programmers and supporters this is the Delphi Birthday. Delphi just turned 17. I&#8217;m wondering how the next one is going to look like;-)
I had a pleasure and the privilege to present live during the "Delphi Birthday Webinar" event just a moment ago and promised online to publish the source [...]]]></description>
			<content:encoded><![CDATA[<p>Today is Valentine&#8217;s Day. For Delphi programmers and supporters this is the Delphi Birthday. Delphi just turned 17. I&#8217;m wondering how the next one is going to look like;-)</p>
<p>I had a pleasure and the privilege to present live during the <a href="http://forms.embarcadero.com/forms/AMUSCA1202DelphiBDayCelebration2-14">"Delphi Birthday Webinar"</a> event just a moment ago and promised online to publish the source code of the FireMonkey Molecule Viewer demo. That&#8217;s currently work in progress, so please do not consider this as a finished viewer, but you can use as a starting point for your applications.</p>
<p>You can download the demo from Code Central from here: <a href="http://cc.embarcadero.com/item/28750">http://cc.embarcadero.com/item/28750</a>.</p>
<p><a href="/files/2012/02/fmmoleculesviewerver003_5315.png"><img src="/files/2012/02/fmmoleculesviewerver003_5315-258x299.png" alt="" width="258" height="299" /></a></p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39545&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39545" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=FireMonkey%20Molecule%20Viewer%20demo%20source%20code&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F02%2F14%2F39545" id="akst_email_39545" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/02/14/39545/feed</wfw:commentRss>
		</item>
		<item>
		<title>Delphi DataSnap REST server and jQueryMobile web client tutorial available</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/01/31/39536</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/01/31/39536#comments</comments>
		<pubDate>Tue, 31 Jan 2012 16:10:01 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[DBX]]></category>

		<category><![CDATA[DataSnap]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Labs]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[SOA]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Hello-world]]></category>

		<category><![CDATA[jQuery]]></category>

		<category><![CDATA[jQueryMobile]]></category>

		<category><![CDATA[source-code]]></category>

		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39536</guid>
		<description><![CDATA[I have just put together a little EDN article about using jQueryMobile JavaScript library in your Delphi XE2 "DataSnap REST Application" projects. The idea was to demonstrate how to call server-side functions implemented in native Delphi code from the JavaScript client embedded in a web page using very popular jQueryMobile framework for pages optimized for [...]]]></description>
			<content:encoded><![CDATA[<p>I have just put together a little <a href="http://edn.embarcadero.com/delphi">EDN</a> article about <a href="http://edn.embarcadero.com/article/42016">using jQueryMobile JavaScript library in your Delphi XE2 "DataSnap REST Application" projects</a>. The idea was to demonstrate how to call server-side functions implemented in native Delphi code from the JavaScript client embedded in a web page using very popular jQueryMobile framework for pages optimized for web browsers running in smartphones.</p>
<ul>
<li>The article is available here: <a href="http://edn.embarcadero.com/article/42016">http://edn.embarcadero.com/article/42016</a></li>
<li>&#8230; and the source code here: <a href="http://cc.embarcadero.com/item/28727">http://cc.embarcadero.com/item/28727</a></li>
</ul>
<p>Here are the screenshots from the resulting "Hello World" jQueryMobile-enabled web application:</p>
<p><a href="/files/2012/01/page1ready_5264.png"><img src="/files/2012/01/page1ready_5264-221x300.png" alt="" width="221" height="300" /></a> <a href="/files/2012/01/page2ready_5267.png"><img src="/files/2012/01/page2ready_5267-222x300.png" alt="" width="222" height="300" /></a></p>
<p>This article is really a logical continuation to my <a href="http://www.embarcadero.com/rad-in-action/delphi-labs">DelphiLabs</a> <a href="http://edn.embarcadero.com/article/41324">episode</a> where I have demonstrated how to generate jQueryMobile code on-the-fly in Delphi, but I have not included the possibility to call DataSnap server methods. Now the demo is complete and I can safely dive into the exciting new world of FireMonkey, cross-platform development and going mobile:-)</p>
<p>Enjoy!</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39536&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39536" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=Delphi%20DataSnap%20REST%20server%20and%20jQueryMobile%20web%20client%20tutorial%20available&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F01%2F31%2F39536" id="akst_email_39536" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/01/31/39536/feed</wfw:commentRss>
		</item>
		<item>
		<title>FireMonkey in Lisbon today</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2012/01/24/39527</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2012/01/24/39527#comments</comments>
		<pubDate>Tue, 24 Jan 2012 19:12:38 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[DBX]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Labs]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[InterBase]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39527</guid>
		<description><![CDATA["FireMonkey in Action LIVE" is hitting the road again! I&#8217;m in Lisbon now and it was a very exciting day. I have demonstrated RAD Studio XE2, Delphi and FireMonkey to a fully packed room of developers in Lisbon. The energy levels were very high and it was a pure pleasure to demonstrate some cool new [...]]]></description>
			<content:encoded><![CDATA[<p>"FireMonkey in Action LIVE" is hitting the road again! I&#8217;m in Lisbon now and it was a very exciting day. I have demonstrated RAD Studio XE2, Delphi and FireMonkey to a fully packed room of developers in Lisbon. The energy levels were very high and it was a pure pleasure to demonstrate some cool new FireMonkey 3D demos and also to spend a significant chunk of time showing DataSnap for building multitier applications with Delphi, HTML5 and jQueryMobile.</p>
<p>Great thanks to Sergio Transmontano from Danysoft-Portugal for being such a great host today:-)</p>
<p>Go Delphi! Go FireMonkey! Go InterBase!</p>
<p><a href="/files/2012/01/lisbonjan2012img3_5237.jpg"><img src="/files/2012/01/lisbonjan2012img3_5237-166x300.jpg" alt="" width="166" height="300" /></a></p>
<p><a href="/files/2012/01/lisbonjan2012img2_5240.jpg"><img src="/files/2012/01/lisbonjan2012img2_5240-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p><a href="/files/2012/01/lisbonjan2012img1_5243.jpg"><img src="/files/2012/01/lisbonjan2012img1_5243-300x226.jpg" alt="" width="300" height="226" /></a></p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39527&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39527" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=FireMonkey%20in%20Lisbon%20today&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2012%2F01%2F24%2F39527" id="akst_email_39527" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2012/01/24/39527/feed</wfw:commentRss>
		</item>
		<item>
		<title>"24 Hours of Delphi" today and my "FireMonkey End-to-End Scenarios"</title>
		<link>http://blogs.embarcadero.com/pawelglowacki/2011/12/21/39503</link>
		<comments>http://blogs.embarcadero.com/pawelglowacki/2011/12/21/39503#comments</comments>
		<pubDate>Tue, 20 Dec 2011 23:36:18 +0000</pubDate>
		<dc:creator>Pawel Glowacki</dc:creator>
		
		<category><![CDATA[CORBA]]></category>

		<category><![CDATA[DBX]]></category>

		<category><![CDATA[DataSnap]]></category>

		<category><![CDATA[Delphi]]></category>

		<category><![CDATA[Delphi Labs]]></category>

		<category><![CDATA[Delphi Programming]]></category>

		<category><![CDATA[Delphi XE2]]></category>

		<category><![CDATA[Enterprise]]></category>

		<category><![CDATA[FireMonkey]]></category>

		<category><![CDATA[InterBase]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[RAD Studio XE2]]></category>

		<category><![CDATA[SOA]]></category>

		<category><![CDATA[WCF]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[source-code]]></category>

		<category><![CDATA[24 hours of Delphi]]></category>

		<category><![CDATA[Cloud]]></category>

		<category><![CDATA[CloudAPI]]></category>

		<category><![CDATA[LiveBindings]]></category>

		<category><![CDATA[Multitier]]></category>

		<category><![CDATA[RDBMS]]></category>

		<category><![CDATA[SOAP]]></category>

		<category><![CDATA[TClientDataSet]]></category>

		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://blogs.embarcadero.com/pawelglowacki/?p=39503</guid>
		<description><![CDATA[It is a really long day today:-) I&#8217;m now still listening to "24 Hours of Delphi" online webinar hosted by David I and Anders Ohlsson from Developer Relations, and it is almost midnight now. Very good stuff!
I have promised during my session to upload "FireMonkey End-to-End Scenarios" demos. Both demos and slides are now available [...]]]></description>
			<content:encoded><![CDATA[<p>It is a really long day today:-) I&#8217;m now still listening to <a href="http://blogs.embarcadero.com/davidi/2011/12/16/41441">"24 Hours of Delphi" online webinar</a> hosted by David I and Anders Ohlsson from Developer Relations, and it is almost midnight now. Very good stuff!</p>
<p>I have promised during my session to upload "FireMonkey End-to-End Scenarios" demos. Both demos and slides are now available for download from this link: <a href="http://cc.embarcadero.com/item/28674">http://cc.embarcadero.com/item/28674</a></p>
<p><a href="/files/2011/12/endtoendscenariosinprjmgr_5162.png"><img src="/files/2011/12/endtoendscenariosinprjmgr_5162-222x300.png" alt="" /></a></p>
<p><strong>Overview</strong></p>
<p>With FireMonkey you can create great looking HD and 3D user interfaces, but at the end, in enterprise applications, it is all about data. How data is accessed and how changes to data are persisted. FireMonkey applications can use different strategies to persist data. For example they can use local storage, remote relational database, SOAP web services server or DataSnap server. In all scenarios the user interface and data objects are the same. The data in a FireMonkey application is stored in a "TClientDataSet" component with some test "employee" data. This data is manipulated using "TStringGrid" and "TBindNavigator" visual components, which are connected to the client dataset using LiveBindings "TBindDBGridLink". Different scenarios show different ways of persisting data stored in the application.</p>
<p><strong>Scenario 1: Local Storage</strong></p>
<p>In this scenario we use TClientDataSet methods to persist data in a local file. There are two buttons in the user interface that call "SaveToFile" and "LoadFromFile" methods to update and refresh data.</p>
<p><strong>Scenario 2: RDBMS client</strong></p>
<p>In this scenario the client dataset component is connected to a "TDataSetProvider" component, which in turn is connected to a dbExpress "TSQLTable" component connected a a "TSQLConnection" component. The connection is configured to point to a demo "mastsql" InterBase database and the table component is pointing to "EMPLOYEE" table. By reopening client dataset and reconnecting to a database using checkboxes you can refresh data, and you can update data using a button that calls "TClientDataSet.ApplyUpdates" method that sends data to the underlying data store.</p>
<p><strong>Scenario 3: Cloud storage</strong></p>
<p>In this scenario we add to a FireMonkey application a data module with cloud data storage access logic. In Delphi XE2 the new CloudAPI has been introduced that abstracts away the underlying implementation of cloud storage. Here I&#8217;m using my Amazon Web Services S3 account to store a string value read from the user interface. Instead of storing the actual contents of the TClientDataSet component in the cloud storage, I&#8217;m actually using for testing the contents of the "Edit1" component. In order to use this example you need to make sure that valid credentials are declared in the "TCloudCustomConfig" class. You would also need to manually create a bucket and a file in the S3. The bucket and file names should also be entered into the config information.</p>
<p><strong>Scenario 4: SOAP web services</strong></p>
<p>In this scenario there are two projects. There is a Delphi XE2 SOAP Web Server project that implements two methods that "get" and "set" a string value. This value is persisted in a local file on the server. The client is our FireMonkey client application from the previous scenarios. In order to access SOAP web services, we need to use "WSDL Importer" wizard and generate client access code and use it in the user interface to persist an arbitrary string.</p>
<p><strong>Scenario 5: DataSnap client</strong></p>
<p>This scenario is similar to the previous one. This time the server is a standalone Delphi XE2 DataSnap server that provides two server methods for getting and setting a string value. The server functionality implementation is the same as in the previous example. In order to access DataSnap server functionality from our FireMonkey client application, we need to add client code to it using "DataSnap Client Module" wizard.</p>
<p class="akst_link"><a href="http://blogs.embarcadero.com/pawelglowacki/?p=39503&amp;akst_action=share-this"  title="Post to del.icio.us, etc." id="akst_link_39503" class="akst_share_link" rel="nofollow">Share This</a> | <a href="mailto:?subject=%2224%20Hours%20of%20Delphi%22%20today%20and%20my%20%22FireMonkey%20End-to-End%20Scenarios%22&body=Have you seen this? http%3A%2F%2Fblogs.embarcadero.com%2Fpawelglowacki%2F2011%2F12%2F21%2F39503" id="akst_email_39503" class="akst_share_email" rel="nofollow">Email this page to a friend</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.embarcadero.com/pawelglowacki/2011/12/21/39503/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

