<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3646761668764564414</id><updated>2012-01-03T02:10:43.525+04:00</updated><category term='c#'/><category term='visual studio'/><category term='drawing'/><category term='c++ builder'/><category term='software'/><category term='browser'/><category term='html'/><category term='hobby'/><category term='programming'/><category term='history'/><category term='graphics'/><category term='.net'/><category term='dos'/><category term='special offer'/><category term='google'/><category term='chrome'/><category term='life'/><category term='delphi'/><title type='text'>Greatis</title><subtitle type='html'>inside the software development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6956099116179260444</id><published>2012-01-03T02:10:00.001+04:00</published><updated>2012-01-03T02:10:43.633+04:00</updated><title type='text'>Greatis Software on Google+</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="https://plus.google.com/u/0/b/118107286892450176257/"&gt;https://plus.google.com/u/0/b/118107286892450176257/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6956099116179260444?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6956099116179260444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6956099116179260444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6956099116179260444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6956099116179260444'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2012/01/greatis-software-on-google.html' title='Greatis Software on Google+'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7187990681757871173</id><published>2012-01-02T21:47:00.001+04:00</published><updated>2012-01-02T21:47:16.603+04:00</updated><title type='text'>Greatis Toys</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;New redesigned version of our classical Greatis Toys. Your everyday utilities.&lt;br /&gt;&lt;a href="http://www.greatis.com/utilities/toys/"&gt;http://www.greatis.com/utilities/toys/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7187990681757871173?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7187990681757871173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7187990681757871173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7187990681757871173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7187990681757871173'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2012/01/greatis-toys.html' title='Greatis Toys'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-708600774316383267</id><published>2011-12-20T20:54:00.000+04:00</published><updated>2011-12-20T20:54:44.205+04:00</updated><title type='text'>Merry Xmas and Happy Holidays!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Greatis Software wishes you happy holidays and presents new great utility!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you plan to learn blind typing, the new JustType program is for you. JustType will help you to be familiar with touch typing without any tutors. You'll type, not to learn to type as you do with the keyboard tutors programs.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Don't try to type. Just type.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;JustType is free, so download, install and use it!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;See more detailed information:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.greatis.com/utilities/justtype/"&gt;http://www.greatis.com/utilities/justtype/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Download it right now:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.greatis.com/utilities/justtype/download.html"&gt;http://www.greatis.com/utilities/justtype/download.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-708600774316383267?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/708600774316383267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=708600774316383267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/708600774316383267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/708600774316383267'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/12/merry-xmas-and-happy-holidays.html' title='Merry Xmas and Happy Holidays!'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6274796223908442109</id><published>2011-12-01T20:24:00.001+04:00</published><updated>2011-12-01T20:29:47.656+04:00</updated><title type='text'>Holiday Offer from Greatis Software</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Greatis Software offers favorite products for very special price:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Nostalgia .Net with 20% discount (&lt;a href="http://www.greatis.com/dotnet/nostalgia/order.html"&gt;order&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Print Suite .Net with 60% discount (&lt;a href="http://www.greatis.com/dotnet/printsuite/order.html"&gt;order&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Ultimate Pack with 40% discount (&lt;a href="http://www.greatis.com/delphicb/ultimate/order.html"&gt;order&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Visit &lt;a href="http://www.greatis.com/promo.html"&gt;promo page&lt;/a&gt; for more detailed information.&lt;/div&gt;&lt;div&gt;This offer is valid only through December, so order today!&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Verdana, Helvetica, Geneva, Arial, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6274796223908442109?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6274796223908442109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6274796223908442109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6274796223908442109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6274796223908442109'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/12/holiday-offer-from-greatis-software.html' title='Holiday Offer from Greatis Software'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-8585375763262677734</id><published>2011-10-16T21:17:00.000+04:00</published><updated>2011-10-16T21:17:04.277+04:00</updated><title type='text'>Greatis Software on Facebook</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://www.facebook.com/pages/Greatis-Software/165166000241413"&gt;http://www.facebook.com/pages/Greatis-Software/165166000241413&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-8585375763262677734?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/8585375763262677734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=8585375763262677734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8585375763262677734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8585375763262677734'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/10/greatis-software-on-facebook.html' title='Greatis Software on Facebook'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-85828289486499017</id><published>2011-10-15T01:18:00.001+04:00</published><updated>2011-10-15T01:20:45.039+04:00</updated><title type='text'>Nostalgia .Net</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Easy access to Win32 API from your .Net application.&lt;br /&gt;&lt;a href="http://www.greatis.com/dotnet/nostalgia/"&gt;http://www.greatis.com/dotnet/nostalgia/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-85828289486499017?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/85828289486499017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=85828289486499017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/85828289486499017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/85828289486499017'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/10/nostalgia-net.html' title='Nostalgia .Net'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6364845231913471936</id><published>2011-09-27T22:42:00.003+04:00</published><updated>2011-09-27T22:42:24.810+04:00</updated><title type='text'>Delphi XE2 64-bit</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;All our Delphi software pieces are compatible with Delphi XE2 64-bit compiler now.&lt;/div&gt;&lt;div&gt;&lt;a href="http://greatis.com/delphicb/"&gt;http://greatis.com/delphicb/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6364845231913471936?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6364845231913471936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6364845231913471936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6364845231913471936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6364845231913471936'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/09/delphi-xe2-64-bit.html' title='Delphi XE2 64-bit'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7456290728482079764</id><published>2011-09-07T20:43:00.002+04:00</published><updated>2011-09-07T20:44:27.653+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Delphi XE2 Compatibility</title><content type='html'>&lt;div&gt;All our Delphi software pieces are compatible with Delphi XE2 now.&lt;/div&gt;&lt;div&gt;&lt;a href="http://greatis.com/delphicb/"&gt;http://greatis.com/delphicb/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7456290728482079764?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7456290728482079764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7456290728482079764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7456290728482079764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7456290728482079764'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/09/all-our-delphi-software-pieces-are.html' title='Delphi XE2 Compatibility'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-4273764437959647022</id><published>2011-04-20T22:49:00.003+04:00</published><updated>2011-04-20T22:51:25.430+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='drawing'/><title type='text'>iGrid</title><content type='html'>Greatis Software proudly presents iGrid - unique program that can plot grid for drawing right over your desktop, so you can use it everywhere, with any drawing application and without any special plugins for different graphics applications. 30-day free trial and only 9 euro for personal license.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.greatis.com/promo.html"&gt;http://www.greatis.com/promo.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-4273764437959647022?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/4273764437959647022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=4273764437959647022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4273764437959647022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4273764437959647022'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/04/igrid.html' title='iGrid'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-5840429184204685325</id><published>2011-01-20T21:23:00.001+03:00</published><updated>2011-01-20T21:24:20.854+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Gradient Controls .NET</title><content type='html'>&lt;div&gt;We just released new software for .Net developers - Gradient Controls .Net.&lt;/div&gt;&lt;div&gt;This component suite contains five controls with gradient background feature:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;GradientLabel &lt;/div&gt;&lt;div&gt;GradientGroupBox &lt;/div&gt;&lt;div&gt;GradientPanel &lt;/div&gt;&lt;div&gt;GradientFlowLayoutPanel &lt;/div&gt;&lt;div&gt;GradientTableLayoutPanel &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gradient Controls .Net is free for non-commercial use.&lt;/div&gt;&lt;div&gt;See more detailed information:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.greatis.com/dotnet/gradient/"&gt;www.greatis.com/dotnet/gradient/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-5840429184204685325?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/5840429184204685325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=5840429184204685325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5840429184204685325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5840429184204685325'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2011/01/gradient-controls-net.html' title='Gradient Controls .NET'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6469599913575464141</id><published>2010-10-20T00:36:00.002+04:00</published><updated>2010-10-20T00:36:53.424+04:00</updated><title type='text'>Greatis Print Suite is released!</title><content type='html'>&lt;div&gt;It's free for non-commercial use, do just download and try it!&lt;/div&gt;&lt;div&gt;&lt;a href="http://greatis.com/dotnet/printsuite/"&gt;http://greatis.com/dotnet/printsuite/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6469599913575464141?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6469599913575464141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6469599913575464141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6469599913575464141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6469599913575464141'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2010/10/greatis-print-suite-is-released.html' title='Greatis Print Suite is released!'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7571063772630111588</id><published>2010-10-01T10:40:00.003+04:00</published><updated>2010-10-01T10:42:59.147+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Print Suite .Net is 99% released!</title><content type='html'>See more details about Print Suite .Net and about the future prices:&lt;br /&gt;http://greatis.com/dotnet/printsuite/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7571063772630111588?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7571063772630111588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7571063772630111588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7571063772630111588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7571063772630111588'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2010/10/print-suite-net-is-99-released.html' title='Print Suite .Net is 99% released!'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6067488451904627204</id><published>2010-08-01T12:41:00.003+04:00</published><updated>2010-08-01T12:53:59.937+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Print Suite .Net is 75% released!</title><content type='html'>&lt;div&gt;Texts, images, grids... Over 20 public classes... 75% implemented...&lt;/div&gt;&lt;div&gt;See more detailed information at:&lt;/div&gt;&lt;div&gt;&lt;a href="http://greatis.com/dotnet/printsuite/news.html" target=_blank &gt;http://greatis.com/dotnet/printsuite/news.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6067488451904627204?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6067488451904627204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6067488451904627204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6067488451904627204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6067488451904627204'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2010/08/texts-images-grids.html' title='Print Suite .Net is 75% released!'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-1354954615040957450</id><published>2010-05-06T01:13:00.000+04:00</published><updated>2010-05-06T01:14:38.268+04:00</updated><title type='text'>Print Suite .Net</title><content type='html'>Print Suite .Net started...&lt;br /&gt;What do you think about it?&lt;br /&gt;&lt;a href="http://greatis.com/dotnet/printsuite/"&gt;http://greatis.com/dotnet/printsuite/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-1354954615040957450?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/1354954615040957450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=1354954615040957450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1354954615040957450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1354954615040957450'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2010/05/print-suite-net.html' title='Print Suite .Net'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-4615066449263179565</id><published>2009-11-30T16:02:00.001+03:00</published><updated>2009-11-30T16:03:55.690+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='special offer'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Price is frozen</title><content type='html'>Price for Form Designer .Net is frozen until the end of January. Order now and save 33%.&lt;br /&gt;&lt;a href="http://www.greatis.com/dotnet/formdes/order.html" target=_blank&gt;http://www.greatis.com/dotnet/formdes/order.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-4615066449263179565?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/4615066449263179565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=4615066449263179565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4615066449263179565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4615066449263179565'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2009/11/price-is-frozen.html' title='Price is frozen'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-1405277912444503795</id><published>2009-11-30T16:00:00.003+03:00</published><updated>2009-11-30T16:04:16.251+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='special offer'/><category scheme='http://www.blogger.com/atom/ns#' term='c++ builder'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>For Delphi Fans</title><content type='html'>You can upgrade any our Delphi-related product to Ultimate Pack for only 100 euro.&lt;br /&gt;&lt;a href="http://www.greatis.com/delphicb/ultimate/gift4fans.html" target=_blank&gt;http://www.greatis.com/delphicb/ultimate/gift4fans.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-1405277912444503795?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/1405277912444503795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=1405277912444503795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1405277912444503795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1405277912444503795'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2009/11/for-delphi-fans.html' title='For Delphi Fans'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6058328198398383608</id><published>2009-10-07T01:12:00.002+04:00</published><updated>2009-10-07T01:15:18.462+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++ builder'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Delphi 2010</title><content type='html'>Now all our Delphi-oriented products are compatible with Delphi 2010.&lt;br /&gt;&lt;a href="http://greatis.com/delphicb/" target=_blank&gt;greatis.com/delphicb/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6058328198398383608?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6058328198398383608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6058328198398383608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6058328198398383608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6058328198398383608'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2009/10/delphi-2010.html' title='Delphi 2010'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7823530529081547408</id><published>2009-05-04T20:14:00.006+04:00</published><updated>2009-07-04T20:46:53.915+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hobby'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>cdtrrracks.com</title><content type='html'>New our hobby project was published in May 1st - &lt;a href="http://cdtrrracks.com/" target=_blank&gt;cdtrrracks.com&lt;/a&gt;. This huge website with 40 million pages contains complete information about 2.6 million of CD albums. I never done such websites before, so it was great and useful experience. All we need is just "small" SQL database with 200 million records. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7823530529081547408?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7823530529081547408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7823530529081547408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7823530529081547408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7823530529081547408'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2009/05/cdtrrrackscom.html' title='cdtrrracks.com'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7811754443036354351</id><published>2009-01-20T23:07:00.002+03:00</published><updated>2009-01-20T23:09:16.295+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Form Designer .NET 1.60/2.60</title><content type='html'>This new version works correctly with all the non-visual components, so you can switch between work mode, design mode, work mode, design mode, work mode, etc. without any workarounds. Free trial is available.&lt;br /&gt;See more at &lt;a href="http://greatis.com/dotnet/formdes/" target=_blank&gt;official home page...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7811754443036354351?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7811754443036354351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7811754443036354351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7811754443036354351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7811754443036354351'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2009/01/form-designer-net-160260.html' title='Form Designer .NET 1.60/2.60'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-2696149094499664745</id><published>2008-12-09T23:02:00.005+03:00</published><updated>2008-12-09T23:06:48.166+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Greatis Delphi Pages</title><content type='html'>Just uploaded new version of &lt;a href="http://greatis.com/delphicb/tips/lib/tips.html" target=_blank&gt;Delphi Pages&lt;/a&gt;. Each file was reduced to 10 kilobytes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-2696149094499664745?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/2696149094499664745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=2696149094499664745' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/2696149094499664745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/2696149094499664745'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/12/greatis-delphi-pages.html' title='Greatis Delphi Pages'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-4414378481773309034</id><published>2008-12-01T23:05:00.003+03:00</published><updated>2008-12-01T23:09:21.219+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.NET Future</title><content type='html'>Looks like that .NET market grows faster than Delphi market dies... I think Greatis Software must concentrate on .NET components and services... What do you think about Print Suite for .NET and XML+DLL to CHM conversion online service? ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-4414378481773309034?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/4414378481773309034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=4414378481773309034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4414378481773309034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/4414378481773309034'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/12/net-future.html' title='.NET Future'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3030647697617836197</id><published>2008-12-01T19:43:00.003+03:00</published><updated>2008-12-01T19:54:57.326+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Ultimate Pack for 150 euro ($200)</title><content type='html'>Only in December anybody can order all our Delphi products in Ultimate Pack for only 150 euro (~$200). Price of all included products is 600 euro, so the discount is 75%.&lt;br /&gt;Read more at &lt;a href="http://www.greatis.com/delphicb/ultimate/"&gt;www.greatis.com/delphicb/ultimate/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3030647697617836197?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3030647697617836197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3030647697617836197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3030647697617836197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3030647697617836197'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/12/ultimate-pack-for-150-euro-200.html' title='Ultimate Pack for 150 euro ($200)'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-852274896154595163</id><published>2008-11-28T01:02:00.003+03:00</published><updated>2008-11-28T01:47:25.163+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>All for Delphi 2009</title><content type='html'>Just published the new Delphi 2009 versions of all products. WinDowse has new version without global mouse hook and without any external DLLs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-852274896154595163?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/852274896154595163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=852274896154595163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/852274896154595163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/852274896154595163'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/11/all-for-delphi-2009.html' title='All for Delphi 2009'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-8155507665284761256</id><published>2008-11-12T16:59:00.004+03:00</published><updated>2008-11-28T02:23:14.913+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++ builder'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>C++ Builder 2009</title><content type='html'>C++ Builder 2009 is terrible. I have multiple bugs in all of my packages... Unresolved external, ToolsAPI problems, etc... If I resolve one of these problems in the package, I have another one and so on. I have many questions about these problems in the web but I have not found any useful answers... I'm going to stop supporting C++ Builder and to concentrate on Delphi 2009, which works without any problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-8155507665284761256?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/8155507665284761256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=8155507665284761256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8155507665284761256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8155507665284761256'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/11/c-builder-2009.html' title='C++ Builder 2009'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-5964551816297278675</id><published>2008-10-21T01:37:00.005+04:00</published><updated>2008-10-21T01:46:55.279+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>WinDowse 5.2</title><content type='html'>Looks like we'll have two versions of &lt;a href="http://www.greatis.com/delphicb/windowse/" target=_blank&gt;WinDowse&lt;/a&gt; - old 5.1, compatible with Delphi 3-7, and new 5.2, compatible with Delphi 7-2009. The only problems with earlier versions is too large DFM file, that cannot be loaded correctly. The new 5.2 version is based on WinEvent hook instead of mouse hook (mouse hook has strange problems under Delphi 200*) and after compilation under Delphi 2009 it can support Unicode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-5964551816297278675?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/5964551816297278675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=5964551816297278675' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5964551816297278675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5964551816297278675'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/10/windowse-52.html' title='WinDowse 5.2'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-1040131401562083049</id><published>2008-09-27T14:40:00.007+04:00</published><updated>2008-09-27T15:08:03.174+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Form Designer .NET 3.0 - breaking news</title><content type='html'>Forget MSDN, forget Microsoft's examples. If you'll follow Microsoft's documentation, your runtime designer will never work. We just found the correct way and now the BindingNavigator can be designer at runtime. I think, version 3.0 will be available soon as internal alfa for all our clients.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-1040131401562083049?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/1040131401562083049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=1040131401562083049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1040131401562083049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/1040131401562083049'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/form-designer-net-30-breaking-news.html' title='Form Designer .NET 3.0 - breaking news'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-6430725504188224393</id><published>2008-09-26T13:24:00.005+04:00</published><updated>2008-09-26T15:37:42.073+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Form Designer .NET version 3.0</title><content type='html'>Working on it right now... Looks like we can make it more native and save on-the-fly edit mode at the same time. Data binding will work fine in both of these modes at last, I hope...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-6430725504188224393?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/6430725504188224393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=6430725504188224393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6430725504188224393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/6430725504188224393'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/form-designer-net-version-30.html' title='Form Designer .NET version 3.0'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3328804301312288093</id><published>2008-09-17T18:43:00.006+04:00</published><updated>2009-01-27T00:46:09.386+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Recursive folder scanning</title><content type='html'>Scanning folders with subfolders is common task... In fact, all we need is to scan subfolders within our root folder and scan subfolders of each found subfolder and scan subfolders of each found subfolder and... etc. It is called recursion. It's very simple. The following example fills the list box with the full subfolder lists (even with level-depended indents):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Shift: TShiftState; X, Y: Integer);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;  procedure ScanFolder(Folder: string; Level: Integer);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  var&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    SR: TSearchRec;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Found: Integer;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    function GetIndent: string;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    var&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      i: Integer;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      Result:='';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      for i:=1 to Level do Result:=Result+'    ';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Found:=FindFirst(Folder+'\*.*',faAnyFile,SR);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    while Found=0 do&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      if (SR.Name&lt;&gt;'.') and (SR.Name&lt;&gt;'..') and (SR.Attr and faDirectory &lt;&gt; 0) then&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ListBox1.Items.Add(GetIndent+SR.Name);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ScanFolder(Folder+'\'+SR.Name,Succ(Level));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      end;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      Found:=FindNext(SR);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    FindClose(SR);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  ListBox1.Items.BeginUpdate;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  ScanFolder('c:\windows\',0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  ListBox1.Items.EndUpdate;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that we have only one ScanFolder procedure which is called recursively for each found subfolder.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3328804301312288093?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3328804301312288093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3328804301312288093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3328804301312288093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3328804301312288093'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/recursive-folder-scanning.html' title='Recursive folder scanning'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-5002835798384376175</id><published>2008-09-17T18:27:00.004+04:00</published><updated>2008-09-17T19:40:29.897+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>RTF printing</title><content type='html'>How to print RTF file? Open it in WordPad or in Microsoft Word and click the Print button. Yes. Well, and from your applications? Hm... Very simple:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ShellExecute(Handle,'print','somefile.rtf',nil,nil,SW_SHOWMAXIMIZED);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, Windows will open related application, linked with RTF-files, but will close it back in a second, and you'll have your RTF document in the printer queue.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-5002835798384376175?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/5002835798384376175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=5002835798384376175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5002835798384376175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5002835798384376175'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/rft-printing.html' title='RTF printing'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-2812961392078899212</id><published>2008-09-17T18:14:00.004+04:00</published><updated>2008-09-17T18:37:36.361+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Automatical class registration</title><content type='html'>As you know, in Delphi you can create the class instance by the class name (streaming system uses it internally for creating components by the name when loading from streams), so you can write something like this:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;AClass:=GetClass('TLabel');&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;L:=TComponentClass(AClass).Create(Self) as TLabel;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This means, that you can store class names in your application or database and create any components using string representations of class names. It's convenient. But there is a problem. VCL requires preregistering all the classes to link class name and class instance using RegisterClass or RegisterClasses procedures. It's not convenient, because you have to add all the used classes manually. Fortunately, there is a trick. You can just enumerate all the existing components on your form (or even in your application with enumerating the Application.Forms) and register all the classes with the following simple code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;procedure TForm1.FormCreate(Sender: TObject);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;var&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  i: Integer;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  AClass: TPersistentClass;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  L: TLabel;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  for i:=0 to Pred(ComponentCount) do&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    if Components[i] is TPersistent then&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      AClass:=TPersistentClass(Components[i].ClassType);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;      if Assigned(AClass) then RegisterClass(AClass);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-2812961392078899212?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/2812961392078899212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=2812961392078899212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/2812961392078899212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/2812961392078899212'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/as-you-know-in-delphi-you-can-create.html' title='Automatical class registration'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-381591654206097453</id><published>2008-09-17T17:38:00.004+04:00</published><updated>2008-09-17T17:44:38.312+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Drag window by client area</title><content type='html'>Do not think that you need to process mouse events manually to allow drag the window by the client area. All you need is to process WM_NCNITTEST message in your window:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;type&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  TForm1 = class(TForm)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  private&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    { Private declarations }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  public&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    { Public declarations }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    procedure WMNCHITTEST(var Msg: TMessage); message WM_NCHITTEST;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;...&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;procedure TForm1.WMNCHITTEST(var Msg: TMessage);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  with Msg do&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Result:=DefWindowProc(Handle,Msg,wParam,lParam);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    if Result=HTCLIENT then Result:=HTCAPTION&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see, we call the DefWindowProc to allow Windows return default value, then analyse result and return HTCAPTION instead of HTCLIENT. There are many other result constants, so you can totally change default window behaviour by assigning any areas of window as maximize or minimize boxes, resize borders, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-381591654206097453?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/381591654206097453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=381591654206097453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/381591654206097453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/381591654206097453'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/drag-window-by-client-area.html' title='Drag window by client area'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-8735968271032547711</id><published>2008-09-17T16:43:00.004+04:00</published><updated>2008-09-17T17:08:39.757+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>List of all top-level windows</title><content type='html'>WinAPI has many so-called "enum" functions which can enumerate many objects in system - services, printers, code pages, etc. Most useful function is EnumWindows which enumerates top-level windows. With this function you can get full list of windows by several lines of code. The following example fills list box by the enumerated windows and put the number of found windows into form caption:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;function EW(Wnd: HWND; Items: TStrings): Bool; stdcall;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;var&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  C,W: array[0..1024] of Char;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Result:=True;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  GetClassName(Wnd,C,1024);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  GetWindowText(Wnd,W,1024);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Items.Add(C+' * '+W);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Shift: TShiftState; X, Y: Integer);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  ListBox1.Items.Clear;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  EnumWindows(@EW,Integer(ListBox1.Items));&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Caption:=IntToStr(ListBox1.Items.Count)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that each "enum" function receives so-called "callback" function as one of parameters. This function is called for each enumerated object.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-8735968271032547711?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/8735968271032547711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=8735968271032547711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8735968271032547711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/8735968271032547711'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/list-of-all-top-level-windows.html' title='List of all top-level windows'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-82328658173369893</id><published>2008-09-17T16:10:00.008+04:00</published><updated>2008-09-17T16:29:12.412+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Drawing on the entire form</title><content type='html'>By default, the form canvas allows drawing on the client area only, and cannot be used for drawing on the window's borders, title bar, etc. Fortunately, there is some trick:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  with TCanvas.Create do&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  try&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Handle:=GetDCEx(Self.Handle,0,DCX_WINDOW or DCX_CACHE);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    MoveTo(0,0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    LineTo(Width,Height);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  finally&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Free;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This code creates DC for entrire window (within window's bounds). This DC can be assigned as TCanvas's Handle to simple drawing over the window. This code draws diagonal line over the window, including title bar and borders. By the way, if you'll pass GetDesktopWindow instead of Self.Handle, you'll have desktop canvas that will allow drwaing over the desktop and over all the opened windows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-82328658173369893?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/82328658173369893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=82328658173369893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/82328658173369893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/82328658173369893'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/drawing-on-entire-form.html' title='Drawing on the entire form'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3489630181467000721</id><published>2008-09-17T15:35:00.008+04:00</published><updated>2008-09-17T15:42:01.277+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Multiline button caption</title><content type='html'>Want to have button with long multiline caption? It's very simple, because base WinAPI BUTTON class has this feature, and we can turn it on even without class recreating:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;begin&lt;br /&gt;  with Button1 do&lt;br /&gt;  begin&lt;br /&gt;    Caption:='Let''s assign very long caption for this button';&lt;br /&gt;    SetWindowLong(Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE) or BS_MULTILINE);&lt;br /&gt;    Invalidate;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3489630181467000721?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3489630181467000721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3489630181467000721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3489630181467000721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3489630181467000721'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/multiline-button-caption.html' title='Multiline button caption'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-5828721257719584414</id><published>2008-09-17T14:00:00.013+04:00</published><updated>2010-10-18T14:44:16.197+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Automated form font</title><content type='html'>On my PC I have special desktop setting with standatd "Small font", but with large Tahoma, 10pt, assigned manually to all interface elements - menus, windows, icons, etc. I noticed, that some applications, like Visual Studio and so on, can detect these settings and can change the dialogs' font and dialogs' size according to used font. It's very good and user-friendly behaviour, but applications, created with Delphi and Visual Studio cannot do it. It's wrong, and I had to change it...&lt;br /&gt;Everything was simple - those correct and user-friendly dialogs just get the icon title font from desktop, use it as a main font and scale the form size. Now, when we know all we need, we can create the Delphi code:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;procedure TForm1.FormShow(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;  LF: TLogFont;&lt;br /&gt;begin&lt;br /&gt;&lt;div&gt;  SystemParametersInfo(SPI_GETICONTITLELOGFONT,SizeOf(LF),@LF,0);&lt;/div&gt;&lt;div&gt;  with LF,Font do&lt;/div&gt;&lt;div&gt;  begin&lt;/div&gt;&lt;div&gt;    ScaleBy(Abs(lfHeight),Abs(Height));&lt;/div&gt;&lt;div&gt;    Handle:=CreateFontIndirect(LF);&lt;/div&gt;&lt;div&gt;  end;&lt;br /&gt;&lt;/div&gt;end;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The C# code will not be so simple, but it is possible under .NET too:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;  [DllImport("user32.dll", SetLastError = true)]&lt;br /&gt;[return: MarshalAs(UnmanagedType.Bool)]&lt;br /&gt;static extern bool SystemParametersInfo(uint uiAction, uint uiParam, IntPtr pvParam, uint fWinIni);&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;public class LOGFONT&lt;br /&gt;{&lt;br /&gt;  public const int LF_FACESIZE = 32;&lt;br /&gt;  public int lfHeight;&lt;br /&gt;  public int lfWidth;&lt;br /&gt;  public int lfEscapement;&lt;br /&gt;  public int lfOrientation;&lt;br /&gt;  public int lfWeight;&lt;br /&gt;  public byte lfItalic;&lt;br /&gt;  public byte lfUnderline;&lt;br /&gt;  public byte lfStrikeOut;&lt;br /&gt;  public byte lfCharSet;&lt;br /&gt;  public byte lfOutPrecision;&lt;br /&gt;  public byte lfClipPrecision;&lt;br /&gt;  public byte lfQuality;&lt;br /&gt;  public byte lfPitchAndFamily;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void Form1_Shown(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;  LOGFONT lf = new LOGFONT();&lt;br /&gt;  IntPtr p;&lt;br /&gt;  p = Marshal.AllocHGlobal(Marshal.SizeOf(lf));&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;  &lt;span class="Apple-style-span" style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;span class="Apple-style-span" style=" ;font-family:'courier new';"&gt;Marshal.StructureToPtr(lf, p, false);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;  &lt;span class="Apple-style-span" style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span" style=" ;font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;SystemParametersInfo(31, 60, p, 0);&lt;br /&gt;  &lt;span class="Apple-style-span" style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span" style=" ;font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;Marshal.PtrToStructure(p, lf);&lt;br /&gt;  &lt;span class="Apple-style-span" style=" ;font-family:Georgia;"&gt;&lt;span class="Apple-style-span" style=" ;font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;Font = Font.FromLogFont(lf);&lt;br /&gt;  }&lt;br /&gt;  finally { Marshal.FreeHGlobal(p); }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;Upd. I'm stupid. There is another simple way for .Net:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-family: Georgia, serif; "&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;Form1.Font = SystemFonts.MessageBoxFont;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-5828721257719584414?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/5828721257719584414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=5828721257719584414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5828721257719584414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/5828721257719584414'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/automated-form-font.html' title='Automated form font'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-7807586142401775459</id><published>2008-09-17T13:25:00.008+04:00</published><updated>2008-09-17T14:13:27.269+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>TForm's alpha blend</title><content type='html'>Since Delphi 6 or 7, TForm class has alpha blending which allow to get semi-transparent forms. It works good for top-level forms, but how it will work for embedded forms? I have created small application with two forms. Form1 as main application form and Form2 as embedded by simple code:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;  procedure TForm1.FormShow(Sender: TObject);&lt;br /&gt;  begin&lt;br /&gt;    Form2.Left:=10;&lt;br /&gt;    Form2.Top:=10;&lt;br /&gt;    Form2.Parent:=Self;&lt;br /&gt;    Form2.Show;&lt;br /&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Both of these forms had AlphaBlend = True and AlphaBlendValue = 100... Compile... Run... And we see that top-level form is semi-transparent (with embedded form), but embedded form has not additional transparency, so...&lt;br /&gt;1) alpha blending is not combined&lt;br /&gt;2) alpha blending works for top-level forms and does not work for embedded forms&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-7807586142401775459?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/7807586142401775459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=7807586142401775459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7807586142401775459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/7807586142401775459'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/tforms-alpha-blend.html' title='TForm&apos;s alpha blend'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3571804998746554806</id><published>2008-09-17T13:21:00.005+04:00</published><updated>2008-09-17T14:27:25.681+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>@Exp folder</title><content type='html'>I have the folder with "@Exp" name on my hard drive. I have it several years. This folder is intended for saving any test projects. Just scanned this folder and have found about 1000 projects, and some of these project has some useful information and ideas. I'm starting to publish results of some tests and hope they will be useful for other software developers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3571804998746554806?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3571804998746554806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3571804998746554806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3571804998746554806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3571804998746554806'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/exp-folder.html' title='@Exp folder'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-785681817387783137</id><published>2008-09-11T16:43:00.008+04:00</published><updated>2008-09-17T14:13:08.246+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Google Chrome</title><content type='html'>I use Chrome since first day, and I like it. Just noticed that rounded blocks on &lt;a href="http://greatis.com/" target="_blank"&gt;greatis.com&lt;/a&gt; are displayed incorrectly. Adding width=100% to the inner table tag parameters fixed the problem. It's strange, I never seen this problem before, but this additional parameter is very logical. Looks like Chrome is the most correct browser, but it is the most unhuman too. Now I have to fix tens block templates on our website... :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-785681817387783137?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/785681817387783137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=785681817387783137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/785681817387783137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/785681817387783137'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/google-chrome.html' title='Google Chrome'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3719594200816488925</id><published>2008-09-11T15:48:00.010+04:00</published><updated>2008-09-17T14:12:59.210+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dos'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>Do you remember Turbo Vision? ;)</title><content type='html'>Looking for a piece of code in the archives of my old programs and stumbled upon on the application, which I have long managed to forget - visual editor for Turbo Vision. Once I wrote a lot of different programs using Borland Pascal 6.0 and Turbo Vision (window library for DOS applications, if someone was born after the era of DOS), and one day I tired to build windows in the application code. Within a month I wrote a full-functional resource generator for Turbo Vision (I called him Regent from REsource GENeraTor). With this tool it was enough to "draw" window with all the buttons and other controls, and just load it from the application code as an external resource. This tool helped me to build programs very fast. I hope to translate its interface into English and put it into free access soon. &lt;a href="http://greatis.com/just4fun/" target="_blank"&gt;just4fun&lt;/a&gt;. :)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3719594200816488925?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3719594200816488925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3719594200816488925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3719594200816488925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3719594200816488925'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/looking-for-piece-of-code-in-archives.html' title='Do you remember Turbo Vision? ;)'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3646761668764564414.post-3521763853929582907</id><published>2008-09-11T14:06:00.007+04:00</published><updated>2008-09-17T14:12:38.499+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Let's start...</title><content type='html'>Just started this blog as a diary of inside development job... I'm a software developer of &lt;a href="http://greatis.com/" target="_blank"&gt;Greatis Software&lt;/a&gt; company, and I feel that I should communicate with normal people more closely. I think blogger.com is good place to do it... :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3646761668764564414-3521763853929582907?l=greatis.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greatis.blogspot.com/feeds/3521763853929582907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3646761668764564414&amp;postID=3521763853929582907' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3521763853929582907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3646761668764564414/posts/default/3521763853929582907'/><link rel='alternate' type='text/html' href='http://greatis.blogspot.com/2008/09/just-started-this-blog-as-diary-of.html' title='Let&apos;s start...'/><author><name>Dmitry</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
