<?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-8322476815534112114</id><updated>2011-07-08T20:21:55.842+07:00</updated><category term='Tip n Tricks'/><category term='Component'/><category term='Database'/><category term='Linux'/><category term='Delphi'/><title type='text'>linux,cisco,delphi</title><subtitle type='html'>All of Linux Configuration, Cisco Learning And Tips-Trick in delphi Programming</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-5004367497987240013</id><published>2010-04-27T14:33:00.000+07:00</published><updated>2010-04-27T14:35:32.777+07:00</updated><title type='text'>vehicle insurance</title><content type='html'>Life insurance and vehicle insurance is one way to manage risk. Therefore, prior to deciding to take life insurance adira insurance, it helps you to understand the family needs and tailor-making &lt;a href="http://www.carinsurancerates.me/"&gt;carinsurancerates&lt;/a&gt; with an offer from the insurance provider.&lt;br /&gt;&lt;br /&gt;People need carinsurancerates with an insurance program &lt;a href="http://www.carinsurancerates.me/"&gt;carinsurancerates&lt;/a&gt; because this is one way to manage risk. Risk can not be denied, but has some method of risk management to anticipate them. The objective of risk management is to reduce the impact of financial losses that may occur.&lt;br /&gt;&lt;br /&gt;Unfortunately, some people buy insurance policies for the program &lt;a href="http://www.carinsurancerates.me/"&gt;carinsurancerates &lt;/a&gt;the sum assured under the requirement (underinsured). This is because they are not able to determine exactly how much protection is needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-5004367497987240013?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/5004367497987240013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=5004367497987240013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5004367497987240013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5004367497987240013'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2010/04/vehicle-insurance.html' title='vehicle insurance'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-6860114138711905265</id><published>2010-04-24T13:51:00.002+07:00</published><updated>2010-04-28T13:56:28.441+07:00</updated><title type='text'>Life Insurance At Aussie.Com</title><content type='html'>Now you can have not only &lt;a href="http://www.aussie.com.au/insurance/life-insurance.htm"&gt;Life Insurance &lt;/a&gt;but also funeral  insurance for you and for your family too. Without having intention to wish you dying soon, or so ever, this program is trying to help you to prepare everything that will be happened in future. The death is something that every body would go through any way, soon or later and we never know when is our turn would come. Either tomorrow, next year or perhaps until we are 100 years old. But that must be happened anyway. So you better prepare this life insurance and funeral insurance from now.  &lt;br /&gt;&lt;br /&gt;The reason why you need this life insurance and &lt;a href="http://www.aussie.com.au/insurance/funeral-insurance.htm"&gt;Funeral Insurance &lt;/a&gt;so that you will not burden your family with funeral process, administration fee, tax and so on when you die. The insurance would take good care everything needed for this funeral process. The same thing if this happened to the member of your family, if they also join this funeral insurance, you will not have problem to go through the process since everything would be taken care by the insurance.  &lt;br /&gt;&lt;br /&gt;Get a &lt;a href="http://www.aussie.com.au/insurance/life-insurance.htm"&gt;Life Insurance Quotes &lt;/a&gt;from this site for your reference now. get the best offer they give and you better not to delay for having this &lt;a href="http://www.aussie.com.au/insurance/life-insurance.htm"&gt;life insurance &lt;/a&gt;and &lt;a href="http://www.aussie.com.au/insurance/funeral-insurance.htm"&gt;funeral insurance&lt;/a&gt;, since we never know what will happened in the next minute&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-6860114138711905265?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/6860114138711905265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=6860114138711905265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6860114138711905265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6860114138711905265'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2010/04/life-insurance-including-funeral.html' title='Life Insurance At Aussie.Com'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-8202328698833099643</id><published>2010-04-16T13:43:00.002+07:00</published><updated>2010-04-16T13:46:37.876+07:00</updated><title type='text'>Life Insurance</title><content type='html'>Insurance was created to save those who will most likely be dropped when the financial condition of a breadwinner, or a key person in the family or the backbone to get a risk (illness, total permanent disability or death). &lt;br /&gt;&lt;br /&gt;A family where the father usually gives USD. 5 jt / month to his wife to run each month, which is used for everyday purposes, the children's school finance and car payment. Do not forget to also set aside for savings amounting to (say) 1 jt / month that can be enjoyed during the age pension arrived later (age 65 years). But alas the age of 45 the father (breadwinner) is called of God. Instead of going to enjoy retirement age, with comfortable, the wife just lost USD. 5 jt / month and will inevitably have to take the money savings as the breadwinner. please contact us for news about &lt;a href="http://www.aussie.com.au/insurance/life-insurance.htm"&gt;life insurances&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let us count. Each month provide Rp 5 jt father or the father is usually a year living 60 60 jt jt this time has been lost. The wife / family had lost the opportunity to earn 1.2 billion (up to age 65 years husband). &lt;br /&gt;&lt;br /&gt;Different case when the wife wanted to set aside a small portion of husband's income to buy insurance. The aim is to protect the husband's income or to provide protection for the husband's income potential. So the main purpose of insurance is to protect the revenue account. so you must take &lt;a href="http://www.aussie.com.au/insurance/life-insurance.htm"&gt;life insurance quote&lt;/a&gt;&lt;br /&gt;and &lt;a href="- http://www.aussie.com.au/insurance/funeral-insurance.htm "&gt;Funeral Insurance&lt;/a&gt;&lt;br /&gt;If only the family has a policy valued at 1.2 Billion Sum only, then the family is safe from the stress of financial problems, at least there is a solution to financial problems After the death of a breadwinner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-8202328698833099643?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/8202328698833099643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=8202328698833099643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8202328698833099643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8202328698833099643'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2010/04/life-insurance.html' title='Life Insurance'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-3884907600878747077</id><published>2010-03-01T08:16:00.001+07:00</published><updated>2010-03-02T08:02:42.254+07:00</updated><title type='text'>Direct- TV- Package</title><content type='html'>Why pay more for TV? BLOG television channel has the best selection at the best price in the market. There is something for everyone on television BLOG! Programming for all ages, lifestyles, hobbie and interest. BLOG television and HD DVR has the latest technology, including a FREE HD DVR, DVR or HD receiver upgrade.&lt;br /&gt;Check the list of packages below and contact us BLOG television to find the best TV package options for your home.&lt;br /&gt;&lt;br /&gt;Blog Televison has several &lt;a href="http://www.blogtelevision.net/programming-packages.html"&gt;Direct TV Packages&lt;/a&gt;, called the &lt;a href="http://www.blogtelevision.net/programming-packages.html"&gt;Direct TTV package&lt;/a&gt;, among other&lt;br /&gt;1. Package priemer&lt;br /&gt;2. Plus HD DVR Package&lt;br /&gt;3. Plus DVR Package&lt;br /&gt;4. Choice Extra Package&lt;br /&gt;5. Package Choice&lt;br /&gt;6. Package family&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To more clearly biased contact us at &lt;a href="http://www.blogtelevision.net/programming-packages.html"&gt;direct TV Package&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-3884907600878747077?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/3884907600878747077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=3884907600878747077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3884907600878747077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3884907600878747077'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2010/03/direct-tv-package.html' title='Direct- TV- Package'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-8105432240691395060</id><published>2009-09-06T07:15:00.005+07:00</published><updated>2009-09-20T09:49:47.778+07:00</updated><title type='text'>Shopping Online</title><content type='html'>In the world more market online which give you offer electronic,clothes, gadget.&lt;br /&gt;If you want to shopping online  comfortable and secure, he wants to visit the best site for you is the store &lt;a href="http://www.shopwiki.com/"&gt;Shopwiki.com&lt;/a&gt;. There are many different types of products are offered, such as clothing, electronics, accessories, food and entertainment. &lt;br /&gt;&lt;br /&gt;I have an interesting exercise, but I found an article I found on the market &lt;a href="http://www.shopwiki.com/"&gt;shopwiki.com&lt;/a&gt;, the property knowing it is a tape, of course, if you like this store, you are welcome to search for specific items. &lt;br /&gt;&lt;br /&gt;The more needs you, many women who have the products you want, how to find clothes, shoes, clothes and cosmetics, all with good quality and many advantages when you shop online, &lt;a href="http://www.shopwiki.com/"&gt;shopwiki.com&lt;/a&gt;, visit this site, Dies is the place to shop online, which is very popular, it's time for another shopping needs on this site&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-8105432240691395060?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/8105432240691395060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=8105432240691395060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8105432240691395060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8105432240691395060'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2009/09/shopping-online.html' title='Shopping Online'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-3472722455440903131</id><published>2009-06-13T04:59:00.000+07:00</published><updated>2009-06-13T05:01:07.155+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Setup Cricket Wireless A600 Broadband Modem in Ubuntu</title><content type='html'>Setup Cricket Wireless A600 Broadband Modem in Ubuntu&lt;br /&gt;Download the .tar.gz file from here and extract the contents to your preferred directory using the following command&lt;br /&gt;&lt;br /&gt;Open up terminal and enter the following command&lt;br /&gt;&lt;br /&gt;tar xzvf Cricket_Mode_Switch.tar.gz&lt;br /&gt;&lt;br /&gt;and use cd to change into the directory of the extracted files.&lt;br /&gt;&lt;br /&gt;32 bit Users - Install usb_modeswitch with the following command:&lt;br /&gt;&lt;br /&gt;sudo make install&lt;br /&gt;&lt;br /&gt;64 bit Users - We need to recompile modeswitch to work on the 64bit platform. Run the following commands in terminal to do so&lt;br /&gt;&lt;br /&gt;sudo apt-get install build-essential&lt;br /&gt;&lt;br /&gt;sudo apt-get install libusb-dev&lt;br /&gt;&lt;br /&gt;rm usb_modeswitch&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;&lt;br /&gt;sudo make install&lt;br /&gt;&lt;br /&gt;Plug in your Cricket A600 to an open USB port, wait a moment for it to be detected as a CD drive/the auto play menu to pop up. Now we just need to execute the flipflop.sh, it is in the directory of files you extracted, by running the following command&lt;br /&gt;&lt;br /&gt;sudo ./flipflop.sh&lt;br /&gt;&lt;br /&gt;Please note you need to first make this file executable by running the following command&lt;br /&gt;&lt;br /&gt;chmod +x flipflop.sh&lt;br /&gt;&lt;br /&gt;After running the flipflop.sh you need to wait about 12 seconds and then poof! Your Cricket device should now appear in your network manager as a connection option.&lt;br /&gt;&lt;br /&gt;Useful Notes&lt;br /&gt;&lt;br /&gt;You will need to&lt;br /&gt;&lt;br /&gt;sudo flipflop.sh&lt;br /&gt;&lt;br /&gt;each time you attach the device for it to work.&lt;br /&gt;&lt;br /&gt;Before this guide will work for you, you do need to load the device on a Windows/Mac system and install the software for the device and activate it.&lt;br /&gt;&lt;br /&gt;reference : &lt;a href="ubuntugeek.com"&gt;ubuntugeek&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-3472722455440903131?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/3472722455440903131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=3472722455440903131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3472722455440903131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3472722455440903131'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2009/06/setup-cricket-wireless-a600-broadband.html' title='Setup Cricket Wireless A600 Broadband Modem in Ubuntu'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-2690674193068027577</id><published>2009-06-10T10:29:00.000+07:00</published><updated>2009-06-10T10:31:33.875+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Ubuntu: Changing Your Computer’s Hostname</title><content type='html'>So, your computer’s name, or hostname, isn’t what you want any longer. Possibly, you misspelled it during the installation process (trust me, I’ve done it). Whatever reason you have for changing it, it’s easier than you might think.&lt;br /&gt;Do It The GUI way&lt;br /&gt;&lt;br /&gt;You have two possible options. The first is through the network-admin desktop application. On 8.04 Hardy Heron, it’s installed by default. However, on 8.10 Intrepid Ibex, it is not. Use Synaptic to install gnome-network-admin or use sudo apt-get install gnome-network-admin at a command prompt.&lt;br /&gt;&lt;br /&gt;To run the application, choose System &gt; Administration &gt; Network. On the following Network Settings window, click on the General tab.&lt;br /&gt;&lt;br /&gt;screenshot-network_settings&lt;br /&gt;&lt;br /&gt;There you’ll see the Host Settings. Click the Unlock button and enter your passphrase to authenticate yourself to change the Host name. To finish, click Close and you’ll see a warning about having to login again. Click on Change Host name, and click Close again. Once you’re done, give your machine a restart and you’re set to go.&lt;br /&gt;No GUI? Do It On The CLI&lt;br /&gt;&lt;br /&gt;Your second option is from a command line. There are two files that need to be changed: /etc/hostname and /etc/hosts . Use your favorite text editor (I use nano for these edits) and open each one. You’ll need to use sudo since you’re changing system files.&lt;br /&gt;&lt;br /&gt;First we change the /etc/hosts file.&lt;br /&gt;sudo nano /etc/hosts&lt;br /&gt;&lt;br /&gt;This is what my server’s hosts file looks like.&lt;br /&gt;&lt;br /&gt;    adam@oracle:~$ cat /etc/hosts&lt;br /&gt;    127.0.0.1    localhost&lt;br /&gt;    127.0.1.1    oracle&lt;br /&gt;&lt;br /&gt;    # The following lines are desirable for IPv6 capable hosts&lt;br /&gt;    ::1     ip6-localhost ip6-loopback&lt;br /&gt;    fe00::0 ip6-localnet&lt;br /&gt;    ff00::0 ip6-mcastprefix&lt;br /&gt;    ff02::1 ip6-allnodes&lt;br /&gt;    ff02::2 ip6-allrouters&lt;br /&gt;    ff02::3 ip6-allhosts&lt;br /&gt;&lt;br /&gt;You can see my server’s name next to 127.0.1.1 as oracle. You should see your computer’s name at that same IP. Just replace it with your new choice. Save and close that file and open your /etc/hostname file.&lt;br /&gt;sudo nano /etc/hostname&lt;br /&gt;&lt;br /&gt;This one is very simple. All that should be there is your computer’s current name. Replace it with your new choice, save and close. Now, all that’s left is to reboot the machine.&lt;br /&gt;&lt;br /&gt;For a temporary fix, you can use the hostname command.&lt;br /&gt;sudo hostname your_new_hostname&lt;br /&gt;&lt;br /&gt;I’ve also read elsewhere that you don’t need to reboot after changing the hostname as much as you just need to re-login. I feel it’s best to be safe and just reboot. You can choose whichever is best for you.&lt;br /&gt;&lt;br /&gt;reference:&lt;a href="http://www.rebelzero.com/fixes/changing-your-computers-hostname/60"&gt;rebelzero&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-2690674193068027577?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/2690674193068027577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=2690674193068027577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2690674193068027577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2690674193068027577'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2009/06/ubuntu-changing-your-computers-hostname.html' title='Ubuntu: Changing Your Computer’s Hostname'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-755776329812001811</id><published>2008-10-07T11:38:00.000+07:00</published><updated>2008-10-07T11:39:54.319+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to convert an flv into a dvd iso image</title><content type='html'>flv2dvd is a script that convert an flv into a dvd iso image. simple stick the (single flv file) into an empty directory, cd into it and type in (flv2dvd *) without the quates. The end result is a dvd iso that you can burn using your favorate cd burner.&lt;br /&gt;&lt;br /&gt;Install flv2dvd in Ubuntu hardy&lt;br /&gt;&lt;br /&gt;You need to edit the /etc/apt/sources.list file using the following command&lt;br /&gt;&lt;br /&gt;    sudo gedit /etc/apt/sources.list&lt;br /&gt;&lt;br /&gt;Then add the fallowing line to the bottom&lt;br /&gt;&lt;br /&gt;    deb http://ubuntu.global-web.us/hardy binary/&lt;br /&gt;&lt;br /&gt;Save and exit the file&lt;br /&gt;&lt;br /&gt;Update the source list using the following comamnd&lt;br /&gt;&lt;br /&gt;sudo apt-get update&lt;br /&gt;&lt;br /&gt;Install flv2dvd using the following command&lt;br /&gt;&lt;br /&gt;    sudo apt-get install flv2dvd&lt;br /&gt;&lt;br /&gt;Using flv2dvd&lt;br /&gt;&lt;br /&gt;simple stick the (single flv file) into an empty directory, cd into it and type in (flv2dvd *) without the quates. The end result is a dvd iso that you can burn using your favorate cd burner.&lt;br /&gt;&lt;br /&gt;mkdir flvtest&lt;br /&gt;&lt;br /&gt;for example if you have music.flv file in flvtest directory&lt;br /&gt;&lt;br /&gt;cd flvtest&lt;br /&gt;&lt;br /&gt;    flv2dvd *&lt;br /&gt;&lt;br /&gt;Now you should be having dvd iso that you can burn using your favorate cd burner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-755776329812001811?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/755776329812001811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=755776329812001811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/755776329812001811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/755776329812001811'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/10/how-to-convert-flv-into-dvd-iso-image.html' title='How to convert an flv into a dvd iso image'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-387274011902974966</id><published>2008-05-29T10:22:00.000+07:00</published><updated>2008-05-29T10:24:45.031+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>UPdate IP Addresses at dyndns.org</title><content type='html'>If you are using zoneedit.com or dyndns.org for your DNS service so that you can access your server using a URL, then you might have to update your DNS record at the service periodically whenever the IP address of your computer changes.Now here is simple solution for this ddclient.&lt;br /&gt;&lt;br /&gt;Update IP addresses at dynamic DNS services.A perl based client to update your dynamic IP address at DynDNS.com (or other dynamic DNS services such as Hammernode, Zoneedit or EasyDNS), thus allowing you and others to use a fixed hostname (myhost.dyndns.org) to access your machine. This client supports both the dynamic and (near) static services, MX setting, and alternative host. It caches the address, and only attempts the update if the address actually changes.&lt;br /&gt;&lt;br /&gt;Install ddclient in ubuntu&lt;br /&gt;&lt;br /&gt;sudo aptitude install ddclient&lt;br /&gt;&lt;br /&gt;This will complete the installation&lt;br /&gt;&lt;br /&gt;Configuring ddclient&lt;br /&gt;&lt;br /&gt;If you want to reconfigure you seetings use the following command&lt;br /&gt;&lt;br /&gt;dpkg-reconfigure ddclient&lt;br /&gt;&lt;br /&gt;You want to make sure it runs as a service and monitors changes in ppp–something that the install wizard doesn’t cover.&lt;br /&gt;&lt;br /&gt;Edit the configuration file /etc/ddclient.conf&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/ddclient.conf&lt;br /&gt;&lt;br /&gt;# Configuration file for ddclient generated by debconf&lt;br /&gt;#&lt;br /&gt;# /etc/ddclient.conf&lt;br /&gt;pid=/var/run/ddclient.pid&lt;br /&gt;protocol=easydns&lt;br /&gt;use=web&lt;br /&gt;server=members.easydns.com&lt;br /&gt;login=yournamehere&lt;br /&gt;password=’password’&lt;br /&gt;*.your.domain&lt;br /&gt;&lt;br /&gt;If you can’t find the public IP address, then you can have ddclient check your public IP address from the web by editing /etc/ddclient.conf and making it use the web by saying&lt;br /&gt;&lt;br /&gt;use=web&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;use=web, web=checkip.dyndns.org/, web-skip=’IP Address’&lt;br /&gt;&lt;br /&gt;Save and exit the file&lt;br /&gt;&lt;br /&gt;Restart ddclient service using the following command&lt;br /&gt;&lt;br /&gt;sudo /etc/init.d/ddclient restart&lt;br /&gt;&lt;br /&gt;Reference : &lt;a href="http://ubuntugeek.com"&gt;http://ubuntugeek.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-387274011902974966?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/387274011902974966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=387274011902974966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/387274011902974966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/387274011902974966'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/update-ip-addresses-at-dyndnsorg.html' title='UPdate IP Addresses at dyndns.org'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-1061706127310959555</id><published>2008-05-21T10:15:00.000+07:00</published><updated>2008-05-21T10:21:21.147+07:00</updated><title type='text'>How Install Webmin in Linux</title><content type='html'>Webmin is a web-based interface for system administration for Unix. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on.&lt;br /&gt;&lt;br /&gt;Webmin consists of a simple web server, and a number of CGI programs which directly update system files like /etc/inetd.conf and /etc/passwd. The web server and all CGI programs are written in Perl version 5, and use no non-standard Perl modules.&lt;br /&gt;&lt;br /&gt;Installing Webmin in Ubuntu&lt;br /&gt;&lt;br /&gt;You can use the above procedure but if you want to install latest version you can download from webmin site download section&lt;br /&gt;&lt;br /&gt;Prerequisites&lt;br /&gt;&lt;br /&gt;Perl 5 interpreter and libnet-ssleay-perl&lt;br /&gt;&lt;br /&gt;sudo apt-get install perl5 libnet-ssleay-perl&lt;br /&gt;&lt;br /&gt;Now you need to download the latest webmin from the above downloadlink&lt;br /&gt;&lt;br /&gt;Download ‘webmin-1.310.tar.gz’ (at the time of writing) to some location in your machine ex:- /usr/local/src&lt;br /&gt;&lt;br /&gt;wget http://prdownloads.sourceforge.net/webadmin/webmin-1.310.tar.gz&lt;br /&gt;&lt;br /&gt;cd /usr/local/src&lt;br /&gt;&lt;br /&gt;sudo tar xzvf webmin-1.310.tar.gz&lt;br /&gt;&lt;br /&gt;cd webmin-1.310&lt;br /&gt;&lt;br /&gt;sudo sh setup.sh&lt;br /&gt;&lt;br /&gt;This will start the installation and now it will prompt for several questions answer them as follows&lt;br /&gt;&lt;br /&gt;Config file directory [/etc/webmin]:&lt;br /&gt;Leave as default, or change as you wish&lt;br /&gt;&lt;br /&gt;Log file directory [/var/webmin]:&lt;br /&gt;Leave as default, or change as you wish&lt;br /&gt;&lt;br /&gt;Full path to perl (default /usr/bin/perl):&lt;br /&gt;Leave as default, or change as you wish&lt;br /&gt;&lt;br /&gt;Operating system:&lt;br /&gt;Enter ‘6′&lt;br /&gt;&lt;br /&gt;Version:&lt;br /&gt;Enter ‘6′&lt;br /&gt;&lt;br /&gt;Web server port (default 10000):&lt;br /&gt;&lt;br /&gt;This is where you can start to make webmin more secure then the standard install you get with apt-get, Synaptic, or RPM. Leave as default or change it to what ever port you want.&lt;br /&gt;&lt;br /&gt;Login name (default admin):&lt;br /&gt;&lt;br /&gt;It is ‘admin’, so you can leave it as that, or put in any name that you like.&lt;br /&gt;&lt;br /&gt;Login password:&lt;br /&gt;&lt;br /&gt;By creating the user above and giving it a password, you have now made it so you will not need to log into webmin with root.&lt;br /&gt;&lt;br /&gt;Password again:&lt;br /&gt;&lt;br /&gt;enter your password again&lt;br /&gt;&lt;br /&gt;If you did not install ‘libnet-ssleay-perl’ you will get the following message:&lt;br /&gt;&lt;br /&gt;‘The Perl SSLeay library is not installed. SSL not available.’ You can continue with the install, but it would be more secure if you install sslrelay.&lt;br /&gt;&lt;br /&gt;Use SSL (y/n):y&lt;br /&gt;&lt;br /&gt;Choose yes here&lt;br /&gt;&lt;br /&gt;Start Webmin at boot time (y/n):y&lt;br /&gt;&lt;br /&gt;select here y&lt;br /&gt;&lt;br /&gt;At this point it is going to configure things, install things, and create things…&lt;br /&gt;&lt;br /&gt;It will then tell you that you can log in to https://hostipaddress:10000 and to accept the certificate.&lt;br /&gt;&lt;br /&gt;Webmin User Password Change&lt;br /&gt;&lt;br /&gt;If you want to change root password in webmin use this included Perl script:&lt;br /&gt;&lt;br /&gt;sudo /usr/share/webmin/changepass.pl /etc/webmin root&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-1061706127310959555?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/1061706127310959555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=1061706127310959555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/1061706127310959555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/1061706127310959555'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/how-install-webmin-in-linux.html' title='How Install Webmin in Linux'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-9200036162701663512</id><published>2008-05-21T09:30:00.002+07:00</published><updated>2008-05-21T09:59:38.844+07:00</updated><title type='text'>Installation MYSQL With PhpMyAdmin</title><content type='html'>MySQL is a widely used and fast SQL database server. It is a client/server implementation that consists of a server daemon (mysqld) and many different client programs/libraries.&lt;br /&gt;&lt;br /&gt;Installing Mysql database in Ubuntu&lt;br /&gt;&lt;br /&gt;sudo aptitude install mysql-server mysql-client libmysqlclient15-dev&lt;br /&gt;&lt;br /&gt;This will complete the installation of mysql server 5.0.45 in ubuntu gutsy.&lt;br /&gt;&lt;br /&gt;Configuring Mysql in ubuntu&lt;br /&gt;&lt;br /&gt;MySQL initially only allows connections from the localhost (127.0.0.1). We’ll need to remove that restriction if you wish to make it accessible to everyone on the internet. Open the file /etc/mysql/my.cnf&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/mysql/my.cnf&lt;br /&gt;&lt;br /&gt;Find the line bind-address = 127.0.0.1 and comment it out&lt;br /&gt;…&lt;br /&gt;#bind-address = 127.0.0.1&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;You can check your configuration using the following command&lt;br /&gt;&lt;br /&gt;#netstat -tap&lt;br /&gt;&lt;br /&gt;Output Looks like below&lt;br /&gt;&lt;br /&gt;tcp 0 0 *:mysql *:* LISTEN 4997/mysqld&lt;br /&gt;&lt;br /&gt;MySQL comes with no root password as default. This is a huge security risk. You’ll need to set one. So that the local computer gets root access as well, you’ll need to set a password for that too. The local-machine-name is the name of the computer you’re working on. For more information see here&lt;br /&gt;&lt;br /&gt;sudo mysqladmin -u root password your-new-password&lt;br /&gt;&lt;br /&gt;sudo mysqladmin -h root@local-machine-name -u root -p password your-new-password&lt;br /&gt;&lt;br /&gt;sudo /etc/init.d/mysql restart&lt;br /&gt;&lt;br /&gt;Manage Mysql using Phpmyadmin&lt;br /&gt;&lt;br /&gt;phpMyAdmin is a tool written in PHP intended to handle the administration of MySQL over the Web. Currently it can create and drop databases, create/drop/alter tables, delete/edit/add fields, execute any SQL statement, manage keys on fields, manage privileges,export data into various formats and is available in 54 languages. GPL License information.&lt;br /&gt;&lt;br /&gt;Install phpmyadmin in ubuntu&lt;br /&gt;&lt;br /&gt;sudo aptitude install phpmyadmin&lt;br /&gt;&lt;br /&gt;This will complete the installation.&lt;br /&gt;&lt;br /&gt;Now you need to goto http://serverip/phpmyadmin/&lt;br /&gt;&lt;br /&gt;Login using your mysql root as username and password&lt;br /&gt;&lt;br /&gt;Refrence: &lt;a href="http://ubuntugeek.com"&gt;ubuntugeek.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-9200036162701663512?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/9200036162701663512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=9200036162701663512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/9200036162701663512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/9200036162701663512'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/instalation-mysql-with-phpmyadmin.html' title='Installation MYSQL With PhpMyAdmin'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-5555266120191484139</id><published>2008-05-09T14:17:00.001+07:00</published><updated>2008-05-09T14:19:08.960+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Component'/><title type='text'>Database Tools by SQL Maestro Group</title><content type='html'>&lt;a href="http://www.torry.net/advtxt/adclick.php?bannerid=112&amp;amp;zoneid=2&amp;amp;source=&amp;amp;dest=http%3A%2F%2Fwww.sqlmaestro.com%2Fproducts%2F" target="_blank" onmouseover="self.status='Database Tools by SQL Maestro Group'; return true;" onmouseout="self.status='';return true;"&gt;Database Tools by SQL Maestro Group&lt;/a&gt;&lt;table border="0" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr valign="center"&gt;&lt;td align="center"&gt;&lt;a href="http://www.torry.net/advtxt/adclick.php?bannerid=112&amp;amp;zoneid=2&amp;amp;source=&amp;amp;dest=http%3A%2F%2Fwww.sqlmaestro.com%2Fproducts%2F" target="_blank" onmouseover="self.status='Database Tools by SQL Maestro Group'; return true;" onmouseout="self.status='';return true;"&gt;&lt;img src="http://www.torry.net/banners/sqlmaestro_140_100.gif" alt="Database Tools by SQL Maestro Group" border="0" height="140" hspace="5" width="100" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td&gt;&lt;ol&gt;&lt;p&gt;SQL Maestro Group offers complete database administration and management  tools for &lt;a class="mail" href="http://www.sqlmaestro.com/products/mysql/" target="_blank"&gt;MySQL&lt;/a&gt;, &lt;a class="mail" href="http://www.sqlmaestro.com/products/oracle/" target="_blank"&gt;Oracle&lt;/a&gt;, &lt;a class="mail" href="http://www.sqlmaestro.com/products/mssql/" target="_blank"&gt;MS SQL Server&lt;/a&gt;, &lt;a class="mail" href="http://www.sqlmaestro.com/products/postgresql/" target="_blank"&gt;PostgreSQL&lt;/a&gt;, &lt;a class="mail" href="http://www.sqlmaestro.com/products/sqlite/" target="_blank"&gt;SQLite&lt;/a&gt;, &lt;a class="mail" href="http://www.sqlmaestro.com/products/firebird/" target="_blank"&gt;Firebird&lt;/a&gt; and  &lt;a class="mail" href="http://www.sqlmaestro.com/products/maxdb/" target="_blank"&gt;MaxDB&lt;/a&gt; providing the highest performance, scalability and reliability to meet  the requirements of today's database applications.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Latest database servers versions support &lt;/li&gt;&lt;li&gt;State of the art user interface &lt;/li&gt;&lt;li&gt;Graphical database designer &lt;/li&gt;&lt;li&gt;Advanced SQL Editor &lt;/li&gt;&lt;li&gt;Visual Query Builder &lt;/li&gt;&lt;li&gt;Powerful data management &lt;/li&gt;&lt;li&gt;Feature-rich set of other admin/development tools.&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;br /&gt;Reference : http://torry.net&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-5555266120191484139?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/5555266120191484139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=5555266120191484139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5555266120191484139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5555266120191484139'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/database-tools-by-sql-maestro-group.html' title='Database Tools by SQL Maestro Group'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-239577066427231712</id><published>2008-05-09T14:00:00.000+07:00</published><updated>2008-05-09T14:04:03.023+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip n Tricks'/><title type='text'>How to Patch Delphi's VCL</title><content type='html'>&lt;h1 class="firstHeading"&gt;How to Patch Delphi's VCL&lt;/h1&gt;    &lt;!--contextual_targeting_start--&gt;   &lt;!--google_ad_section_start--&gt;        &lt;h3 id="siteSub"&gt;From Delphi&lt;/h3&gt;              &lt;div id="jump-to-nav"&gt;Jump to: &lt;a href="http://delphi.wikia.com/wiki/How_to_Patch_Delphi%27s_VCL#column-one"&gt;navigation&lt;/a&gt;, &lt;a href="http://delphi.wikia.com/wiki/How_to_Patch_Delphi%27s_VCL#searchInput"&gt;search&lt;/a&gt;&lt;/div&gt;   &lt;!-- start content --&gt;           &lt;p&gt;To create a &lt;a href="http://delphi.wikia.com/wiki/VCL" title="VCL"&gt;VCL&lt;/a&gt; patch all that is required is that you copy the source file (*&lt;a href="http://delphi.wikia.com/wiki/.pas" title=".pas"&gt;.pas&lt;/a&gt; file) from the Borland &lt;a href="http://delphi.wikia.com/index.php?title=RTL&amp;amp;action=edit" class="new" title="RTL"&gt;RTL&lt;/a&gt; or VCL source folder to your application's project folder. You can then freely modify the file and it will automatically be compiled into your application. &lt;/p&gt;&lt;p&gt;NOTE: This technique should only be used as an interim measure. When Borland releases fixes for the VCL that address the original issue it is recommended that you remove the patch file. Make sure you remove the respective *&lt;a href="http://delphi.wikia.com/wiki/.dcu" title=".dcu"&gt;.dcu&lt;/a&gt; files as well. &lt;/p&gt;&lt;p&gt;WARNING: When you modify RTL/VCL files in interface section, and you are using &lt;a href="http://delphi.wikia.com/wiki/Third_party_components" title="Third party components"&gt;third party components&lt;/a&gt; without sources you won't be able to rebuild your project! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-239577066427231712?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/239577066427231712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=239577066427231712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/239577066427231712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/239577066427231712'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/how-to-patch-delphis-vcl.html' title='How to Patch Delphi&apos;s VCL'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-2256053851774360801</id><published>2008-05-09T13:53:00.000+07:00</published><updated>2008-05-09T13:54:48.225+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip n Tricks'/><title type='text'>Get the size of a file (more than 2 GB)

With this function you can receive the size of a file, it still works correctly with sizes larger than 2 GB.</title><content type='html'>Get the size of a file (more than 2 GB)&lt;br /&gt;&lt;br /&gt;With this function you can receive the size of a file, it still works correctly with sizes larger than 2 GB.&lt;br /&gt;&lt;br /&gt;uses SysUtils;&lt;br /&gt;&lt;br /&gt;////////////////////////////////////////////////////////////////&lt;br /&gt;// this function determines the size of a file in bytes, the size&lt;br /&gt;// can be more than 2 GB.&lt;br /&gt;function Sto_GetFileSize(const FileName: String): Int64;&lt;br /&gt;var&lt;br /&gt; myFile: THandle;&lt;br /&gt; myFindData: TWin32FindData;&lt;br /&gt;begin&lt;br /&gt; // set default value&lt;br /&gt; Result := 0;&lt;br /&gt; // get the file handle.&lt;br /&gt; myFile := FindFirstFile(PChar(FileName), myFindData);&lt;br /&gt; if (myFile &lt;&gt; INVALID_HANDLE_VALUE) then&lt;br /&gt; begin&lt;br /&gt;   Windows.FindClose(myFile);&lt;br /&gt;   Int64Rec(Result).Lo := myFindData.nFileSizeLow;&lt;br /&gt;   Int64Rec(Result).Hi := myFindData.nFileSizeHigh;&lt;br /&gt; end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;Reference: http://www.martinstoeckli.ch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-2256053851774360801?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/2256053851774360801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=2256053851774360801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2256053851774360801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2256053851774360801'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/get-size-of-file-more-than-2-gb-with.html' title='Get the size of a file (more than 2 GB)&#xA;&#xA;With this function you can receive the size of a file, it still works correctly with sizes larger than 2 GB.'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-8265184053231284616</id><published>2008-05-09T13:17:00.000+07:00</published><updated>2008-05-09T13:23:26.331+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'></title><content type='html'>&lt;p&gt;  &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;span style="font-family:Comic Sans MS;font-size:180%;"&gt;&lt;b&gt;TADONETConnector: using ADO.NET in VCL for .NET&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;In this paper, I will demonstrate how to use the hardly documented TADONETConnector component to feed (ADO).NET DataSets to VCL for .NET clients, where you can show and work with the contents in regular data-aware controls from the VCL (for .NET). &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Delphi VCL applications use VCL TDataSets - and so do Delphi VCL for .NET applications (they use VCL TDataSets). VCL Data Access technologies include the Borland Database Engine (BDE), dbExpress, dbGo for ADO and InterBase Express (IBX) among others.&lt;br /&gt;The .NET Framework offers a different data access technology, called ADO.NET, with a .NET DataSet. The .NET DataSet is a bit similar to a VCL TClientDataSet in that it is disconnected and maintained in memory, but can be streamed to an XML file, and used to hold data resulting from an SQL Command on a database table. One difference is that the .NET DataSet can hold multiple DataTables, where the TClientDataSet can hold only one table (with the exception of nested tables, but these are all related to each other). Unfortunately, that's not the only difference, as their (internal) formats are also quite different: an XML file saved by a VCL TClientDataSet is not understood by a .NET DataSet - and vice versa. In fact, it's very hard to get a .NET DataSet and a VCL TDataSet working together. That's why I'm so surprised that the TADONETConnector of Delphi 2005 (and Delphi 8 for .NET) is so well-hidden... &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;span style="font-family:Comic Sans MS;font-size:130%;"&gt;&lt;b&gt;TADONETConnector&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;TADONETConnector allows .NET DataTables to supply the content of VCL DataSets. TADONETConnector is a VCL TDataSet descendant, so VCL TDataSources can connect to it. TADONETConnector has a DataTable property, which can be assigned to a .NET DataTable. Brilliant, isn't it?&lt;br /&gt;For some reason, the TADONETConnector component is not installed by default, and it's usage is also not well-documented (if you ask me), so allow me to demonstrate the power of this little gem. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Do &lt;i&gt;File | New&lt;/i&gt; and create a new &lt;i&gt;VCL Forms Application - Delphi for .NET&lt;/i&gt; project - save it. First, we have to make sure we can use the TADONETConnector component. The design-time registration can be found in the Borland.Vcl.Design.AdoNet.dll assembly, that we manually need to install using the &lt;i&gt;Component | Install .NET Components...&lt;/i&gt; dialog. On the .NET VCL Components tab, you can click on the Add button and locate the Borland.Vcl.Design.AdoNet.dll assembly in the Borland\BDS\3.0\Bin directory. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="text-align: left;"&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 305px; height: 227px;" src="http://www.drbob42.com/gif/examn62a.gif" /&gt; &lt;/span&gt;&lt;/center&gt;&lt;/div&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Using Delphi 8 for .NET, this results in a TADONETConnector component being added to the Data Access category, but with Delphi 2005 I found a TListConnector component (and no TADONETConnector component). &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 315px; height: 206px;" src="http://www.drbob42.com/gif/examn62b.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;It doesn’t really matter, as you can always create the component in source code, of course, but it's a bit strange that the TADONETConnector is becoming even more "hidden" in Delphi 2005 than it was in Delphi 8 for .NET. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Anyway, let's start using TADONETConnector now. According to the &lt;a href="ms-help://borland.bds3/bds3dnetapi_dnet/html/BorlandVclADONETDbTADONETConnectorClass.htm" target="_blank"&gt;Delphi 2005 on-line help&lt;/a&gt;, you should use the &lt;i&gt;CommandText&lt;/i&gt; property, but this property doesn't exist! Instead of the CommandText property, my experience tells me that we should simply assign a .NET DataTable to the DataTable property of the TADONETConnector.&lt;br /&gt;How do we get a .NET DataTable? Well, like the TADONETConnector, we have to create the .NET DataSet, xxxConnection and xxxDataAdapter components by hand: in code. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;In a VCL for .NET unit, you need to add a number of units to the uses clause, namely the System.Data (for DataSet), System.Data.SqlClient (for the sqlConnection etc.), as well as ADONETDb (for the TADONETConnector). &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;unit&lt;/b&gt; Unit1;&lt;br /&gt; &lt;b&gt;interface&lt;br /&gt; uses&lt;/b&gt;&lt;br /&gt;   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;   Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls, Borland.Vcl.Db,&lt;br /&gt;   Borland.Vcl.Grids, Borland.Vcl.DBGrids, Borland.Vcl.ExtCtrls,&lt;br /&gt;   Borland.Vcl.DBCtrls,&lt;br /&gt;   System.Data, &lt;span class="comment"&gt;// DataSet&lt;/span&gt;&lt;br /&gt;   System.Data.SqlClient, &lt;span class="comment"&gt;// sqlXXX&lt;/span&gt;&lt;br /&gt;   ADONETDb; &lt;span class="comment"&gt;// TADONETConnector&lt;/span&gt; &lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;I place two TButtons on the Form: btnConnect and btnUpdate, as well as a TDBNavgiator, TDBGrid and TDataSource. The TDBNavigator and TDBGrid can be connected to the TDataSource already, but the actual data access stuff needs to be done in code, as mentioned before. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 369px; height: 214px;" src="http://www.drbob42.com/gif/examn62c.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Note that in the class declaration below, I've included the connection string to the Northwind database on my NX03\NX3 instance of SQL Server. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;type&lt;/b&gt;&lt;br /&gt;   TForm1 = &lt;b&gt;class&lt;/b&gt;(TForm)&lt;br /&gt;     btnConnect: TButton;&lt;br /&gt;     btnUpdate: TButton;&lt;br /&gt;     DBNavigator1: TDBNavigator;&lt;br /&gt;     DBGrid1: TDBGrid;&lt;br /&gt;     DataSource1: TDataSource;&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; FormCreate(Sender: TObject);&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; btnConnectClick(Sender: TObject);&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; btnUpdateClick(Sender: TObject);&lt;br /&gt;   &lt;b&gt;const&lt;/b&gt;&lt;br /&gt;     ConnectionString = 'user id=sa;data source="NX03\NX3";'+&lt;br /&gt;       'persist security info=True;initial catalog=Northwind;password=********';&lt;br /&gt;   &lt;b&gt;private&lt;/b&gt;&lt;br /&gt;     &lt;span class="comment"&gt;{ Private declarations }&lt;/span&gt;&lt;br /&gt;     ADODataSet: TADONETConnector;&lt;br /&gt;     SQLConn: sqlConnection;&lt;br /&gt;     SQLAdap: sqlDataAdapter;&lt;br /&gt;     Data: DataSet;&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;And as you can see, I've also declared a TADONETCOnnector, sqlConnection, sqlDataAdapter and .NET DataSet in the private section of my VCL Form. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Time to write some code. In the FormCreate method, I'll create instances for the four private components, without actually connecting to the database or retrieving any data, yet. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;procedure&lt;/b&gt; TForm1.FormCreate(Sender: TObject);&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;   SQLConn := sqlConnection.Create(ConnectionString);&lt;br /&gt;   SQLAdap := sqlDataAdapter.Create('select * from Employees', SQLConn);&lt;br /&gt;   Data := DataSet.Create;&lt;br /&gt;   ADODataSet := TADONETConnector.Create(self)&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;A click on btnConnect will execute the Fill method of the sqlDataAdapter, and assign the resulting DataTable from the DataSet to the ADONETConnector's DataTable property. The TDataSource then also needs to be connected to the TADONETConnector component, and then we only need to activate the latter to get the data! &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 307px; height: 175px;" src="http://www.drbob42.com/gif/examn62d.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Note that we can now navigate, browse, edit and do anything with the data (originating from an ADO.NET DataSource) with VCL for .NET components. Not VCL for Win32, by the way, since TADONETConnector is a VCL for .NET component only! &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;procedure&lt;/b&gt; TForm1.btnConnectClick(Sender: TObject);&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;   SQLConn.Open;&lt;br /&gt;   &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;     SQLAdap.Fill(Data, 'Employees');&lt;br /&gt;     ADODataSet.DataTable := Data.Tables['Employees'];&lt;br /&gt;     DataSource1.DataSet := ADODataSet;&lt;br /&gt;     ADODataSet.Active := True&lt;br /&gt;   &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;     SQLConn.Close&lt;br /&gt;   &lt;b&gt;end&lt;br /&gt; end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Sending updates back to the ADO.NET database is a bit more complicated, but not much. We need to use a sqlCommandBuilder to generate Update, Insert and Delete statements for the sqlDataAdapter, and then call the TADONETConnector's ApplyUpdates method, passing the sqlDataAdapter as argument. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;procedure&lt;/b&gt; TForm1.btnUpdateClick(Sender: TObject);&lt;br /&gt; &lt;b&gt;var&lt;/b&gt;&lt;br /&gt;   SQLCB: sqlCommandBuilder;&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;   SQLCB := sqlCommandBuilder.Create(SQLAdap);&lt;br /&gt;   SQLAdap.UpdateCommand := SQLCB.GetUpdateCommand;&lt;br /&gt;   SQLAdap.InsertCommand := SQLCB.GetInsertCommand;&lt;br /&gt;   SQLAdap.DeleteCommand := SQLCB.GetDeleteCommand;&lt;br /&gt;   ADODataSet.ApplyUpdates(SQLAdap);&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;span style="font-family:Comic Sans MS;font-size:130%;"&gt;&lt;b&gt;ASP.NET Web Service&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Apart from building the connection yourself, this opens up an opportunity of connecting to an ASP.NET Web Service that returns ADO.NET DataSets (as described in Dr.Bob Examines #65 on &lt;a href="http://www.drbob42.com/examine/examin65.htm"&gt;Multi-tier/Distributed Database Applications in .NET&lt;/a&gt;). I've also done this in the past using the IBM DB2 UDB SAMPLE database as server, offering &lt;a href="http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0402swart2/" target="_blank"&gt;connection and data access&lt;/a&gt; as well as &lt;a href="http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0403swart/" target="_blank"&gt;update&lt;/a&gt; abilities.&lt;br /&gt;This time, I want to use the SQL Server Northwind database. So, start a new project, this time an ASP.NET Web Service Application - Delphi for .NET. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 366px; height: 276px;" src="http://www.drbob42.com/gif/examn62e.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;As the name for the new project, I've specified NorthwindWS, which results in a new virtual directory c:\inetpub\wwwroot\NorthwindWS on my machine. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img style="width: 340px; height: 181px;" src="http://www.drbob42.com/gif/examn62f.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;I want to rename the WebService1.asmx file to Database.asmx, so I can reach the Web Service as http://localhost/NorthwindWS/Database.asmx. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img src="http://www.drbob42.com/gif/examn62g.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Inside the Database.pas file, I now want to rename TWebService1 to a more descriptive name, such as TNorthwindWebService, so let's use Refactoring to do that! &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;img src="http://www.drbob42.com/gif/examn62h.gif" /&gt; &lt;/span&gt;&lt;/center&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;When this is done, I always start by adding a namespace to the web service class definition, using the WebService attribute. I only want to work with the Employees table from the Northwind database, so there are only two methods that I need: GetEmployees and SetEmployees. Note the ConnectionString again, as const embedded in the class definition itself. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;type&lt;/b&gt;&lt;br /&gt;   [WebService(Namespace='http://eBob42.org')]&lt;br /&gt;   TNorthwindWebService = &lt;b&gt;class&lt;/b&gt;(System.Web.Services.WebService)&lt;br /&gt;     ...&lt;br /&gt;   &lt;b&gt;const&lt;/b&gt;&lt;br /&gt;     ConnectionString = 'user id=sa;data source="NX03\NX3";'+&lt;br /&gt;       'persist security info=True;initial catalog=Northwind;password=********';&lt;br /&gt;     ...&lt;br /&gt;   &lt;b&gt;public&lt;br /&gt;     constructor&lt;/b&gt; Create;&lt;br /&gt;&lt;br /&gt;     [WebMethod]&lt;br /&gt;     &lt;b&gt;function&lt;/b&gt; GetEmployees: DataSet;&lt;br /&gt;     [WebMethod]&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; SetEmployees(Changes: DataSet);&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;The implementation of the two web methods is relatively straightforward: &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;function&lt;/b&gt; TNorthwindWebService.GetEmployees: DataSet;&lt;br /&gt; &lt;b&gt;var&lt;/b&gt;&lt;br /&gt;   SqlConn: sqlConnection;&lt;br /&gt;   SqlAdap: sqlDataAdapter;&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;   SqlConn := sqlConnection.Create(ConnectionString);&lt;br /&gt;   SqlConn.Open;&lt;br /&gt;   &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;     SqlAdap := sqlDataAdapter.Create('SELECT * FROM Employees',SqlConn);&lt;br /&gt;     Result := DataSet.Create;&lt;br /&gt;     SqlAdap.Fill(Result)&lt;br /&gt;   &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;     SqlConn.Close&lt;br /&gt;   &lt;b&gt;end&lt;br /&gt; end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;procedure&lt;/b&gt; TNorthwindWebService.SetEmployees(Changes: DataSet);&lt;br /&gt; &lt;b&gt;var&lt;/b&gt;&lt;br /&gt;   SqlConn: sqlConnection;&lt;br /&gt;   SqlAdap: sqlDataAdapter;&lt;br /&gt;   SqlCB: sqlCommandBuilder;&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;   SqlConn := sqlConnection.Create(ConnectionString);&lt;br /&gt;   SqlConn.Open;&lt;br /&gt;   &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;     SqlAdap := sqlDataAdapter.Create('SELECT * FROM Employees',SqlConn);&lt;br /&gt;     SqlCB := sqlCommandBuilder.Create(SqlAdap);&lt;br /&gt;     SqlAdap.UpdateCommand := SqlCB.GetUpdateCommand;&lt;br /&gt;     SqlAdap.InsertCommand := SqlCB.GetInsertCommand;&lt;br /&gt;     SqlAdap.DeleteCommand := SqlCB.GetDeleteCommand;&lt;br /&gt;     SqlAdap.Update(Changes)&lt;br /&gt;   &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;     SqlConn.Close&lt;br /&gt;   &lt;b&gt;end&lt;br /&gt; end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;You can now compile and deploy the Web Service. Any application that needs to use this Web Service must add a Web Reference to this Web Service (the WSDL file or location).&lt;br /&gt;Then we can modify the client application to connect to the Web Service instead of the local SQL Server database. Note that I've added some IFDEFs to make sure we can switch from local to Web Service database now. &lt;/span&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;  &lt;b&gt;unit&lt;/b&gt; Unit1;&lt;br /&gt; {.$DEFINE WS}&lt;br /&gt; &lt;b&gt;interface&lt;br /&gt; uses&lt;/b&gt;&lt;br /&gt;   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;   Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls, Borland.Vcl.Db,&lt;br /&gt;   Borland.Vcl.Grids, Borland.Vcl.DBGrids, Borland.Vcl.ExtCtrls,&lt;br /&gt;   Borland.Vcl.DBCtrls,&lt;br /&gt;   System.Data, &lt;span class="comment"&gt;// DataSet&lt;/span&gt;&lt;br /&gt;   System.Data.SqlClient, &lt;span class="comment"&gt;// sqlXXX&lt;/span&gt;&lt;br /&gt;   localhost.Database, &lt;span class="comment"&gt;// TNorthwindWebService&lt;/span&gt;&lt;br /&gt;   ADONETDb; &lt;span class="comment"&gt;// TADONETConnector&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;type&lt;/b&gt;&lt;br /&gt;   TForm1 = &lt;b&gt;class&lt;/b&gt;(TForm)&lt;br /&gt;     btnConnect: TButton;&lt;br /&gt;     btnUpdate: TButton;&lt;br /&gt;     DBNavigator1: TDBNavigator;&lt;br /&gt;     DBGrid1: TDBGrid;&lt;br /&gt;     DataSource1: TDataSource;&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; FormCreate(Sender: TObject);&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; btnConnectClick(Sender: TObject);&lt;br /&gt;     &lt;b&gt;procedure&lt;/b&gt; btnUpdateClick(Sender: TObject);&lt;br /&gt;   &lt;b&gt;const&lt;/b&gt;&lt;br /&gt;     ConnectionString = 'user id=sa;data source="NX03\NX3";'+&lt;br /&gt;       'persist security info=True;initial catalog=Northwind;password=********';&lt;br /&gt;   &lt;b&gt;private&lt;/b&gt;&lt;br /&gt;     { Private declarations }&lt;br /&gt;     ADODataSet: TADONETConnector;&lt;br /&gt;   &lt;span class="comment"&gt;{$IFDEF WS}&lt;/span&gt;&lt;br /&gt;     WS: TNorthwindWebService;&lt;br /&gt;   &lt;span class="comment"&gt;{$ELSE}&lt;/span&gt;&lt;br /&gt;     SQLConn: sqlConnection;&lt;br /&gt;     SQLAdap: sqlDataAdapter;&lt;br /&gt;   &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt;     Data: DataSet;&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;var&lt;/b&gt;&lt;br /&gt;   Form1: TForm1;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;implementation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$R *.nfm}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;procedure&lt;/b&gt; TForm1.FormCreate(Sender: TObject);&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$IFDEF WS}&lt;/span&gt;&lt;br /&gt;   WS := TNorthwindWebService.Create;&lt;br /&gt; &lt;span class="comment"&gt;{$ELSE}&lt;/span&gt;&lt;br /&gt;   SQLConn := sqlConnection.Create(ConnectionString);&lt;br /&gt;   SQLAdap := sqlDataAdapter.Create('SELECT * FROM Employees', SQLConn);&lt;br /&gt; &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt;   Data := DataSet.Create;&lt;br /&gt;   ADODataSet := TADONETConnector.Create(self)&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;procedure&lt;/b&gt; TForm1.btnConnectClick(Sender: TObject);&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$IFDEF WS}&lt;/span&gt;&lt;br /&gt;   Data := WS.GetEmployees;&lt;br /&gt; &lt;span class="comment"&gt;{$ELSE}&lt;/span&gt;&lt;br /&gt;   SQLConn.Open;&lt;br /&gt;   &lt;b&gt;try&lt;/b&gt;&lt;br /&gt;     SQLAdap.Fill(Data);&lt;br /&gt; &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt;     ADODataSet.DataTable := Data.Tables[0];&lt;br /&gt;     DataSource1.DataSet := ADODataSet;&lt;br /&gt;     ADODataSet.Active := True&lt;br /&gt; &lt;span class="comment"&gt;{$IFNDEF WS}&lt;/span&gt;&lt;br /&gt;   &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;     SQLConn.Close&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt; end;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;procedure&lt;/b&gt; TForm1.btnUpdateClick(Sender: TObject);&lt;br /&gt; &lt;span class="comment"&gt;{$IFNEF WS}&lt;/span&gt;&lt;br /&gt; &lt;b&gt;var&lt;/b&gt;&lt;br /&gt;   SQLCB: sqlCommandBuilder;&lt;br /&gt; &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt; &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$IFDEF WS}&lt;/span&gt;&lt;br /&gt;   WS.SetEmployees(ADODataSet.DataTable.DataSet.GetChanges);&lt;br /&gt;   ADODataSet.MergeChangeLog; &lt;span class="comment"&gt;// accept changes;&lt;/span&gt;&lt;br /&gt; &lt;span class="comment"&gt;{$ELSE}&lt;/span&gt;&lt;br /&gt;   SQLCB := sqlCommandBuilder.Create(SQLAdap);&lt;br /&gt;   SQLAdap.UpdateCommand := SQLCB.GetUpdateCommand;&lt;br /&gt;   SQLAdap.InsertCommand := SQLCB.GetInsertCommand;&lt;br /&gt;   SQLAdap.DeleteCommand := SQLCB.GetDeleteCommand;&lt;br /&gt;   ADODataSet.ApplyUpdates(SQLAdap)&lt;br /&gt; &lt;span class="comment"&gt;{$ENDIF}&lt;/span&gt;&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;Note that we now have to call the ADODataSet.MergeChangeLog if the call to WS.SetEmployees was successful, since that won't accept the changes in the DataTable itself. &lt;/span&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;span style="font-family:Comic Sans MS;font-size:130%;"&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;In this paper, I have shown how to use the TADONETConnector component to feed (ADO).NET DataSets to VCL for .NET clients, where we can work with the contents in regular data-aware controls from the VCL (for .NET). I've even shown that this can be used in multi-tier applications, where the DataSet is coming from an ASP.NET Web Service, for example. Obviously, .NET Remoting is another possibility.&lt;br /&gt;See my &lt;a href="http://www.ebob42.com/training" target="_blank"&gt;Delphi Training Days&lt;/a&gt; for more information about ASP.NET Web Services and .NET Remoting with Delphi for .NET, or read Dr.Bob Examines #65 on &lt;a href="http://www.drbob42.com/examine/examin65.htm"&gt;Multi-tier/Distributed Database Applications in .NET&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;b&gt;Update:&lt;/b&gt; I just found out that Fabricio (Delphian) has posted an &lt;a href="http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_21920108.html" target="_blank"&gt;article&lt;/a&gt; based on this work that shows how to use a TClientDataSet (of VCL for .NET) in an ASP.NET Web Service.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Reference :http://www.drbob42.com&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana,Helvetica;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-8265184053231284616?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/8265184053231284616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=8265184053231284616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8265184053231284616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/8265184053231284616'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/tadonetconnector-using-ado.html' title=''/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-908723996393407696</id><published>2008-05-07T14:44:00.001+07:00</published><updated>2008-05-07T14:56:21.778+07:00</updated><title type='text'>HUBackup - Backup application for Ubuntu Home Users</title><content type='html'>&lt;span style="font-size:85%;"&gt;HUBackup is short for Home User &lt;a id="KonaLink0" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/hubackup-backup-application-for-ubuntu-home-users.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;" &gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;Backup &lt;/span&gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;System&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. As the name implies, this is a very simple, concise and easy to use &lt;a id="KonaLink1" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/hubackup-backup-application-for-ubuntu-home-users.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;" &gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;backup &lt;/span&gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;application&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; that uses the renowned and proven dar (Disk ARchive) to do the actual archiving. Emphasis has been on providing true and reliable progress indication throughout all operations, as well as the ability to cancel any operation at any given point. HUBackup mainly concerns with backing up your home folder data, allowing you to restore it in case of data loss. &lt;p&gt;&lt;span id="more-380"&gt;&lt;/span&gt;&lt;strong&gt;Install hubackup in ubuntu&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;sudo aptitude install hubackup&lt;/p&gt; &lt;p&gt;This will complete the hubackup installation.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Backup Files&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you want to open hubackup goto System—&gt;Administration—&gt;Home User Backup&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/1.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;Once it opens you should see similar to the following screen&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/2.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;You need to select the Save Backup To Option&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/3.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;Once you selected the Save Backup To Option complete screen looks like below and click on backup&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/4.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;Backup is in progress&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/5.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;After completing the backup you can see two file as below&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.ubuntugeek.com/images/hu/6.png" align="middle" /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Restore Files &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Restoring files from System—&gt;Administration—&gt;Home User Restore is not working for me i.e it is crashing for me in ubuntu gutsy so we need to use command line restore.&lt;/p&gt; &lt;p&gt;Home user backup application hubackup using the underlying archiver , DAR.&lt;/p&gt; &lt;p&gt;Usually after a typical run of hubackup you will have two resulting files&lt;/p&gt; &lt;p&gt;/home/backup/ruchi-master-archive.1.dar&lt;br /&gt;/home/backup/ruchi-master-catalog.1.dar&lt;/p&gt; &lt;p&gt;To restore , which actually usually means extract in DAR’s language you need to do something like:&lt;/p&gt; &lt;p&gt;dar -x /home/backup/ruchi-master-archive -R TARGET_DIR&lt;/p&gt; &lt;p&gt;If there is more then one slice DAR knows how to switch between them properly.&lt;/p&gt;&lt;p&gt;Reference : ubuntugeek.com&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-908723996393407696?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/908723996393407696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=908723996393407696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/908723996393407696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/908723996393407696'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/hubackup-backup-application-for-ubuntu.html' title='HUBackup - Backup application for Ubuntu Home Users'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-579073416496359919</id><published>2008-05-07T14:34:00.000+07:00</published><updated>2008-05-07T14:35:25.476+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Make ubuntu look such vista</title><content type='html'>&lt;div style="text-align: left;"&gt; Gnome-look.org or &lt;a href="http://gnome-look.org/content/download.php?content=57352&amp;amp;id=1&amp;amp;tan=21338614&amp;amp;PHPSESSID=b9a68871d79ab7ec599715ed249c07d9" target="_blank"&gt;here&lt;/a&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Install the Beryl and GTK theme as usual&lt;/p&gt;&lt;div&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;strong&gt;Icons&lt;/strong&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Download the nuoveXT-aero iconset&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Download the nuoveXT-aero iconset from &lt;a href="http://kahns-klan.de/gnome/files/nuoveXT-aero.tar.gz" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;strong&gt;Panel&lt;/strong&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Change the gnome-panel size to 32px height.For this you need to Right-click on the gnome panel (the &lt;a id="KonaLink1" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/howto-make-ubuntu-look-like-windows-vista.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-family: Verdana,Tahoma,Arial,sans-serif; font-weight: 400; font-size: 10.9333px; position: static;color:#cc9933;" &gt;&lt;span class="kLink" style="color: rgb(204, 153, 51) ! important; font-family: Verdana,Tahoma,Arial,sans-serif; font-weight: 400; font-size: 10.9333px; position: static;"&gt;taskbar&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; at the top of the screen) select properties&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;img src="http://www.ubuntugeek.com/images/vista/1.png" alt="" align="middle" /&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Change the size to 32 and click on close&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;img src="http://www.ubuntugeek.com/images/vista/2.png" alt="" align="middle" /&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;strong&gt;Vista start-button screenlet&lt;/strong&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Download and install “Desktop Screenlets” and you can download from &lt;a href="http://www.compiz.org/Desktop_Screenlets" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Install the “orb” screenlet (The orb screenlet is included in the .tar.gz from gnome-look.org) or from &lt;a href="http://kahns-klan.de/gnome/files/orb.tar.gz" target="_blank"&gt;here&lt;/a&gt; .Place the orb screenlet above the main-menu button and lock the position.&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;strong&gt;Vista Wallpapers&lt;/strong&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;If you want to make the experience complete download some Vista wallpapers for your desktop.&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Download vista wallpapers from &lt;a href="http://www.winmatrix.com/forums/index.php?showtopic=5254" target="_blank"&gt;here&lt;/a&gt; or &lt;a href="http://www.winmatrix.com/forums/index.php?showtopic=8330" target="_blank"&gt;here&lt;/a&gt; or &lt;a href="http://www.winmatrix.com/forums/index.php?showtopic=12220" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Install cursor to aero-drop&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Download aero-drop (Aero Mouse Cursor with Drop Shadow) from &lt;a href="http://gnome-look.org/content/download.php?content=67833&amp;amp;id=2&amp;amp;tan=63039819" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Extract the archive and move the folder to ~/.icons/ .&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Go to System—&gt;  Preferences—&gt; Appearance—&gt; Theme—&gt; Customize—&gt; Pointer—&gt;  aero-drop—&gt; Close—&gt; Close.&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Then, go to ccsm (if you don’t have it  install it with “sudo apt-get install  compizconfig-settings-manager”).&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;General Options—&gt; Cursor theme—&gt;  aero-drop&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;Close ccsm.&lt;br /&gt;That’s it you are ready for vista look for your ubuntu desktop&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-579073416496359919?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/579073416496359919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=579073416496359919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/579073416496359919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/579073416496359919'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/make-ubuntu-look-such-vista.html' title='Make ubuntu look such vista'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-5070850609963536083</id><published>2008-05-07T14:09:00.003+07:00</published><updated>2008-05-07T16:29:59.620+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Install linux to USB</title><content type='html'>This tutorial describes how to install Ubuntu by copying the contents of the installation CD to an USB memory stick (aka &lt;span style="font-size:85%;"&gt;&lt;a id="KonaLink0" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/how-to-install-ubuntu-linux-from-usb-stick.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;" &gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;flash &lt;/span&gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;drive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;) and making the stick bootable. This is handy for machines like ultra portable notebooks that do not have a &lt;a id="KonaLink1" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/how-to-install-ubuntu-linux-from-usb-stick.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;" &gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;CD &lt;/span&gt;&lt;span class="kLink" style="border-bottom: 1px solid rgb(204, 153, 51); color: rgb(204, 153, 51) ! important; font-weight: 400; position: static; padding-bottom: 1px;font-family:Verdana,Tahoma,Arial,sans-serif;color:#0000e0;"  &gt;drive&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; but can boot from USB media.&lt;/span&gt; &lt;p&gt;&lt;span id="more-464"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;In short here’s what you do:&lt;/p&gt; &lt;p&gt;Prepare the USB flash drive&lt;/p&gt; &lt;p&gt;Boot the computer from your USB flash drive.&lt;/p&gt; &lt;p&gt;Install Ubuntu as you would from a normal boot CD&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;A running Ubuntu 8.04 or any ubuntu version installation&lt;/p&gt; &lt;p&gt;A &lt;a id="KonaLink2" target="_new" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.ubuntugeek.com/how-to-install-ubuntu-linux-from-usb-stick.html#"&gt;&lt;span style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;font-size:10;"  &gt;&lt;span class="kLink" style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;font-size:10;"  &gt;USB &lt;/span&gt;&lt;span class="kLink" style="color: rgb(204, 153, 51) ! important; font-weight: 400; position: static;font-family:Verdana,Tahoma,Arial,sans-serif;font-size:10;"  &gt;device&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; (stick, pen-drive, USB hard disk) that has already been formatted with FAT32 and has enough free space to hold your Ubuntu installation image&lt;/p&gt; &lt;p&gt;A Ubuntu CD image downloaded from the Ubuntu servers or mirrors (*.iso file) or from &lt;a target="_blank" href="http://www.ubuntu.com/getubuntu/download"&gt;here &lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;On the root directory of your USB device, create a folder “install”&lt;br /&gt;Copy the installer kernel and the initramdisk into this folder (Download source below.You need the files “vmlinux” and “initrd.gz”).&lt;/p&gt; &lt;p&gt;Download source for the installer kernel and initramdisk&lt;/p&gt; &lt;p&gt;For AMD64 Download from &lt;a target="_blank" href="http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-amd64/current/images/hd-media/"&gt;here&lt;/a&gt;&lt;br /&gt;For i386 Download from &lt;a target="_blank" href="http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/hd-media/"&gt;here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You need to download the files “vmlinux” and “initrd.gz”.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Note: You need to have the installer that fits the architecture of your Ubuntu version you want to install. In other words, you need a amd64 installer if you want to install an amd64 Ubuntu .iso image and the i386 installer for an i386 iso.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;From the installation iso image you downloaded, copy the folder “isolinux” to the root directory of your USB device (right-click on the .iso file, choose “extract here”). Rename “isolinux” into “syslinux”. Go inside the directroy “syslinux”. There, rename the file “isolinux.cfg” into “syslinux.cfg”.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Make the stick bootable: Use fdisk to set the boot flag,&lt;/p&gt; &lt;p&gt;Install syslinux using the following command&lt;/p&gt; &lt;p&gt;sudo aptitude install syslinux&lt;/p&gt; &lt;p&gt;Now use syslinux to install a boot sector on your USB device&lt;/p&gt; &lt;p&gt;sudo syslinux /dev/sdbX&lt;/p&gt; &lt;p&gt;where sdbX is the device name and number of your USB device, check with “sudo mount”. A file called “ldlinux.sys” will be created in the root direcotry of the USB device.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Copy the Ubuntu CD image in the root directory of your USB device (Contents of USB you can see as follows).If you are using i386 you need to copy the complete .iso image in to the root directory of your USB device.&lt;br /&gt;&lt;img src="http://www.ubuntugeek.com/images/us.png" align="middle" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Reference: ubuntugeek.com&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-5070850609963536083?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/5070850609963536083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=5070850609963536083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5070850609963536083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/5070850609963536083'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/05/install-linux-from-usb.html' title='Install linux to USB'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-4271705017273334892</id><published>2008-04-08T15:58:00.000+07:00</published><updated>2008-04-08T16:11:00.738+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tip n Tricks'/><title type='text'>How to remove an application button from the taskbar in Delphi?</title><content type='html'>&lt;h3 class="post-title"&gt; &lt;a href="http://delphigeek.blogspot.com/2007/02/how-to-remove-application-button-from.html"&gt;&lt;br /&gt;&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;This is a question which each Delphi programmer ask himself at least once in his life. If you use Google or any other search engine you will easily find this solution:&lt;/p&gt;&lt;br /&gt;&lt;pre style="color: white;"&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;procedure&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; TForm1.CreateParams(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Params: TCreateParams);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;3&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  inherited CreateParams(Params);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;4&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;with&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Params &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;do&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;5&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    ExStyle :&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ExStyle &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;or&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WS_EX_TOPMOST;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;6&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    WndParent :&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetDesktopwindow;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;7&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;8&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/pre&gt; &lt;p&gt;So now you definitely have a question: "If it is so easy to find a solution then why I am talking about this?" An answer is simple. I have merely encountered a situation when approach which has been shown above is not suitable and decided to share my solution of this case with you.&lt;/p&gt; &lt;p&gt;Well what is the intention of the problem? According to the MSDN if you add &lt;strong&gt;WS_EX_TOOLWINDOW&lt;/strong&gt; to the window ExStyle then window will act like this:&lt;/p&gt; &lt;blockquote&gt;&lt;strong&gt;WS_EX_TOOLWINDOW&lt;/strong&gt;  &lt;p&gt;Creates a tool window; that is, a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. &lt;em&gt;A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB&lt;/em&gt;. If a tool window has a system menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by typing ALT+SPACE.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;But my client asked me to remove the button from the taskbar and leave the ability to see the window in the ALT+TAB dialog. Thus I had to refuse from above method and create my own. The solution in principle is not hard. Here is the list of steps you should do if you want to achieve an appropriate behavior:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Set &lt;em&gt;FormStyle&lt;/em&gt; property of your form to &lt;strong&gt;&lt;em&gt;fsStayOnTop&lt;/em&gt;&lt;/strong&gt; (this helps us to hold our window on top of the rest windows of our application);  &lt;/li&gt;&lt;li&gt;Write next piece of code:&lt;/li&gt;&lt;/ol&gt; &lt;pre color="white"&gt;&lt;div&gt;&lt;pre style="background-color: white;"&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  TfrmSamples &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; class(TForm)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 3&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; ... &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 4&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  public&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 5&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;procedure&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FormDeactivate(Sender: TObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 6&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Public declarations &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 7&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 8&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt; 9&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; ... &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;10&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;11&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;procedure&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; TfrmSamples.FormCreate(Sender: TObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;12&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;13&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; force floating window to be on top &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;14&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  Application.OnDeactivate :&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FormDeactivate;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;15&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;16&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;17&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;procedure&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; TfrmSamples.FormShow(Sender: TObject);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;18&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  ShowWindow(Application.Handle, SW_HIDE);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;20&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;21&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;22&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;procedure&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; TfrmSamples.FormDeactivate;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;  Application.BringToFront;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;25&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;                                                                &lt;p&gt;According to the Borland help &lt;span style="font-style: italic;"&gt;TApplication.OnDeactivate&lt;/span&gt; event occurs when an application becomes inactive therefore if we want to keep our window above all other applications (windows) then this is exec place to act.&lt;/p&gt;&lt;p&gt;That's all! Quick and easy.&lt;/p&gt;If you have some other solution of this task please post them in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-4271705017273334892?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/4271705017273334892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=4271705017273334892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4271705017273334892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4271705017273334892'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/how-to-remove-application-button-from.html' title='How to remove an application button from the taskbar in Delphi?'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-4439838698265135864</id><published>2008-04-08T13:45:00.001+07:00</published><updated>2008-04-08T13:45:58.336+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to mounting windows in Ubuntu 6.x</title><content type='html'>&lt;p&gt;If you’re &lt;a href="http://www.lifehacker.com/software/top/hack-attack-how-to-tripleboot-windows-xp-vista-and-ubuntu-193474.php"&gt;triple (or dual) booting Windows and Ubuntu&lt;/a&gt;, the Ars Geek web site’s got the lowdown on how to mount a read/write Windows NTFS drive.This approach uses an alternate method to the one Adam cited in his &lt;a href="http://www.lifehacker.com/software/top/hack-attack-top-10-ubuntu-apps-and-tweaks-195437.php"&gt;top 10 Ubuntu apps and hacks&lt;/a&gt; article. I’ve yet to build my Ubuntu workstation, so I wasn’t able to try this myself; also, NTFS support is still experimental so proceed with caution and a full-on working backup. &lt;span class="byline"&gt;— Gina Trapani&lt;/span&gt;&lt;/p&gt; &lt;a href="http://www.arsgeek.com/?p=585"&gt;Ubuntu tricks - how to mount your Windows partition and make it read/writable&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-4439838698265135864?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/4439838698265135864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=4439838698265135864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4439838698265135864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4439838698265135864'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/how-to-mounting-windows-in-ubuntu-6x.html' title='How to mounting windows in Ubuntu 6.x'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-7358355433541431405</id><published>2008-04-08T13:26:00.000+07:00</published><updated>2008-04-08T13:36:55.315+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How To install Internet Gateway in Ubuntu with squid</title><content type='html'>&lt;em class="info"&gt;&lt;/em&gt;Use apt for instalation.user@server:~$ sudo apt-get install squid&lt;div class="snap_preview"&gt; &lt;p&gt;please, backup file configuration (original)&lt;/p&gt; &lt;p&gt;user@server:~$ cp /etc/squid/squid.conf /etc/squid/squid.conf.backup&lt;/p&gt; &lt;p&gt;configuration file  /etc/squid/squid.conf&lt;/p&gt; &lt;p&gt;user@server:~$ sudo nano /etc/squid/squid.conf&lt;/p&gt; &lt;p&gt;http_port 3128 /* listening port squid */&lt;/p&gt; &lt;p&gt;cache_dir ufs /var/spool/squid 5120 16 256 /*locate saving cache */&lt;/p&gt; &lt;p&gt;cache_mem 8 MB /* max memory for squid  in memory cache*/&lt;/p&gt; &lt;p&gt;acl our_networks src 192.168.1.0/24 /* access list network client proxy is permitted */&lt;/p&gt; &lt;p&gt;http_access allow our_networks /* allow http access from network client */&lt;/p&gt; &lt;p&gt;cache_mgr webmaster /* configure cache manager */&lt;/p&gt; &lt;p&gt;visible_hostname proxy.network.net /* hostname in error message */&lt;/p&gt; &lt;p&gt;forwarded_for on /* configure transoarabt if anonymous proxy diset off */&lt;/p&gt; &lt;p&gt;another configuration is default. press Ctrl+O to saving,  Ctrl+X for exit.&lt;/p&gt; &lt;p&gt;make directory cache with this command&lt;/p&gt; &lt;p&gt;user@server:~$ sudo squid -z&lt;/p&gt; &lt;p&gt;Restart Squid with comman&lt;/p&gt; &lt;p&gt;user@server:~$ sudo /etc/init.d/squid restart&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-7358355433541431405?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/7358355433541431405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=7358355433541431405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7358355433541431405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7358355433541431405'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/how-to-install-internet-gateway-in.html' title='How To install Internet Gateway in Ubuntu with squid'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-4099736452222494811</id><published>2008-04-08T12:45:00.000+07:00</published><updated>2008-04-08T12:46:37.460+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>how to 
connect your Delphi application to an Access database.</title><content type='html'>&lt;pre&gt;&lt;span style="font-size:100%;"&gt;Alright gang.  Here is my most straight forward explanation of how to&lt;br /&gt;connect your Delphi application to an Access 2.0 database.  With this&lt;br /&gt;method, I have connected to Access 2.0 databases, and been able to read and&lt;br /&gt;write records to my hearts content.  NOTE: You MUST have the proper ODBC&lt;br /&gt;drivers.  If you don't, this will not work!&lt;br /&gt;&lt;br /&gt;REQUIRED DRIVERS:&lt;br /&gt;     ODBCJT16.DLL &lt;br /&gt;     ODBCINST.DLL  &lt;br /&gt;     ODBCCTL16.DLL &lt;br /&gt;     MSAJT200.DLL  &lt;br /&gt;     MSJETERR.DLL &lt;br /&gt;     MSJETINT.DLL   &lt;br /&gt;&lt;br /&gt;To the best of my knowledge, these are all of the drivers that are above and&lt;br /&gt;beyond your base ODBC drivers.  You should be able to obtain these from MS&lt;br /&gt;on their FTP/WWW site, however I do not know exact directories.  My company&lt;br /&gt;is a MS Solutions Provider, and we obtained these drivers on one of the many&lt;br /&gt;CDs we received from MS.&lt;br /&gt;&lt;br /&gt;Now for the meat of this posting:&lt;br /&gt;&lt;br /&gt;To access a database via ODBC, you must first create an ODBC connection to&lt;br /&gt;the database.&lt;br /&gt;  1) Open Control Panel, and then select ODBC.&lt;br /&gt;  2) When the Data Sources dialog appears, select Add.&lt;br /&gt;  3) If you have installed all of the drivers properly, you should see the&lt;br /&gt;following Access drivers:&lt;br /&gt;        Access Data (*.mdb)&lt;br /&gt;        Access Files(*.mdb)&lt;br /&gt;        Microsoft Access Driver (*.mdb)&lt;br /&gt;  4) The one you MUST choose is the third one, Microsoft Access Driver. &lt;br /&gt;Choosing any of the others will not work.&lt;br /&gt;  5) You will then be presented with the ODBC Microsoft Access 2.0 Setup&lt;br /&gt;dialog.  Fill this in with the information regarding the database to which&lt;br /&gt;you wish to connect.&lt;br /&gt;  6) Save the settings and then exit all the way out of Control Panel.&lt;br /&gt;&lt;br /&gt;After having made a proper connection to the database with ODBC, the rest is&lt;br /&gt;quite simple.&lt;br /&gt;  7) Open BDE Config.&lt;br /&gt;  8) Choose New ODBC Driver.&lt;br /&gt;  9) Give your SQL link a name&lt;br /&gt;  10) From the Default ODBC Driver combo box, you must choose the Microsoft&lt;br /&gt;Access Driver, just the same as you did in the ODBC setup.  Do not choose&lt;br /&gt;Access Data/Files drivers.&lt;br /&gt;  11) If everything is setup properly, the name of your database should&lt;br /&gt;appear in the Default Data Source Name combo box.  Select it now.&lt;br /&gt;  12) Select OK, you will be back to the main dialog for BDE Config. &lt;br /&gt;Select the aliases tab.&lt;br /&gt;  13) Create a new alias, using the SQL link that you just created (it will&lt;br /&gt;start with ODBC_) as your Alias Type.&lt;br /&gt;  14) Now save and exit from BDE Config.&lt;br /&gt;&lt;br /&gt;You should now be able to get to you Access 2.0 database with both read and&lt;br /&gt;write instructions.&lt;br /&gt;&lt;br /&gt;And finally...&lt;br /&gt;I must say that having got to Access, via ODBC, you will probably wish you&lt;br /&gt;hadn't.  It is sssllllooowww.  Anytime we start adding layers, it gets&lt;br /&gt;slower and slower.  Normally, I would recommend staying away from VB like&lt;br /&gt;the plague (I'm an old C++ hacker of many years, and the term BASIC makes me&lt;br /&gt;shudder).  However, at this point in time, the best way to use Access&lt;br /&gt;databases is through either Access or VB.  Microsoft is very close-mouthed&lt;br /&gt;about the structure of Access databases, and there is no indication that&lt;br /&gt;they are planning to change ("You either use VB/Access or we'll make you pay&lt;br /&gt;through the ODBC monster!").  Sorry, I digress.  My recommendation, if you&lt;br /&gt;absolutely MUST use Access, then use VB.  Otherwise, migrate your database&lt;br /&gt;to a more open system (Paradox,dBase/FoxPro,anything you can get a native&lt;br /&gt;engine), and use Delphi.&lt;br /&gt;&lt;br /&gt;I hope this helps those who are still having problems accessing Access&lt;br /&gt;databases via ODBC.  If I've left anything out, I would appreciate&lt;br /&gt;commentary (no flames please...whine whine ;)&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-4099736452222494811?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/4099736452222494811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=4099736452222494811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4099736452222494811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/4099736452222494811'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/how-to-connect-your-delphi-application.html' title='how to &#xA;connect your Delphi application to an Access database.'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-3237669878858982085</id><published>2008-04-08T11:39:00.000+07:00</published><updated>2008-04-08T11:41:06.599+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Export DBrid 2 Excel Without OLE</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span class="sourcecode"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;{&lt;br /&gt; Exporting a DBGrid to excel without OLE&lt;br /&gt;&lt;br /&gt; I develop software and about 95% of my work deals with databases.&lt;br /&gt; I enjoied the advantages of using Microsoft Excel in my projects&lt;br /&gt; in order to make reports but recently I decided to convert myself&lt;br /&gt; to the free OpenOffice suite.&lt;br /&gt; I faced with the problem of exporting data to Excel without having&lt;br /&gt; Office installed on my computer.&lt;br /&gt; The first solution was to create directly an Excel format compatible file:&lt;br /&gt; this solution is about 50 times faster than the OLE solution but there&lt;br /&gt; is a problem: the output file is not compatible with OpenOffice.&lt;br /&gt; I wanted a solution which was compatible with each "DataSet";&lt;br /&gt; at the same time I wanted to export only the dataset data present in&lt;br /&gt; a DBGrid and not all the "DataSet".&lt;br /&gt; Finally I obtained this solution which satisfied my requirements.&lt;br /&gt; I hope that it will be usefull for you too.&lt;br /&gt;&lt;br /&gt; First of all you must import the ADOX type library&lt;br /&gt; which will be used to create the Excel file and its&lt;br /&gt; internal structure: in the Delphi IDE:&lt;br /&gt;&lt;br /&gt; 1)Project-&gt;Import Type Library:&lt;br /&gt; 2)Select "Microsoft ADO Ext. for DDL and Security"&lt;br /&gt; 3)Uncheck "Generate component wrapper" at the bottom&lt;br /&gt; 4)Rename the class names (TTable, TColumn, TIndex, TKey, TGroup, TUser, TCatalog) in&lt;br /&gt;   (TXTable, TXColumn, TXIndex, TXKey, TXGroup, TXUser, TXCatalog)&lt;br /&gt;   in order to avoid conflicts with the already present TTable component.&lt;br /&gt; 5)Select the Unit dir name and press "Create Unit".&lt;br /&gt;   It will be created a file named AOX_TLB.&lt;br /&gt;   Include ADOX_TLB in the "uses" directive inside the file in which you want&lt;br /&gt;   to use ADOX functionality.&lt;br /&gt;&lt;br /&gt; That is all. Let's go now with the implementation:&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;unit &lt;/b&gt;DBGridExportToExcel;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt; &lt;/b&gt;Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,&lt;br /&gt; ExtCtrls, StdCtrls, ComCtrls, DB, IniFiles, Buttons, dbgrids, ADOX_TLB, ADODB;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;type &lt;/b&gt;TScrollEvents = &lt;b&gt;class&lt;br /&gt;      &lt;/b&gt;BeforeScroll_Event: TDataSetNotifyEvent;&lt;br /&gt;      AfterScroll_Event: TDataSetNotifyEvent;&lt;br /&gt;      AutoCalcFields_Property: Boolean;&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure &lt;/b&gt;DisableDependencies(DataSet: TDataSet; &lt;b&gt;var &lt;/b&gt;ScrollEvents: TScrollEvents);&lt;br /&gt;&lt;b&gt;procedure &lt;/b&gt;EnableDependencies(DataSet: TDataSet; ScrollEvents: TScrollEvents);&lt;br /&gt;&lt;b&gt;procedure &lt;/b&gt;DBGridToExcelADO(DBGrid: TDBGrid; FileName: &lt;b&gt;string&lt;/b&gt;; SheetName: &lt;b&gt;string&lt;/b&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;implementation&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//Support procedures: I made that in order to increase speed in&lt;br /&gt;//the process of scanning large amounts&lt;br /&gt;//of records in a dataset&lt;br /&gt;&lt;br /&gt;//we make a call to the "DisableControls" procedure and then disable the "BeforeScroll" and&lt;br /&gt;//"AfterScroll" events and the "AutoCalcFields" property.&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;DisableDependencies(DataSet: TDataSet; &lt;b&gt;var &lt;/b&gt;ScrollEvents: TScrollEvents);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;    with &lt;/b&gt;DataSet &lt;b&gt;do&lt;br /&gt;         begin&lt;br /&gt;              &lt;/b&gt;DisableControls;&lt;br /&gt;              ScrollEvents := TScrollEvents.Create();&lt;br /&gt;              &lt;b&gt;with &lt;/b&gt;ScrollEvents &lt;b&gt;do&lt;br /&gt;                   begin&lt;br /&gt;                        &lt;/b&gt;BeforeScroll_Event := BeforeScroll;&lt;br /&gt;                        AfterScroll_Event := AfterScroll;&lt;br /&gt;                        AutoCalcFields_Property := AutoCalcFields;&lt;br /&gt;                        BeforeScroll := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt;                        AfterScroll := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt;                        AutoCalcFields := False;&lt;br /&gt;                   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;         &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//we make a call to the "EnableControls" procedure and then restore&lt;br /&gt;// the "BeforeScroll" and "AfterScroll" events and the "AutoCalcFields" property.&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;EnableDependencies(DataSet: TDataSet; ScrollEvents: TScrollEvents);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;    with &lt;/b&gt;DataSet &lt;b&gt;do&lt;br /&gt;         begin&lt;br /&gt;              &lt;/b&gt;EnableControls;&lt;br /&gt;              &lt;b&gt;with &lt;/b&gt;ScrollEvents &lt;b&gt;do&lt;br /&gt;                   begin&lt;br /&gt;                        &lt;/b&gt;BeforeScroll := BeforeScroll_Event;&lt;br /&gt;                        AfterScroll := AfterScroll_Event;&lt;br /&gt;                        AutoCalcFields := AutoCalcFields_Property;&lt;br /&gt;                   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;         &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//This is the procedure which make the work:&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;DBGridToExcelADO(DBGrid: TDBGrid; FileName: &lt;b&gt;string&lt;/b&gt;; SheetName: &lt;b&gt;string&lt;/b&gt;);&lt;br /&gt;&lt;b&gt;var&lt;br /&gt; &lt;/b&gt;cat: _Catalog;&lt;br /&gt; tbl: _Table;&lt;br /&gt; col: _Column;&lt;br /&gt; i: integer;&lt;br /&gt; ADOConnection: TADOConnection;&lt;br /&gt; ADOQuery: TADOQuery;&lt;br /&gt; ScrollEvents: TScrollEvents;&lt;br /&gt; SavePlace: TBookmark;&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt; &lt;/b&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//&lt;br /&gt; //WorkBook creation (database)&lt;br /&gt; &lt;/i&gt;&lt;/span&gt;cat := CoCatalog.Create;&lt;br /&gt; cat._Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' + FileName + ';Extended Properties=Excel 8.0');&lt;br /&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//WorkSheet creation (table)&lt;br /&gt; &lt;/i&gt;&lt;/span&gt;tbl := CoTable.Create;&lt;br /&gt; tbl.Set_Name(SheetName);&lt;br /&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//Columns creation (fields)&lt;br /&gt; &lt;/i&gt;&lt;/span&gt;DBGrid.DataSource.DataSet.First;&lt;br /&gt; &lt;b&gt;with &lt;/b&gt;DBGrid.Columns &lt;b&gt;do&lt;br /&gt;   begin&lt;br /&gt;     for &lt;/b&gt;i := 0 &lt;b&gt;to &lt;/b&gt;Count - 1 &lt;b&gt;do&lt;br /&gt;       if &lt;/b&gt;Items[i].Visible &lt;b&gt;then&lt;br /&gt;       begin&lt;br /&gt;         &lt;/b&gt;col := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt;         col := CoColumn.Create;&lt;br /&gt;         &lt;b&gt;with &lt;/b&gt;col &lt;b&gt;do&lt;br /&gt;           begin&lt;br /&gt;             &lt;/b&gt;Set_Name(Items[i].Title.Caption);&lt;br /&gt;             Set_Type_(adVarWChar);&lt;br /&gt;           &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;         &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//add column to table&lt;br /&gt;         &lt;/i&gt;&lt;/span&gt;tbl.Columns.Append(col, adVarWChar, 20);&lt;br /&gt;       &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//add table to database&lt;br /&gt; &lt;/i&gt;&lt;/span&gt;cat.Tables.Append(tbl);&lt;br /&gt;&lt;br /&gt; col := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt; tbl := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt; cat := &lt;b&gt;nil&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 128);"&gt;&lt;i&gt;//exporting&lt;br /&gt; &lt;/i&gt;&lt;/span&gt;ADOConnection := TADOConnection.Create(&lt;b&gt;nil&lt;/b&gt;);&lt;br /&gt; ADOConnection.LoginPrompt := False;&lt;br /&gt; ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' + FileName + ';Extended Properties=Excel 8.0';&lt;br /&gt; ADOQuery := TADOQuery.Create(&lt;b&gt;nil&lt;/b&gt;);&lt;br /&gt; ADOQuery.Connection := ADOConnection;&lt;br /&gt; ADOQuery.SQL.Text := 'Select * from [' + SheetName + '$]';&lt;br /&gt; ADOQuery.Open;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; DisableDependencies(DBGrid.DataSource.DataSet, ScrollEvents);&lt;br /&gt; SavePlace := DBGrid.DataSource.DataSet.GetBookmark;&lt;br /&gt; &lt;b&gt;try&lt;br /&gt; with &lt;/b&gt;DBGrid.DataSource.DataSet &lt;b&gt;do&lt;br /&gt;   begin&lt;br /&gt;     &lt;/b&gt;First;&lt;br /&gt;     &lt;b&gt;while not &lt;/b&gt;Eof &lt;b&gt;do&lt;br /&gt;       begin&lt;br /&gt;         &lt;/b&gt;ADOQuery.Append;&lt;br /&gt;         &lt;b&gt;with &lt;/b&gt;DBGrid.Columns &lt;b&gt;do&lt;br /&gt;           begin&lt;br /&gt;             &lt;/b&gt;ADOQuery.Edit;&lt;br /&gt;             &lt;b&gt;for &lt;/b&gt;i := 0 &lt;b&gt;to &lt;/b&gt;Count - 1 &lt;b&gt;do&lt;br /&gt;               if &lt;/b&gt;Items[i].Visible &lt;b&gt;then&lt;br /&gt;                 begin&lt;br /&gt;                   &lt;/b&gt;ADOQuery.FieldByName(Items[i].Title.Caption).AsString := FieldByName(Items[i].FieldName).AsString;&lt;br /&gt;                 &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;             ADOQuery.Post;&lt;br /&gt;           &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;         Next;&lt;br /&gt;       &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;   &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;finally&lt;br /&gt; &lt;/b&gt;DBGrid.DataSource.DataSet.GotoBookmark(SavePlace);&lt;br /&gt; DBGrid.DataSource.DataSet.FreeBookmark(SavePlace);&lt;br /&gt; EnableDependencies(DBGrid.DataSource.DataSet, ScrollEvents);&lt;br /&gt;&lt;br /&gt; ADOQuery.Close;&lt;br /&gt; ADOConnection.Close;&lt;br /&gt;&lt;br /&gt; ADOQuery.Free;&lt;br /&gt; ADOConnection.Free;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-3237669878858982085?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/3237669878858982085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=3237669878858982085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3237669878858982085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3237669878858982085'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/export-dbrid-2-excel-without-ole.html' title='Export DBrid 2 Excel Without OLE'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-1844972329200416207</id><published>2008-04-08T11:36:00.000+07:00</published><updated>2008-04-08T11:37:53.678+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>cCreates a database on a Interbase-Server at run-time.</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span class="sourcecode"&gt; &lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;{&lt;br /&gt; This unit creates a database on a Interbase-Server at run-time.&lt;br /&gt; The IBConsole is no longer needed.&lt;br /&gt; You can execute an SQL script to create tables.&lt;br /&gt; Try it out!&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;unit &lt;/b&gt;Unit1;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;interface&lt;br /&gt;&lt;br /&gt;uses&lt;br /&gt;  &lt;/b&gt;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br /&gt;  Dialogs, StdCtrls, ZTransact, ZIbSqlTr, DB, ZQuery, ZIbSqlQuery,&lt;br /&gt;  ZConnect, ZIbSqlCon;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;type&lt;br /&gt;  &lt;/b&gt;TForm1 = &lt;b&gt;class&lt;/b&gt;(TForm)&lt;br /&gt;    Button1: TButton;&lt;br /&gt;    Memo1: TMemo;&lt;br /&gt;    Button2: TButton;&lt;br /&gt;    ZIbSqlQuery1: TZIbSqlQuery;&lt;br /&gt;    ZIbSqlTransact1: TZIbSqlTransact;&lt;br /&gt;    ZIbSqlDatabase1: TZIbSqlDatabase;&lt;br /&gt;    Button3: TButton;&lt;br /&gt;    &lt;b&gt;procedure &lt;/b&gt;Button1Click(Sender: TObject);   &lt;span style="color:#000080;"&gt;&lt;i&gt;//  : Create Database&lt;br /&gt;    &lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;Button2Click(Sender: TObject);   &lt;span style="color:#000080;"&gt;&lt;i&gt;//  : SQL-Anweisung&lt;br /&gt;    &lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;Button3Click(Sender: TObject);   &lt;span style="color:#000080;"&gt;&lt;i&gt;//  : Drop Database&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;&lt;b&gt;private&lt;br /&gt;   &lt;/b&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;&lt;b&gt;public&lt;br /&gt;   &lt;/b&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;var&lt;br /&gt;  &lt;/b&gt;Form1: TForm1;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;implementation&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;{$R *.dfm}&lt;br /&gt;&lt;br /&gt;// Creating the database&lt;br /&gt;&lt;br /&gt;//---------------------------------------------------------------------&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;  &lt;/b&gt;ZIbSqlDatabase1.Database := '&lt;&lt;pfad&gt;&gt;';&lt;span style="color:#000080;"&gt;&lt;i&gt;// Path to Database&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;ZIbSqlDatabase1.Host := 'testserver';&lt;br /&gt;  ZIbSqlDatabase1.Password := 'masterkey';&lt;br /&gt;  ZIbSqlDatabase1.Login := 'SYSDBA';&lt;br /&gt;  ZIbSqlDatabase1.CreateDatabase('');&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;// Execute the SQL-Script in the memo&lt;br /&gt;&lt;br /&gt;//----------------------------------------------------------------------&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.Button2Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;  &lt;/b&gt;ZIbSqlDatabase1.Database := '&lt;&lt;pfad&gt;&gt;'; &lt;span style="color:#000080;"&gt;&lt;i&gt;// Path to Database&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;ZIbSqlDatabase1.Host := 'testserver';&lt;br /&gt;  ZIbSqlDatabase1.Password := 'masterkey';&lt;br /&gt;  ZIbSqlDatabase1.Login := 'SYSDBA';&lt;br /&gt;  ZIbSqlQuery1.SQL.Clear;&lt;br /&gt;  ZIbSqlQuery1.SQL.AddStrings(memo1.Lines);&lt;br /&gt;  ZIbSqlQuery1.ExecSQL;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000080;"&gt;&lt;i&gt;&lt;br /&gt;//---------------------------------------------------------------------&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.Button3Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;  &lt;/b&gt;ZIbSqlDatabase1.Database := '&lt;&lt;pfad&gt;&gt;'; &lt;span style="color:#000080;"&gt;&lt;i&gt;// Path to Database&lt;br /&gt;  &lt;/i&gt;&lt;/span&gt;ZIbSqlDatabase1.Host := 'testserver';&lt;br /&gt;  ZIbSqlDatabase1.Password := 'masterkey';&lt;br /&gt;  ZIbSqlDatabase1.Login := 'SYSDBA';&lt;br /&gt;  ZIbSqlDatabase1.DropDatabase;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-1844972329200416207?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/1844972329200416207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=1844972329200416207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/1844972329200416207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/1844972329200416207'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/ccreates-database-on-interbase-server.html' title='cCreates a database on a Interbase-Server at run-time.'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-487383161307871092</id><published>2008-04-08T10:42:00.000+07:00</published><updated>2008-04-08T10:43:16.765+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Connection Database In SQL Server 2000</title><content type='html'>&lt;span class="sourcecode"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#000000;"&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;  &lt;/b&gt;ADOConnection1.ConnectionString := 'Server=Hostname;DataBase=DatabaseName';&lt;br /&gt;  ADOConnection1.Open('UserName', 'Password');&lt;br /&gt;  ADOConnection1.Connected := True;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-487383161307871092?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/487383161307871092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=487383161307871092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/487383161307871092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/487383161307871092'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/connection-database-in-sql-server-2000.html' title='Connection Database In SQL Server 2000'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-9195084731412673402</id><published>2008-04-08T10:29:00.000+07:00</published><updated>2008-04-08T10:31:10.458+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Add User Login in SQL Server 2000 with ADO</title><content type='html'>&lt;span class="sourcecode"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#000000;"&gt;&lt;b&gt;procedure &lt;/b&gt;TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;br /&gt;  &lt;/b&gt;ADOConnection1.Connected := True;&lt;br /&gt;  ADOCommand1.CommandText  := 'Exec SP_AddLogin ' + QuotedStr('UserName') +&lt;br /&gt;    ',' + QuotedStr('Password') + ',' + QuotedStr('Database Name') + ',' +&lt;br /&gt;    QuotedStr('English') + ';';&lt;br /&gt;  ADOCommand1.Execute;&lt;br /&gt;&lt;b&gt;end&lt;/b&gt;;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-9195084731412673402?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/9195084731412673402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=9195084731412673402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/9195084731412673402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/9195084731412673402'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/add-user-login-in-sql-server-2000-with.html' title='Add User Login in SQL Server 2000 with ADO'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-7363506109253731257</id><published>2008-04-08T09:16:00.000+07:00</published><updated>2008-04-08T09:17:42.291+07:00</updated><title type='text'>Select a random data record</title><content type='html'>&lt;span style="font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  Randomize;&lt;br /&gt;  Table1.First;&lt;br /&gt;  Table1.MoveBy(Random(Table1.RecordCount));&lt;br /&gt;&lt;b&gt;end;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-7363506109253731257?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/7363506109253731257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=7363506109253731257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7363506109253731257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7363506109253731257'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/select-random-data-record.html' title='Select a random data record'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-7852830129620009989</id><published>2008-04-08T09:10:00.000+07:00</published><updated>2008-04-08T09:11:22.355+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Create a table including an AutoInc field (ADO/MSSQL)</title><content type='html'>D&lt;br /&gt;uses AdoDB;&lt;br /&gt;var&lt;br /&gt; q: TAdoQuery;&lt;br /&gt; db: TAdoConnection;&lt;br /&gt;begin&lt;br /&gt;   q := TADOQuery.Create(nil);&lt;br /&gt;   q.Connection := db;&lt;br /&gt;   q.Close;&lt;br /&gt;   q.SQL.Clear;&lt;br /&gt;   q.SQL.Add('Create Table TABLENAME (ID COUNTER PRIMARY KEY, MYTEXT1 String, MYTEXT2 String);');&lt;br /&gt;   q.Prepared := True;&lt;br /&gt;   try&lt;br /&gt;     q.ExecSQL;&lt;br /&gt;   except&lt;br /&gt;end;&lt;br /&gt;   q.Free;&lt;br /&gt;end;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-7852830129620009989?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/7852830129620009989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=7852830129620009989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7852830129620009989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/7852830129620009989'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/create-table-including-autoinc-field.html' title='Create a table including an AutoInc field (ADO/MSSQL)'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-6161728705560783953</id><published>2008-04-08T08:35:00.000+07:00</published><updated>2008-04-08T08:36:05.997+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Select all Fields in a TDBGrid</title><content type='html'>&lt;span style="font-size: 12px;"&gt;&lt;/span&gt;&lt;b&gt;function&lt;/b&gt; GridSelectAll(Grid: TDBGrid): Longint;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  Result := 0;&lt;br /&gt;  Grid.SelectedRows.Clear;&lt;br /&gt;  with Grid.DataSource.DataSet do&lt;br /&gt;  &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;    First;&lt;br /&gt;    DisableControls;&lt;br /&gt;    try&lt;br /&gt;      &lt;b&gt;while&lt;/b&gt; not EOF do&lt;br /&gt;      &lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;        Grid.SelectedRows.CurrentRowSelected := True;&lt;br /&gt;        Inc(Result);&lt;br /&gt;        Next;&lt;br /&gt;      &lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;finally&lt;/b&gt;&lt;br /&gt;      EnableControls;&lt;br /&gt;    &lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TForm1.Button1Click(Sender: TObject);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  GridSelectAll(DBGrid1);&lt;br /&gt;&lt;b&gt;end;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-6161728705560783953?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/6161728705560783953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=6161728705560783953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6161728705560783953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6161728705560783953'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/select-all-fields-in-tdbgrid.html' title='Select all Fields in a TDBGrid'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-24353937128348460</id><published>2008-04-08T08:31:00.000+07:00</published><updated>2008-04-08T08:33:11.163+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Create DBGrid with colored cells</title><content type='html'>&lt;div id="conttitle"&gt;&lt;br /&gt;&lt;/div&gt;  Use OnDrawColumnCell event of DBGrid component with the following code.&lt;br /&gt;This example will paint each cell to green color, if these cells are odd.  &lt;pre&gt;&lt;code&gt;&lt;br /&gt;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;&lt;br /&gt; DataCol: Integer; Column: TColumn; State: TGridDrawState);&lt;br /&gt;var&lt;br /&gt; HoldColor: TColor;&lt;br /&gt;begin&lt;br /&gt; HoldColor:=DBGrid1.Canvas.Brush.Color;&lt;br /&gt; if Column.FieldName='EmpNo' then&lt;br /&gt;   if (Column.Field.AsInteger mod 2 &lt;&gt; 0) then&lt;br /&gt;   begin&lt;br /&gt;     DBGrid1.Canvas.Brush.Color:=clGreen;&lt;br /&gt;     DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);&lt;br /&gt;     DBGrid1.Canvas.Brush.Color:=HoldColor;&lt;br /&gt;   end;&lt;br /&gt;end;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-24353937128348460?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/24353937128348460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=24353937128348460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/24353937128348460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/24353937128348460'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/create-dbgrid-with-colored-cells.html' title='Create DBGrid with colored cells'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-6089558067107970600</id><published>2008-04-08T08:29:00.000+07:00</published><updated>2008-04-08T08:31:00.412+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Create DBGrid that shows images</title><content type='html'>First of all set DefaultDrawing flag of the DBGrid to the False. Then add the following code to the DBGrid's OnDrawColumnCell event: &lt;pre&gt;&lt;code&gt;&lt;br /&gt;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;&lt;br /&gt; Field: TField; State: TGridDrawState);&lt;br /&gt;var&lt;br /&gt; Bmp: TBitmap;&lt;br /&gt;begin&lt;br /&gt; if Field is TGraphicField then&lt;br /&gt; begin&lt;br /&gt;   try&lt;br /&gt;     Bmp:=TBitmap.Create;&lt;br /&gt;     Bmp.Assign(Field);&lt;br /&gt;     DBGrid1.Canvas.StretchDraw(Rect, Bmp);&lt;br /&gt;   finally&lt;br /&gt;     Bmp.Free;&lt;br /&gt;   end&lt;br /&gt; end&lt;br /&gt; else&lt;br /&gt;   DBGrid1.DefaultDrawDataCell(Rect, Field, State);&lt;br /&gt;end;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-6089558067107970600?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/6089558067107970600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=6089558067107970600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6089558067107970600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6089558067107970600'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/create-dbgrid-that-shows-images.html' title='Create DBGrid that shows images'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-3383526529977544112</id><published>2008-04-08T08:18:00.000+07:00</published><updated>2008-04-08T08:26:54.054+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>Multiselection in DBGrid</title><content type='html'>&lt;div id="conttitle"&gt;&lt;span style="font-size:100%;"&gt;1.Set dgMultiSelect option of DBGrid to true and put next code to the Button.OnClick event: &lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;&lt;br /&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;var&lt;br /&gt;X: Word;&lt;br /&gt;TempBookmark: TBookMark;&lt;br /&gt;begin&lt;br /&gt;with DBGrid1.DataSource.DataSet do&lt;br /&gt;begin&lt;br /&gt; DisableControls;&lt;br /&gt; with DBGrid1.SelectedRows do&lt;br /&gt;   if Count&lt;&amp;amp;gt0 then&lt;br /&gt;    begin&lt;br /&gt;     TempBookmark:=GetBookmark;&lt;br /&gt;       for X:=0 to Count-1 do&lt;br /&gt;         begin &lt;br /&gt;          if IndexOf(Items[X])&amp;amp;gt-1 then&lt;br /&gt;           begin&lt;br /&gt;           Bookmark:=Items[X];&lt;br /&gt;           ShowMessage(Fields[1].AsString);&lt;br /&gt;           end;&lt;br /&gt;          end;&lt;br /&gt;    end;&lt;br /&gt;  GotoBookmark(TempBookmark);&lt;br /&gt;  FreeBookmark(TempBookmark);&lt;br /&gt; EnableControls;  end; end; &lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-3383526529977544112?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/3383526529977544112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=3383526529977544112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3383526529977544112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/3383526529977544112'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/multiselection-in-dbgrid.html' title='Multiselection in DBGrid'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-6349909369829049001</id><published>2008-04-08T08:11:00.001+07:00</published><updated>2008-04-09T08:16:15.265+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><title type='text'>Add a Row Number in your DBGrid</title><content type='html'>&lt;span style="color:blue;"&gt;&lt;i&gt;{&lt;br /&gt;1. create new blank field &lt;b&gt;in&lt;/b&gt; dbgrid&lt;br /&gt;2. rename the title with 'No:'&lt;br /&gt;3. put this code &lt;b&gt;in&lt;/b&gt; OnDrawColumncell&lt;br /&gt;4. Now your Grid has a row number&lt;br /&gt;}&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;procedure&lt;/b&gt; TForm1.DBGrid1DrawColumnCell(Sender: TObject; &lt;b&gt;const&lt;/b&gt; Rect: TRect;&lt;br /&gt;DataCol: Integer; Column: TColumn; State: TGridDrawState);&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;&lt;b&gt;if&lt;/b&gt; DataSource1.DataSet.RecNo &gt; 0 &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;&lt;b&gt;begin&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;if&lt;/b&gt; Column.Title.Caption = 'No:' &lt;b&gt;then&lt;/b&gt;&lt;br /&gt;    DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));&lt;br /&gt;&lt;b&gt;end;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;end;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-6349909369829049001?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/6349909369829049001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=6349909369829049001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6349909369829049001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/6349909369829049001'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/add-row-number-in-your-dbgrid.html' title='Add a Row Number in your DBGrid'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8322476815534112114.post-2959310692237015886</id><published>2008-04-07T17:13:00.000+07:00</published><updated>2008-04-07T17:16:45.215+07:00</updated><title type='text'>Hello Word</title><content type='html'>Hello Word&lt;br /&gt;This is first Message from me&lt;br /&gt;so wait for the next article...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8322476815534112114-2959310692237015886?l=rikasang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rikasang.blogspot.com/feeds/2959310692237015886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8322476815534112114&amp;postID=2959310692237015886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2959310692237015886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8322476815534112114/posts/default/2959310692237015886'/><link rel='alternate' type='text/html' href='http://rikasang.blogspot.com/2008/04/hello-word.html' title='Hello Word'/><author><name>rikasang</name><uri>http://www.blogger.com/profile/00322048945762130168</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_EKd_dPxjNU4/SD0hjlJ_XDI/AAAAAAAAAAU/CxKcBqpMhmc/S220/rs-2.gif'/></author><thr:total>0</thr:total></entry></feed>
