<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Altaifa Software Developer</title>
	<atom:link href="http://altaifa.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://altaifa.wordpress.com</link>
	<description>Menyediakan software sesuai kebutuhan Anda</description>
	<lastBuildDate>Thu, 15 Sep 2011 05:54:42 +0000</lastBuildDate>
	<language>id</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='altaifa.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Altaifa Software Developer</title>
		<link>http://altaifa.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://altaifa.wordpress.com/osd.xml" title="Altaifa Software Developer" />
	<atom:link rel='hub' href='http://altaifa.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Free Ebook/Gratis Pembuatan Produk Aplikasi Database dengan Delphi 2010 (PDF)</title>
		<link>http://altaifa.wordpress.com/2011/06/14/free-ebookgratis-pembuatan-produk-aplikasi-database-dengan-delphi-2010-pdf/</link>
		<comments>http://altaifa.wordpress.com/2011/06/14/free-ebookgratis-pembuatan-produk-aplikasi-database-dengan-delphi-2010-pdf/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 07:52:01 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tips dan Trik Delphi]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=258</guid>
		<description><![CDATA[Dalam buku ini saya berusaha tetap berkonsentrasi pada penjelasan teknik pembuatan aplikasi database itu sendiri, daripada membahas bagaimana menguasai Delphi 2010 yang cakupannya tentu lebih luas. Teknik pendukung saya bahas ketika dalam kasus tertentu diperlukan. Untuk membaca buku ini, dibutuhkan pengetahuan tentang dasar pemrograman Delphi. Saya menekankan pada aspek produktivitas daripada pendalaman konsep pemrograman. Sebab [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=258&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://altaifa.files.wordpress.com/2011/06/cover.png?w=223" alt="" /><br />
Dalam buku ini saya berusaha tetap berkonsentrasi pada penjelasan teknik pembuatan aplikasi database itu sendiri, daripada membahas bagaimana menguasai Delphi 2010 yang cakupannya tentu lebih luas. Teknik pendukung saya bahas ketika dalam kasus tertentu diperlukan. Untuk membaca buku ini, dibutuhkan pengetahuan tentang dasar pemrograman Delphi.</p>
<p>Saya menekankan pada aspek produktivitas daripada pendalaman konsep pemrograman. Sebab dilihat dari sisi produksi, kebutuhan (atau lebih tepatnya keinginan) konsumen lebih diutamakan. Dan konsumen selalu ingin produk aplikasi/software yang dapat dibuat dengan cepat, stabil, sesuai spesifikasi yang diharapkan, dengan biaya murah. Umumnya konsumen tidak terlalu memperdulikan bagaimana aplikasi itu dibuat, apakah dengan teknik canggih dan rumit, atau dengan teknik mudah dan biasa-biasa saja, apakah dengan mengikuti spesifikasi akademis, atau mengedepankan sisi praktis.</p>
<p>Database yang pertama kali diperkenalkan dalam buku ini adalah Access.</p>
<p>Database kedua yang diperkenalkan dalam buku ini adalah MySQL, karena popularitas dan dukungan perintah SQL yang menurut hemat saya lebih lengkap daripada Access, dan sebagai langkah lanjut untuk memahami database lainnya. Karena hampir semua produk database, mempunyai konsep yang sama.</p>
<p>Juga saya bahas dalam buku ini pembuatan report, help, dan update sehingga diharapkan pembaca mempunyai kemampuan yang utuh dan lengkap tentang dasar-dasar pembuatan produk software profesional.</p>
<p><a href="http://www.mediafire.com/?d56eo1huf9h7f1b" target="_blank">Free Download Link (.pdf)</a><br />
<a href="http://www.mediafire.com/?hm10irorcoxr79z"> Source Code Buku (.7z)</a><br />
<a href="http://www.ziddu.com/download/15420813/passwordsourcecodebukuPembProdAppDBD2010.txt.html"> Password Extract Source Code</a><br />
Untuk Source Code, silahkan extract dengan <a href="http://www.ziddu.com/download/11666495/7z916.exe.html">7Zip</a></p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>, <a href='http://altaifa.wordpress.com/category/tips-dan-trik-delphi/'>Tips dan Trik Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=258&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2011/06/14/free-ebookgratis-pembuatan-produk-aplikasi-database-dengan-delphi-2010-pdf/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2011/06/cover.png?w=223" medium="image" />
	</item>
		<item>
		<title>Application –vs- Component Developer</title>
		<link>http://altaifa.wordpress.com/2011/06/11/application-%e2%80%93vs-component-developer/</link>
		<comments>http://altaifa.wordpress.com/2011/06/11/application-%e2%80%93vs-component-developer/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 06:53:42 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Tips dan Trik Delphi]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=253</guid>
		<description><![CDATA[Dalam suatu interview,  beberapa calon programmer  berkata sebagai berikut: “ Saya adalah developer  aplikasi,  saya menggunakan komponen, dan tidak membuat komponen.” Saya langsung berpikir, ‘ehem, saya ketemu dengan salah satu programmer  drag and drop yang tidak mengerti OOP&#8217;.  Karena kami bekerja dengan  komponen buatan sendiri,  calon programmer  yang berkata demikian tidak mungkin dipekerjakan di perusahaan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=253&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dalam suatu interview,  beberapa calon programmer  berkata sebagai berikut:</p>
<p>“ Saya adalah <em>developer  aplikasi</em>,  saya menggunakan komponen, dan tidak membuat komponen.”</p>
<p>Saya langsung berpikir, ‘ehem, saya ketemu dengan salah satu programmer  <em>drag and drop</em> yang tidak mengerti OOP&#8217;.  Karena kami bekerja dengan  komponen buatan sendiri,  calon programmer  yang berkata demikian tidak mungkin dipekerjakan di perusahaan kami.</p>
<p>Perkecualian  bagi  programmer Delphi  (di luar wawancara rekruitmen programmer) yang sangat akrab dengan OOP namun belum pernah membuat komponen.  Saya menyadari  bayangan sulitnya membuat komponen sering menjadi penghalang. Pada postingan mendatang saya akan bantah hal ini, dan akan saya tunjukkan betapa mudahnya membuat komponen. Pada posting kali ini saya akan tunjukkan kenapa  sebagai  developer aplikasi pun kita tetap dituntut mampu untuk membuat komponen.</p>
<p>Pada tahun 2007, kami memutuskan untuk mengkonversi aplikasi database yang masih menggunakan BDE  ke DBX.  Untuk melakukan hal ini, kami membuat suatu <a href="http://robstechcorner.blogspot.com/2009/09/coderage-iv-bde-to-dbx.html">aplikasi yang dapat menkonversi</a> seluruh  komponen TQuery ke komponen <a href="http://code.google.com/p/robstechcorner/source/browse/trunk/Delphi/presentations/DelphiLive/DBX/Components/dbxQuery.pas">TDbxQuery</a>.</p>
<p>Proses pengkoversian ke model 3  komponen DBX(TSqlQuery + TProvider + TClientDataset) akan sangat rawan terjadi kesalahan. Dan juga akan menghabiskan lebih banyak waktu dari yang dapat kami alokasikan.</p>
<p>Karena itu kami memutuskan untuk menghabiskan beberapa hari untuk membuat suatu komponen yang terlihat dan mempunyai sifat yang mirip seperti  TQuery namun secara internal mempunyai implementasi yang berbeda dengan menggunakan model 3 komponen DBX. Komponen tersebut mirip dengan TSimpleDataset namun mempunyai property dan function dengan nama yang sama dengan property dan function dari TQuery yang digunakan dalam aplikasi kami. Yang dengan hal tersebut memungkinkan bagi kami untuk mencari dan mengganti <em>instance</em>  TQuery dengan TDbxQuery.  Ini membuat kami dapat menyelesaikan proses konversi dalam waktu lebih singkat  daripada jika kami langsung me-replace satu persatu komponen dalam tiap form  dengan komponen yang sudah <em>built in</em> di Delphi. Selama kami hanya berurusan dengan implementasi kode komponen buatan tersebut, kami dapat menampilkan berbagai fungsi yang dibutuhkan dari model tiga komponen tersebut dengan tanpa secara langsung merubah kode aplikasi.</p>
<p>Ketika proses konversi ini berlangsung, tanpa disadari bahwa kami telah menggunakan ratusan komponen TDBGrid dalam aplikasi. Maka kami memutuskan mengembangkan aplikasi untuk dapat digunakan dalam jangka panjang. Kami mengganti komponen TDBGrid dengan TDwsGrid. Awal mulanya kode komponen TDwsGrid sebagai berikut.  Tidak ada perbedaan sama sekali dengan kode TDBGrid.</p>
<p>TDwsGrid = class(TCustomDBGrid)</p>
<p>published</p>
<p>property Align;</p>
<p>property Anchors;</p>
<p>property BiDiMode;</p>
<p>property BorderStyle;</p>
<p>property Color;</p>
<p>property Columns stored False;</p>
<p>property Constraints;</p>
<p>property Ctl3D;</p>
<p>property DataSource;</p>
<p>property DefaultDrawing;</p>
<p>property DragCursor;</p>
<p>property DragKind;</p>
<p>property DragMode;</p>
<p>property Enabled;</p>
<p>property FixedColor;</p>
<p>property Font;</p>
<p>property ImeMode;</p>
<p>property ImeName;</p>
<p>property Options;</p>
<p>property ParentBiDiMode;</p>
<p>property ParentColor;</p>
<p>property ParentCtl3D;</p>
<p>property ParentFont;</p>
<p>property ParentShowHint;</p>
<p>property PopupMenu;</p>
<p>property ReadOnly;</p>
<p>property ShowHint;</p>
<p>property TabOrder;</p>
<p>property TabStop;</p>
<p>property TitleFont;</p>
<p>property Visible;</p>
<p>property OnCellClick;</p>
<p>property OnColEnter;</p>
<p>property OnColExit;</p>
<p>property OnColumnMoved;</p>
<p>property OnDrawColumnCell;</p>
<p>property OnDblClick;</p>
<p>property OnDragDrop;</p>
<p>property OnDragOver;</p>
<p>property OnEditButtonClick;</p>
<p>property OnEndDock;</p>
<p>property OnEndDrag;</p>
<p>property OnEnter;</p>
<p>property OnExit;</p>
<p>property OnKeyDown;</p>
<p>property OnKeyPress;</p>
<p>property OnKeyUp;</p>
<p>property OnMouseActivate;</p>
<p>property OnMouseDown;</p>
<p>property OnMouseEnter;</p>
<p>property OnMouseLeave;</p>
<p>property OnMouseMove;</p>
<p>property OnMouseUp;</p>
<p>property OnMouseWheel;</p>
<p>property OnMouseWheelDown;</p>
<p>property OnMouseWheelUp;</p>
<p>property OnStartDock;</p>
<p>property OnStartDrag;</p>
<p>property OnTitleClick;</p>
<p>end;</p>
<p>Pada suatu hari kemudian, ketika saya mengamati komponen TDwsGrid, kini  telah mempunyai  tambahan kemampuan untuk:</p>
<p>-          Mengurutkan data sesuai dengan kolom Title yang diklik</p>
<p>-          Posisi dan ukuran kolom dapat diatur dalam suatu file konfigurasi</p>
<p>-          Mempunyai fasilitas ekspor ke file Excel</p>
<p>Memang  kemampuan yang ditambahkan dalam komponen tersebut bukan sesuatu yang sangat hebat, namun dengannya memungkinkan bagi kita untuk menambah banyak fungsionalitas TDBGrid tanpa harus menuliskan disetiap form yang menggunakan komponen ini.</p>
<p>Ketika hal ini kami jelaskan pada <em>developer aplikasi</em>, bisa jadi salah satu dari mereka akan bertanya: “Kenapa tidak membeli komponen pihak ketiga saja yang mempunyai fitur seperti itu?” Jawab Saya “Kami sudah melakukannya, ketika kami mendapatkan anggaran, kami telah membeli <a href="http://www.tmssoftware.com/site/vdsub.asp">TMS Subscription</a> dan sekarang kami menggunakan <a href="http://www.tmssoftware.com/site/dbadvgrd.asp">TDBAdvGrid</a>   pada banyak tempat.”</p>
<p>Namun peristiwa yang kami alami pada kasus TDBGrid masih juga terjadi pada paket komponen pihak ketiga. Saat ini kami dalam proses pembuatan komponen baru kami  sebagai berikut:</p>
<pre>TdwsAdvDbGrid = class(TAdvDBGrid)
end;</pre>
<p>Sehingga memungkinkan bagi kami untuk menambahkan fungsi tambahan ketika dibutuhkan.  Memang betul, saat ini kami belum memerlukan untuk menambahkan fungsi-fungsi baru. Namun peristwa yang kami alami terdahulu menjadi pelajaran berharga buat kami.</p>
<p>Hal tersebut diatas tidak hanya diterapkan untuk fungsi tambahan, namun bisa kita terapkan untuk mensetting  nilai  property tertentu yang berlaku secara global. Misalkan, setiap menggunakan komponen TEdit Anda harus merubah Font ke  nilai tertentu yang telah Anda tetapkan. Maka daripada mengerjakan berulang-ulang merubah font setiap kali Anda meletakkan component TEdit pada form, Anda dapat membuat sendiri suatu komponen, katakanlah TMyEdit, yang dalam kode nya, kita tambahkan kode untuk merubah Font.  Sehingga setiap kali TMyEdit diletakkan pada form, otomatis Font nya telah berganti ke Font yang kita inginkan di awal mula.</p>
<pre>interface

uses
  SysUtils, Classes, Controls, StdCtrls;

type
  TMyEdit = class(TEdit)
  public
    constructor Create(AOwner : TComponent); override;
  end;

procedure Register;

implementation
{ TMyEdit }

constructor TMyEdit.Create(AOwner: TComponent);
begin
  inherited;
  Font.Name := 'My Crazy Font';
end;</pre>
<p>Dengan demikian, pada dasarnya sudah menjadi keharusan, bahwa seorang developer haruslah bisa membuat aplikasi dan sekaligus mampu membuat komponen. Menghabiskan sedikit waktu untuk mempelajari pembuatan komponen akan membantu meningkatkan kemampuan Anda untuk membuat aplikasi yang besar.</p>
<p>Diterjemahkan secara bebas dari sumber:<br />
<a href="http://www.delphifeeds.com/go/f/80691?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+delphifeeds+%28DelphiFeeds.com%29">http://www.delphifeeds.com/go/f/80691?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+delphifeeds+%28DelphiFeeds.com%29</a></p>
<p>Oleh: mambamaestro: altaifa-dev.co.cc</p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>, <a href='http://altaifa.wordpress.com/category/tips-dan-trik-delphi/'>Tips dan Trik Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/253/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=253&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2011/06/11/application-%e2%80%93vs-component-developer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>Biogas Kantong Plastik Pengganti LPG</title>
		<link>http://altaifa.wordpress.com/2010/10/02/biogas-kantong-plastik-pengganti-lpg/</link>
		<comments>http://altaifa.wordpress.com/2010/10/02/biogas-kantong-plastik-pengganti-lpg/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 01:56:37 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=238</guid>
		<description><![CDATA[Dusun Bendrong, Desa Argosari, Kecamatan Jabung Malang, telah berhasil mengembangkan biogas dengan menggunakan kantong  plastik sebagai tangki gas dengan bahan dasar kotoran sapi. Akibat sentuhan Muhamad Slamet, elpiji subsidi pemerintah menjadi barang tak laku di dusun terpencil itu.  Warga menjadi kelebihan bahan bakar gas, karena reaktor gas yang mereka bangun. Filed under: Uncategorized<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=238&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dusun Bendrong, Desa Argosari, Kecamatan Jabung Malang, telah berhasil mengembangkan biogas dengan menggunakan kantong  plastik sebagai tangki gas dengan bahan dasar kotoran sapi. Akibat sentuhan Muhamad Slamet, elpiji subsidi pemerintah menjadi barang tak laku di dusun terpencil itu.  Warga menjadi kelebihan bahan bakar gas, karena reaktor gas yang mereka bangun.</p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=238&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/10/02/biogas-kantong-plastik-pengganti-lpg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>Istilah-istilah Pajak</title>
		<link>http://altaifa.wordpress.com/2010/09/22/istilah-istilah-pajak/</link>
		<comments>http://altaifa.wordpress.com/2010/09/22/istilah-istilah-pajak/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 07:42:28 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Pajak]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=232</guid>
		<description><![CDATA[DBKB = Daftar Biaya Komponen Bangunan DJP = Direktorat Jenderal Pajak KPP = Kantor Pelayanan Pajak NIR = Nilai Indikasi Rata-rata NJOP = Nilai Jual Objek Pajak NOP = Nilai Objek Pajak OP = Objek Pajak PBB = Pajak Bumi dan Bangunan PST = Pelayanan Satu Tempat SISMIOP = Sistem Manajemen Informasi Objek Pajak SP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=232&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>DBKB = Daftar Biaya Komponen Bangunan<br />
DJP = Direktorat Jenderal Pajak<br />
KPP = Kantor Pelayanan Pajak<br />
NIR = Nilai Indikasi Rata-rata<br />
NJOP = Nilai Jual Objek Pajak<br />
NOP = Nilai Objek Pajak<br />
OP = Objek Pajak<br />
PBB = Pajak Bumi dan Bangunan<br />
PST = Pelayanan Satu Tempat<br />
SISMIOP = Sistem Manajemen Informasi Objek Pajak<br />
SP = Subyek Pajak<br />
SPOP = Surat Pemberitahuan Objek Pajak<br />
LSPOP = Lampiran SPOP<br />
SPPT = Surat Pemberitahuan Pajak Terhutang<br />
STTS = Surat Tanda Terima Setoran<br />
ZNT = Zona Nilai Tanah<br />
WP = Wajib Pajak</p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/uncategorized/pajak/'>Pajak</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=232&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/09/22/istilah-istilah-pajak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>MVC Dalam Delphi Programming II &#8211; Meniru Konsep CI</title>
		<link>http://altaifa.wordpress.com/2010/08/02/mvc-dalam-delphi-programming-ii-meniru-konsep-ci/</link>
		<comments>http://altaifa.wordpress.com/2010/08/02/mvc-dalam-delphi-programming-ii-meniru-konsep-ci/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 09:04:15 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=218</guid>
		<description><![CDATA[CATATAN: Jangan menggunakan variabel bertipe interface untuk menyimpan data bertipe TObject. Bikin Error! CI atau Code Igniter mempunyai konsep mvc yang menarik. Dibanding Tulisan saya sebelumnya, model mvc yang ditawarkan oleh CIebih elegan. Dibandingkan konsep MVC yang saya gambarkan dulu, yang hanya memanggil/memanfaatkan prosedur konsep MVC CI memanfaatkan kelas. Dalam tutorial awal CI kita lihat [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=218&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>CATATAN: Jangan menggunakan variabel bertipe interface untuk menyimpan data bertipe TObject. Bikin Error!</p>
<p>CI atau Code Igniter mempunyai konsep mvc yang menarik. Dibanding Tulisan saya sebelumnya, model mvc yang ditawarkan oleh CIebih elegan. Dibandingkan konsep MVC yang saya gambarkan dulu, yang hanya memanggil/memanfaatkan prosedur konsep MVC CI memanfaatkan kelas. <span id="more-218"></span>Dalam tutorial awal CI kita lihat contoh contoh kodingnya:</p>
<p>Controller:</p>
<p>﻿﻿<a href="http://altaifa.files.wordpress.com/2010/08/blog_controller.png"><img class="alignnone size-full wp-image-219" title="blog_controller" src="http://altaifa.files.wordpress.com/2010/08/blog_controller.png?w=620" alt=""   /></a></p>
<p>View</p>
<p><a href="http://altaifa.files.wordpress.com/2010/08/blog_view.png"><img class="alignnone size-full wp-image-220" title="blog_view" src="http://altaifa.files.wordpress.com/2010/08/blog_view.png?w=620" alt=""   /></a></p>
<p>Beberapa konsep yang perlu diperhatikan disini:</p>
<p>1. Kemunculan View diatur oleh controller</p>
<p>2. Apa (data apa) yang ditampilkan View  di-<em>supply</em> oleh controller. Dalam definisi lengkap MVC, controller mendapatkan data dari Model (dapat berupa perintah sql dalam database).</p>
<p>3. Data yang dipertukarkan antara View dengan controller mempunyai tipe data generik, dalam bentuk list.</p>
<p>Konsep ini dapat diterapkan diterjemahkan di dalam delphi sebagai berikut:</p>
<p>- Controller seharusnya berupa Class</p>
<p>- Data harus bertipe generik. Karena  Delphi strong type, hal tersebut dapat diakali dengan menggunakan data yang bertipe data objek, dan mempunyai property yang memungkinkan diakses dalam tipe data apapun.</p>
<p>Saya menerjemahkan model MVC code igniter tersebut di atas menjadi sebagai berikut:</p>
<div id="_mcePaste">
<div id="_mcePaste">
<div id="_mcePaste">unit con_canvaser;</div>
<div id="_mcePaste">interface</div>
<div id="_mcePaste">uses Windows, Messages, SysUtils, Variants, Classes, Forms,</div>
<div id="_mcePaste">Dialogs, Controls, TypInfo, SDKHelper;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">type</div>
<div id="_mcePaste">TErrMsg = string;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">IMvcData = interface(IInterface)</div>
<div id="_mcePaste">['{7293B5D3-FC1F-4DB5-B764-3F94AD2427C8}']</div>
<div id="_mcePaste">procedure SetValueStr(const Name: string; const Value: string);</div>
<div id="_mcePaste">procedure SetValueInt(const Name: string; const Value: Integer);</div>
<div id="_mcePaste">procedure SetValueDouble(const Name: string; const Value: Double);</div>
<div id="_mcePaste">procedure SetValueCurrency(const Name: string; const Value: Currency);</div>
<div id="_mcePaste">procedure SetValueVar(const Name: string; const Value: Variant);</div>
<div id="_mcePaste">procedure SetValueDate(const Name: string; const Value: TDateTime);</div>
<div id="_mcePaste">procedure SetValueObj(const Name: string; const Value: TObject);</div>
<div id="_mcePaste">function GetValueStr(const Name: string): string;</div>
<div id="_mcePaste">function GetValueInt(const Name: string): Integer;</div>
<div id="_mcePaste">function GetValueDouble(const Name: string): Double;</div>
<div id="_mcePaste">function GetValueCurrency(const Name: string): Currency;</div>
<div id="_mcePaste">function GetValueVar(const Name: string): Variant;</div>
<div id="_mcePaste">function GetValueDate(const Name: string): TDateTime;</div>
<div id="_mcePaste">function GetValueObj(const Name: string): TObject;</div>
<div id="_mcePaste">property ValueStr[const Name: string]: string read GetValueStr Write SetValueStr;</div>
<div id="_mcePaste">property ValueInt[const Name: string]: Integer read GetValueInt Write SetValueInt;</div>
<div id="_mcePaste">property ValueDouble[const Name: string]: Double read GetValueDouble Write SetValueDouble;</div>
<div id="_mcePaste">property ValueCurrency[const Name: string]: Currency read GetValueCurrency Write SetValueCurrency;</div>
<div id="_mcePaste">property ValueVar[const Name: string]: Variant read GetValueVar Write SetValueVar;</div>
<div id="_mcePaste">property ValueDate[const Name: string]: TDateTime read GetValueDate Write SetValueDate;</div>
<div id="_mcePaste">property ValueObj[const Name: string]: TObject read GetValueObj Write SetValueObj;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TDateTimeVar = class(TInterfacedObject,IInterface)</div>
<div id="_mcePaste">private</div>
<div id="_mcePaste">FData: TDateTime;</div>
<div id="_mcePaste">public</div>
<div id="_mcePaste">constructor Create(InitValue: TDateTime);</div>
<div id="_mcePaste">property Data: TDateTime read FData write FData;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TMvcData = class(TInterfacedObject, IMvcData)</div>
<div id="_mcePaste">private</div>
<div id="_mcePaste">FList: TStringList;</div>
<div id="_mcePaste">public</div>
<div id="_mcePaste">constructor Create;</div>
<div id="_mcePaste">destructor Destroy; override;</div>
<div id="_mcePaste">procedure SetValueStr(const Name: string; const Value: string);</div>
<div id="_mcePaste">procedure SetValueInt(const Name: string; const Value: Integer);</div>
<div id="_mcePaste">procedure SetValueDouble(const Name: string; const Value: Double);</div>
<div id="_mcePaste">procedure SetValueCurrency(const Name: string; const Value: Currency);</div>
<div id="_mcePaste">procedure SetValueVar(const Name: string; const Value: Variant);</div>
<div id="_mcePaste">procedure SetValueDate(const Name: string; const Value: TDateTime);</div>
<div id="_mcePaste">procedure SetValueObj(const Name: string; const Value: TObject);</div>
<div id="_mcePaste">function GetValueStr(const Name: string): string;</div>
<div id="_mcePaste">function GetValueInt(const Name: string): Integer;</div>
<div id="_mcePaste">function GetValueDouble(const Name: string): Double;</div>
<div id="_mcePaste">function GetValueCurrency(const Name: string): Currency;</div>
<div id="_mcePaste">function GetValueVar(const Name: string): Variant;</div>
<div id="_mcePaste">function GetValueDate(const Name: string): TDateTime;</div>
<div id="_mcePaste">function GetValueObj(const Name: string): TObject;</div>
<div id="_mcePaste">property ValueStr[const Name: string]: string read GetValueStr Write SetValueStr;</div>
<div id="_mcePaste">property ValueInt[const Name: string]: Integer read GetValueInt Write SetValueInt;</div>
<div id="_mcePaste">property ValueDouble[const Name: string]: Double read GetValueDouble Write SetValueDouble;</div>
<div id="_mcePaste">property ValueCurrency[const Name: string]: Currency read GetValueCurrency Write SetValueCurrency;</div>
<div id="_mcePaste">property ValueVar[const Name: string]: Variant read GetValueVar Write SetValueVar;</div>
<div id="_mcePaste">property ValueDate[const Name: string]: TDateTime read GetValueDate Write SetValueDate;</div>
<div id="_mcePaste">property ValueObj[const Name: string]: TObject read GetValueObj Write SetValueObj;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">IView = interface(IInterface)</div>
<div id="_mcePaste">['{8318E550-2DC0-4A2A-B45C-C8A636D24702}']</div>
<div id="_mcePaste">procedure GetInitData(MvcData: IMvcData);</div>
<div id="_mcePaste">function GetOutputData: IMvcData;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">IController = interface</div>
<div id="_mcePaste">['{4F6CCA74-90BD-46EF-8507-26A1C9F1FDAF}']</div>
<div id="_mcePaste">procedure DoResponse;</div>
<div id="_mcePaste">function GetData: IMvcData;</div>
<div id="_mcePaste">procedure SetData(Data: IMvcData);</div>
<div id="_mcePaste">property Data: IMvcData read GetData write SetData;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TController = class(TInterfacedObject, IController)</div>
<div id="_mcePaste">private</div>
<div id="_mcePaste">FMvcData: IMvcData;</div>
<div id="_mcePaste">public</div>
<div id="_mcePaste">procedure DoResponse;</div>
<div id="_mcePaste">function GetData: IMvcData;</div>
<div id="_mcePaste">procedure SetData(Data: IMvcData);</div>
<div id="_mcePaste">property Data: IMvcData read GetData write SetData;</div>
<div id="_mcePaste">constructor Create; virtual;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ Canvaser Controller</div>
<div id="_mcePaste">Dengan ini selurut tabel-tabel rujukan combobox diloag</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">TCanvaserController = class(TController)</div>
<div id="_mcePaste">{daftar yang diload di sini adalah untuk mengisi combo box,</div>
<div id="_mcePaste">cuma  ada dua field sebagai key dan lookup value saja}</div>
<div id="_mcePaste">Procedure ReloadDummy;</div>
<div id="_mcePaste">procedure ReloadDaftarKota;</div>
<div id="_mcePaste">procedure ReloadDaftarPropinsi;</div>
<div id="_mcePaste">procedure ReloadDaftarSales;</div>
<div id="_mcePaste">procedure ReloadDaftarStatus;</div>
<div id="_mcePaste">procedure ReloadDaftarJenisTransaksi;</div>
<div id="_mcePaste">constructor Create; override;  {reload All combo reference}</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TPenjualanController = class(TCanvaserController)</div>
<div id="_mcePaste">constructor Create; override;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">TMasterOutletController = class(TCanvaserController)</div>
<div id="_mcePaste">function IsOutletExist: Boolean;</div>
<div id="_mcePaste">function IsBlokir: Boolean;</div>
<div id="_mcePaste">function SetBlokir: TErrMsg;  //return &#8221; if success, otherwise false!</div>
<div id="_mcePaste">function SetUnBlokir: TErrMsg;</div>
<div id="_mcePaste">function Delete: TErrMsg;</div>
<div id="_mcePaste">function PostUpdated: TErrMsg;</div>
<div id="_mcePaste">function PostInserted(var NewCustId: string): TErrMsg;</div>
<div id="_mcePaste">constructor Create; override;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">TMasterSalesController = class(TCanvaserController)</div>
<div id="_mcePaste">function IsOutletExist: Boolean;</div>
<div id="_mcePaste">function IsBlokir: Boolean;</div>
<div id="_mcePaste">function SetBlokir: TErrMsg;  //return &#8221; if success, otherwise false!</div>
<div id="_mcePaste">function SetUnBlokir: TErrMsg;</div>
<div id="_mcePaste">function Delete: TErrMsg;</div>
<div id="_mcePaste">function PostUpdated: TErrMsg;</div>
<div id="_mcePaste">function PostInserted: TErrMsg;</div>
<div id="_mcePaste">constructor Create; override;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">//IDataset harus punya 2 field, satu bernama Key satu bernama Value , sementara ini berlaku untuk Key Integer dan Value String</div>
<div id="_mcePaste">procedure InitList(Source: IDataset; DestList: TStringList);</div>
<div id="_mcePaste">//mendapat index dari keyval list</div>
<div id="_mcePaste">function GetMvcListIndex(Items: TStrings; KeyVal: string): Integer;</div>
<div id="_mcePaste">//mem-free object-object List</div>
<div id="_mcePaste">procedure FreeOwnObjets(List: TStringList);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{General Dialogs}</div>
<div id="_mcePaste">function MsgDlgConfirm(Msg: string): Boolean;</div>
<div id="_mcePaste">procedure MsgDlgInformation(Msg: string);</div>
<div id="_mcePaste">procedure MsgDlgWarning(Msg: string);</div>
<div id="_mcePaste">procedure MsgDlgError(Msg: string);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{General View Fungtions}</div>
<div id="_mcePaste">procedure DisableControls(Controls: array of TControl);</div>
<div id="_mcePaste">procedure EnableControls(Controls: array of TControl);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{mencek apakah input terdapat karakter yang dilarang}</div>
<div id="_mcePaste">function Validate(Controls: array of TControl; PropName: string): Boolean;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">implementation</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">uses mod_canvaser;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TMvcData }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TMvcData.Create;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList:= TStringList.Create;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">destructor TMvcData.Destroy;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FreeOwnObjets(FList);</div>
<div id="_mcePaste">FreeAndNil(FList);</div>
<div id="_mcePaste">inherited;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueInt(const Name: string): Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">if FList.Values[Name]&lt;&gt;&#8221; then</div>
<div id="_mcePaste">Result:= StrToInt(FList.Values[Name])</div>
<div id="_mcePaste">else</div>
<div id="_mcePaste">Result:= -1;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueStr(const Name: string): string;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= FList.Values[Name];</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueObj(const Name: string): TObject;</div>
<div id="_mcePaste">var Index: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Index:= ValueInt[Name+'INDEX'];</div>
<div id="_mcePaste">if Index&gt;0 then begin</div>
<div id="_mcePaste">ShowMessage(&#8216;[GET] Found Obj Name = &#8216; + Name);</div>
<div id="_mcePaste">Result:= FList.Objects[Index];</div>
<div id="_mcePaste">end else begin</div>
<div id="_mcePaste">ShowMessage(&#8216;[GET] NOT Found Obj Name = &#8216; + Name);</div>
<div id="_mcePaste">Result:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueVar(const Name: string): Variant;</div>
<div id="_mcePaste">var Index: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= Null;</div>
<div id="_mcePaste">if FList.Find(Name,Index) then</div>
<div id="_mcePaste">Result:= FList.Values[Name];</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueCurrency(const Name: string): Currency;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:=0.0;</div>
<div id="_mcePaste">if Trim(FList.Values[Name])&lt;&gt;&#8221; then</div>
<div id="_mcePaste">Result:= StrToCurr(FList.Values[Name]);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueDate(const Name: string): TDateTime;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">Index: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">if FList.Find(Name,Index) then begin</div>
<div id="_mcePaste">Result:= TDateTimeVar(FList.Objects[Index]).Data;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMvcData.GetValueDouble(const Name: string): Double;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">Index: Integer;</div>
<div id="_mcePaste">Value: string;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= 0.0;</div>
<div id="_mcePaste">if FList.Find(Name,Index) then begin</div>
<div id="_mcePaste">Value:= FList.Values[Name];</div>
<div id="_mcePaste">if Trim(Value)&lt;&gt;&#8221; then</div>
<div id="_mcePaste">Result:= StrToFloat(Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueInt(const Name: string; const Value: Integer);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList.Values[Name]:= IntToStr(Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueStr(const Name, Value: string);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList.Values[Name]:= Value;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueObj(const Name: string; const Value: TObject);</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">Index: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Index:= ValueInt[Name+'INDEX'];</div>
<div id="_mcePaste">if Index&gt;0 then begin</div>
<div id="_mcePaste">ShowMessage(&#8216;[SET] Found Obj Name = &#8216; + Name);</div>
<div id="_mcePaste">FList.Objects[Index].Free;</div>
<div id="_mcePaste">FList.Objects[Index]:= Value;</div>
<div id="_mcePaste">end else begin</div>
<div id="_mcePaste">ShowMessage(&#8216;[SET] NOT Found Obj Name = &#8216; + Name);</div>
<div id="_mcePaste">ValueInt[Name+'INDEX']:=  FList.AddObject(Name, Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueVar(const Name: string; const Value: Variant);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList.Values[Name]:= VarToStr(Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueCurrency(const Name: string; const Value: Currency);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList.Values[Name]:= CurrToStr(Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueDate(const Name: string; const Value: TDateTime);</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">Index: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">if FList.Find(Name,Index) then</div>
<div id="_mcePaste">TDateTimeVar(FList.Objects[Index]).Data:= Value</div>
<div id="_mcePaste">else</div>
<div id="_mcePaste">FList.AddObject(Name,TDateTimeVar.Create(Value));</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TMvcData.SetValueDouble(const Name: string; const Value: Double);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FList.Values[Name]:= FloatToStr(Value);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TController }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TController.Create;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FMvcData:= TMvcData.Create;</div>
<div id="_mcePaste">//ShowMessage(&#8216;Tcontroller create&#8217;);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TController.DoResponse;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TController.GetData: IMvcData;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= FMvcData;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TController.SetData(Data: IMvcData);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">FMvcData:= Data;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TCanvaserController }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TCanvaserController.Create;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">inherited;</div>
<div id="_mcePaste">//ShowMessage(&#8216;TCanvaserController Create&#8217;);</div>
<div id="_mcePaste">OpenDatabaseConnection;</div>
<div id="_mcePaste">ReloadDummy; {</div>
<div id="_mcePaste">Sepertinya terdapat BUG pada TStringList Object,</div>
<div id="_mcePaste">yakni, object yang di-assign (melalui AddObject) yang pertama, tidak bisa diakses.</div>
<div id="_mcePaste">maka butuh dummy sebagai objek awal, agar objek berikutnya dapat diakses.</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">ReloadDaftarKota;</div>
<div id="_mcePaste">ReloadDaftarPropinsi;</div>
<div id="_mcePaste">ReloadDaftarSales;</div>
<div id="_mcePaste">//ReloadDaftarStatus;</div>
<div id="_mcePaste">//ReloadDaftarJenisTransaksi;</div>
<div id="_mcePaste">//ShowMessage(&#8216;TCanvaserController Create &#8211; END&#8217;);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDaftarJenisTransaksi;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">InitList(QueryM_TRANSAKSI,StrList);</div>
<div id="_mcePaste">Data.ValueObj['ObjDaftarJenisTransaksi']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDummy;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">Data.ValueObj['ObjDummy']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDaftarKota;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">ShowMessage(&#8216;reload daftar kota, Kode Propinsi = &#8216; + Data.ValueStr['KodePropinsi']);</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">InitList(QueryM_KOTA(Data.ValueStr['KodePropinsi']),StrList);</div>
<div id="_mcePaste">//InitList(QueryM_KOTA,StrList);</div>
<div id="_mcePaste">Data.ValueObj['ObjDaftarKota']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDaftarPropinsi;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">InitList(QueryM_PROPINSI,StrList);</div>
<div id="_mcePaste">Data.ValueObj['ObjDaftarPropinsi']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDaftarSales;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">InitList(QuerySALES,StrList);</div>
<div id="_mcePaste">Data.ValueObj['ObjDaftarSales']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure TCanvaserController.ReloadDaftarStatus;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">StrList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">StrList:= TStringList.Create;</div>
<div id="_mcePaste">InitList(QueryM_STATUS,StrList);</div>
<div id="_mcePaste">Data.ValueObj['ObjDaftarStatus']:= StrList;</div>
<div id="_mcePaste">StrList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TPenjualanController }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TPenjualanController.Create;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">JnsTransList, NoPakList, ProdukList: TStringList;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">inherited;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">JnsTransList:= TStringList.Create;</div>
<div id="_mcePaste">NoPakList:= TStringList.Create;</div>
<div id="_mcePaste">ProdukList:= TStringList.Create;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">//list item for &#8216;ListJnsTrans&#8217;</div>
<div id="_mcePaste">InitList(QueryM_TRANSAKSI,JnsTransList);</div>
<div id="_mcePaste">Data.ValueObj['ObjListJnsTrans']:= JnsTransList;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">InitList(QueryM_TRANSAKSI,NoPakList);</div>
<div id="_mcePaste">Data.ValueObj['ObjListNoPak']:= NoPakList;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">InitList(QueryM_TRANSAKSI,ProdukList);</div>
<div id="_mcePaste">Data.ValueObj['ObjListProduk']:= ProdukList;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Data.ValueDate['TglPenjualan']:= Now;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">ProdukList:= nil;</div>
<div id="_mcePaste">NoPakList:= nil;</div>
<div id="_mcePaste">JnsTransList:= nil;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">FreeAndNil(JnsTransList);</div>
<div id="_mcePaste">FreeAndNil(NoPakList);</div>
<div id="_mcePaste">FreeAndNil(ProdukList);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TDateTimeVar }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TDateTimeVar.Create(InitValue: TDateTime);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Data:= InitValue;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure InitList(Source: IDataset; DestList: TStringList);</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">ObjList: TMvcData;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">DestList.Clear;</div>
<div id="_mcePaste">with Source do begin</div>
<div id="_mcePaste">while not eof do  begin</div>
<div id="_mcePaste">ObjList:= TMvcData.Create;</div>
<div id="_mcePaste">ObjList.ValueStr['KeyVal']:= FieldByName(&#8216;KeyVal&#8217;).AsString;</div>
<div id="_mcePaste">DestList.AddObject(FieldByName(&#8216;LookUpVal&#8217;).AsString, ObjList);</div>
<div id="_mcePaste">Next;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">ObjList:= nil;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function GetMvcListIndex(Items: TStrings; KeyVal: string): Integer;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">List: TStringList;</div>
<div id="_mcePaste">i: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= -1;</div>
<div id="_mcePaste">List:= TStringList(Items);</div>
<div id="_mcePaste">for i:= 0 to List.Count &#8211; 1 do</div>
<div id="_mcePaste">if TMvcData(List.Objects[i]).ValueStr['KeyVal'] = KeyVal then begin</div>
<div id="_mcePaste">Result:= i;</div>
<div id="_mcePaste">Break;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure FreeOwnObjets(List: TStringList);</div>
<div id="_mcePaste">var i: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">if List.Count&lt;1 then exit;</div>
<div id="_mcePaste">for i:= 0 to List.Count &#8211; 1 do</div>
<div id="_mcePaste">if Assigned(List.Objects[i]) then begin</div>
<div id="_mcePaste">if List.Objects[i] is TStringList then</div>
<div id="_mcePaste">FreeOwnObjets(TStringList(List.Objects[i])); {recursive}</div>
<div id="_mcePaste">List.Objects[i].Free;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{General Dialogs}</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function MsgDlgConfirm(Msg: string): Boolean;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= MessageDlg(Msg, mtConfirmation, mbOKCancel,0) = mrOk;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure MsgDlgInformation(Msg: string);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">MessageDlg(Msg, mtInformation, [mbOK],0);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure MsgDlgWarning(Msg: string);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">MessageDlg(Msg, mtWarning, [mbOK],0);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure MsgDlgError(Msg: string);</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">MessageDlg(Msg, mtError, [mbOK],0);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{General View Fungtions}</div>
<div id="_mcePaste">procedure DisableControls(Controls: array of TControl);</div>
<div id="_mcePaste">var i: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">for i:= Low(Controls) to High(Controls) do</div>
<div id="_mcePaste">Controls[i].Enabled:= False;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">procedure EnableControls(Controls: array of TControl);</div>
<div id="_mcePaste">var i: Integer;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">for i:= Low(Controls) to High(Controls) do</div>
<div id="_mcePaste">Controls[i].Enabled:= True;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">{ TMasterOutletController }</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.IsBlokir: Boolean;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= Data.ValueStr['IsBlokir'] = &#8217;1&#8242;;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.IsOutletExist: Boolean;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">sDataset: IDataset;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= False;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">sDataset:= QueryCustomer(Data.ValueStr['CustId']);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">if not Assigned(sDataset) then exit;</div>
<div id="_mcePaste">Result:= sDataset.RecordCount&gt;0;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">Data.ValueStr['CustNama']:=SDataset.FindField(&#8216;NAMA&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['CustKontak']:=SDataset.FindField(&#8216;KONTAK&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['CustAlamat']:=SDataset.FindField(&#8216;ALAMAT&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['CustTelepon']:=SDataset.FindField(&#8216;NO_TELPON&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['CustRekening']:=SDataset.FindField(&#8216;NO_REKENING&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['KodePropinsi']:=SDataset.FindField(&#8216;K_PROPINSI&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['KodeKota']:=SDataset.FindField(&#8216;K_KOTA&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['IsBlokir']:=SDataset.FindField(&#8216;IS_BLOKIR&#8217;).AsString;</div>
<div id="_mcePaste">Data.ValueStr['SalesId']:=SDataset.FindField(&#8216;SALES_ID&#8217;).AsString;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.PostInserted(var NewCustId: string): TErrMsg;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">CUST_ID, Err_Code, Err_msg: String;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">try</div>
<div id="_mcePaste">with Data do begin</div>
<div id="_mcePaste">{ CUST_ID GENERATE OTOMATIS</div>
<div id="_mcePaste">procedure OutletInsert(CUST_ID, NAMA, KONTAK, ALAMAT, NO_TELPON, K_KOTA, K_PROPINSI,</div>
<div id="_mcePaste">NO_REKENING, SALES_ID, IS_BLOKIR, USER_ID: string);}</div>
<div id="_mcePaste">OutletInsert(</div>
<div id="_mcePaste">ValueStr['CustNama'], ValueStr['CustKontak'], ValueStr['CustAlamat'],</div>
<div id="_mcePaste">ValueStr['CustTelepon'], ValueStr['KodeKota'], ValueStr['KodePropinsi'],</div>
<div id="_mcePaste">ValueStr['CustRekening'], ValueStr['SalesId'], ValueStr['IsBlokir'],</div>
<div id="_mcePaste">ValueStr['UserId'], CUST_ID, Err_Code, Err_msg</div>
<div id="_mcePaste">);</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">if Err_Code&lt;&gt;&#8221; then</div>
<div id="_mcePaste">Result:= Format(&#8216;\n[INSERT ERROR]\n%s&#8217; ,[Err_msg])</div>
<div id="_mcePaste">else</div>
<div id="_mcePaste">NewCustId:= CUST_ID;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">except</div>
<div id="_mcePaste">on E:Exception do Result:= Format(&#8216;\n[INSERT ERROR]\n%s&#8217; ,[E.Message]);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.PostUpdated: TErrMsg;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">try</div>
<div id="_mcePaste">with Data do begin</div>
<div id="_mcePaste">{procedure OutletUpdate(CUST_ID, NAMA, KONTAK, ALAMAT, NO_TELPON, K_KOTA, K_PROPINSI,</div>
<div id="_mcePaste">NO_REKENING, SALES_ID, IS_BLOKIR, USER_ID: string);}</div>
<div id="_mcePaste">OutletUpdate(</div>
<div id="_mcePaste">ValueStr['CustId'], ValueStr['CustNama'], ValueStr['CustKontak'], ValueStr['CustAlamat'],</div>
<div id="_mcePaste">ValueStr['CustTelepon'], ValueStr['KodeKota'], ValueStr['KodePropinsi'],</div>
<div id="_mcePaste">ValueStr['CustRekening'], ValueStr['SalesId'], ValueStr['IsBlokir'],</div>
<div id="_mcePaste">ValueStr['UserId']</div>
<div id="_mcePaste">);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">except</div>
<div id="_mcePaste">on E:Exception do</div>
<div id="_mcePaste">Result:= Format(&#8216;\n[UPDATE ERROR]\n%s&#8217; ,[E.Message]);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.SetBlokir: TErrMsg;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">with Data do begin</div>
<div id="_mcePaste">ValueStr['IsBlokir']:=&#8217;1&#8242;; //representasi kondisi saat ini</div>
<div id="_mcePaste">try</div>
<div id="_mcePaste">OutletSetBlokir(&#8217;1&#8242;,ValueStr['CustId'], ValueStr['UserId']);</div>
<div id="_mcePaste">except</div>
<div id="_mcePaste">on E:Exception do Result:= E.Message;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.SetUnBlokir: TErrMsg;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">with Data do begin</div>
<div id="_mcePaste">ValueStr['IsBlokir']:=&#8217;0&#8242;; //representasi kondisi saat ini</div>
<div id="_mcePaste">try</div>
<div id="_mcePaste">OutletSetBlokir(&#8217;0&#8242;,ValueStr['CustId'], ValueStr['UserId']);</div>
<div id="_mcePaste">except</div>
<div id="_mcePaste">on E:Exception do Result:= E.Message;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">constructor TMasterOutletController.Create;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">inherited;</div>
<div id="_mcePaste">//ShowMessage(&#8216;MasterOutletController create&#8217;);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function TMasterOutletController.Delete: TErrMsg;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">with Data do begin</div>
<div id="_mcePaste">try</div>
<div id="_mcePaste">OutletDelete(ValueStr['CustId'], ValueStr['UserId']);</div>
<div id="_mcePaste">except</div>
<div id="_mcePaste">on E:Exception do Result:= Format(&#8216;[DELETE ERROR]\n%s&#8217;,[E.Message]);</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste">function Validate(Controls: array of TControl; PropName: string): Boolean;</div>
<div id="_mcePaste">var</div>
<div id="_mcePaste">i: Integer;</div>
<div id="_mcePaste">PropValue: string;</div>
<div id="_mcePaste">begin</div>
<div id="_mcePaste">Result:= True;</div>
<div id="_mcePaste">for i:= Low(Controls) to High(Controls) do begin</div>
<div id="_mcePaste">PropValue:= GetPropValue(Controls[i],PropName);</div>
<div id="_mcePaste">if Pos(&#8221;&#8221;,PropValue)&gt;0 then begin</div>
<div id="_mcePaste">Result:= False;</div>
<div id="_mcePaste">if Controls[i] is TWinControl then TWinControl(Controls[i]).SetFocus;</div>
<div id="_mcePaste">Break;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste">end;</div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste"></div>
<div id="_mcePaste">end.</div>
</div>
</div>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/218/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=218&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/08/02/mvc-dalam-delphi-programming-ii-meniru-konsep-ci/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/08/blog_controller.png" medium="image">
			<media:title type="html">blog_controller</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/08/blog_view.png" medium="image">
			<media:title type="html">blog_view</media:title>
		</media:content>
	</item>
		<item>
		<title>MVC Dalam Delphi Programming</title>
		<link>http://altaifa.wordpress.com/2010/07/20/mvc-dalam-delphi-programming/</link>
		<comments>http://altaifa.wordpress.com/2010/07/20/mvc-dalam-delphi-programming/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:14:03 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=196</guid>
		<description><![CDATA[Author : Muchammad Aly mBA, S.Kom      * Download (*.doc) Dalam pembuatan aplikasi database dengan Delphi, umumnya kita menggunakan komponen-komponen database, baik berupa komponen koneksi (Misal: TAdoConnection, IBDatabase, dst),   turunan TDataset (Misal: TAdoTable,  TQuery, dst) atau kontrol databound (DBGrid, DBEdit, dst). Dengan pendekatan pengembangan aplikasi seperti ini,  kita biasa menuliskan perintah sql, business logic, validasi input, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=196&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Author : Muchammad Aly mBA, S.Kom      * <a href="http://www.4shared.com/get/JQ-uqym_/MVC_dalam_Delphi_Programming_f.html" target="_blank">Download (*.doc)</a></p>
<p>Dalam pembuatan aplikasi database dengan Delphi, umumnya kita menggunakan komponen-komponen database, baik berupa komponen koneksi (Misal: TAdoConnection, IBDatabase, dst),   turunan TDataset (Misal: TAdoTable,  TQuery, dst) atau kontrol databound (DBGrid, DBEdit, dst).</p>
<p>Dengan pendekatan pengembangan aplikasi seperti ini,  kita biasa menuliskan perintah sql, <em>business logic</em>, validasi input, pengaturan tampilan sekaligus dalam satu form (satu unit).</p>
<p>Pengembangan aplikasi ini mempunyai kelemahan dari satu sisi. Diantaranya:</p>
<ol>
<li>Sulit dikembangkan dalam suatu tim yang saling bekerja sama. Misalkan      tim yang menangani desain tampilan, ketika menyisipkan/ mengedit kode-kode      yang merubah tampilan sangat boleh jadi <em>business logic </em> menjadi ikut terpengaruh. Demikian juga      ketika tim yang menangani  database,      ketika dibutuhkan perubahan perintah sql, sangat boleh jadi tingkah laku      form akan berubah.</li>
<li>Sulit dimaintenance. Programmer yang meneruskan pengembangan aplikasi      mau tidak mau harus memahami source code secara keseluruhan sebelum dapat      ikut berpartisipasi. Hal ini disebabkan keterkaitan yang demikian erat logika      pemrograman dalam satu form/satu unit. Satu perubahan yang kecil dapat      mempengaruhi keseluruhan  tingkah      laku form.</li>
</ol>
<p>Untuk menghindari hal tersebut di atas dibutuhkan pemisahan penulisan source code dalam bagian-bagian tertentu. Salah satu metode pemisahan source code ini adalah dengan menggunakan paradigma MVC yang merupakan kependekan dari Model View Controller.</p>
<p><span id="more-196"></span></p>
<h2>Pengertian MVC</h2>
<p>Yaitu suatu istilah metode pengembangan / pembuatan aplikasi dengan memisahkan elemen-elemen penulisan source code menjadi tiga bagian, yaitu:</p>
<h3>Model</h3>
<p>Model di sini berperan sebagai representasi dari data yang terlibat dalam suatu proses transaksi. Setiap kali method / function dari suatu aplikasi butuh untuk melakukan akses ke dalam suatu data, maka function / method tersebut tidak langsung berinteaksi dengan sumber data tersebut melainkan harus melalui model terlebih dahulu. Secara praktis, dalam pemrograman database Delphi, model ini berwujud unit-unit yang berisi perintah SQL dan koneksi database.</p>
<h3>View</h3>
<p>View di sini berperan sebagai presentation layer atau <strong>pengatur user interface </strong>(tampilan) bagi user dari suatu aplikasi. Data yang dibutuhkan oleh user akan diformat sedemikian rupa agar dapat tampil dan dipresentasikan dengan format tampilan yang memang disesuaikan dengan kebutuhkan user, biasanya layer View juga bertugas untuk melakukan validasi data yang diinputkan user. Secara praktis, dalam pemrograman Delphi, view berwujud unit form  yang hanya berisi perintah-perintah yang berhubungan dengan efek tampilan dan bagaimana data itu ditampilkan.</p>
<h3>Controller</h3>
<p>Controller di sini berperan sebagai <strong>logic aspect </strong>dari suatu aplikasi / mengatur user flow. Controller lah yang akan menentukan bussiness process dari aplikasi yang dibangun. Controller akan merespon setiap inputan dari user dengan melakukan pemanggilan terhadap model dan view yang sesuai sehingga request / permintaan dari user tersebugt dapat terpenuhi dengan baik. Biasanya layer controller juga digunakan untuk mengatur ijin akses dan permission. Secara praktis, dalam pemrograman Delphi, controller dapat berupa unit yang berisi function / procedure yang berisi logika bisnis.</p>
<h2>MVC dan MVP</h2>
<p>MVP (Model View Presentation) adalah turunan dari MVC. Presentation mempunyai kesamaan fungsi dengan Controller. Perbedaan MVC dan MVP hanya terletak pada arah komunikasi  antar elemen. Pada MVC, <em>View</em> bisa langsung berkomunikasi dengan <em>Model</em> tanpa melalui <em>Controller</em>. Pada MVP, komunikasi <em>View</em> dengan <em>Model</em> harus melalui <em>Presentation</em>.</p>
<p>Berikut ini ilustrasi yang menggambarkan perbedaan MVC dan MPV</p>
<h1>Contoh PENERAPAN MVC dan MVP DALAM DELPHI PROGRAMMING</h1>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_12.png"><img class="alignnone size-full wp-image-206" title="example_mvc_code_1" src="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_12.png?w=620" alt=""   /></a></p>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_21.png"><img class="alignnone size-full wp-image-207" title="example_mvc_code_2" src="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_21.png?w=620" alt=""   /></a></p>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_3.png"><img class="alignnone size-full wp-image-205" title="example_mvc_code_3" src="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_3.png?w=620" alt=""   /></a></p>
<p>Pada contoh di atas, komunikasi antara View dan Model pada MVC  terjadi melalui penggunaan variabel <strong>SearchResult</strong> pada unit first_model.pas.</p>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_1.png"><img class="alignnone size-full wp-image-209" title="example_mvp_code_1" src="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_1.png?w=620" alt=""   /></a></p>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_2.png"><img class="alignnone size-full wp-image-210" title="example_mvp_code_2" src="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_2.png?w=620" alt=""   /></a></p>
<p><a href="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_3.png"><img class="alignnone size-full wp-image-211" title="example_mvp_code_3" src="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_3.png?w=620" alt=""   /></a></p>
<p>Pada contoh MVP di atas, komunikasi antara <em>View</em> ke <em>Model</em> terjadi melaui <em>Presentation</em> dengan kembalian nilai dari <em>Presentation</em>.</p>
<p>Karena perbedaan yang tipis antara MVP dan MVC, sebagian orang tetap menyebut MVP sebagai MVP. Untuk selanjutnya, pada tulisan ini, tidak dibedakan istilah antara MVC dan MVP</p>
<h1>Penerapan dalam Source Code SMS Manager</h1>
<p>Pada bagian ini saya memberikan salah satu penerapan paradigma MVC pada source code Project SMS Manager Power Logic sebagai contoh, dengan menggunakan:</p>
<ol>
<li>Satu      Unit controller berlaku untuk seluruh unit view pada project, dengan nama con_SMSManager.pas</li>
<li>Satu      Unit Model berlaku dengan nama mod_SMSManager.pas.</li>
</ol>
<p>Pada contoh kali ini source code yang akan terapkan paradigm MVC ada pada method :</p>
<p><strong>procedure TfrmKirimSms.btnTampilkanClick(Sender: TObject);</strong></p>
<p>pada unit ufrmKirimSms.pas  dengan source code sebagai berikut:</p>
<p>1     procedure TfrmKirimSms.btnTampilkanClick(Sender: TObject);</p>
<p>2     var</p>
<p>3       STampil,</p>
<p>4       qryWhere      : String;</p>
<p>5       sWaktuAwal,</p>
<p>6       sWaktuAkhir   : string;</p>
<p>7       TotalHalaman,</p>
<p>8       jmlData       : integer;</p>
<p>9     begin</p>
<p>10      if cbMarketing.ItemIndex=-1 then begin</p>
<p>11        MessageDlg(&#8216;Isikan User ID dulu ..!&#8217;,mtWarning,[mbOK],0);</p>
<p>12        Exit;</p>
<p>13      end;</p>
<p>14</p>
<p>15      if edCustID1.Text &lt;&gt; &#8221; then</p>
<p>16        qryWhere := &#8216; and B.CUST_ID=&#8217;+quotedstr(Trim(edCustID1.Text))+&#8221;;</p>
<p>17</p>
<p>18      sWaktuAwal   := QuotedStr(FormatDateTime(&#8216;yyyy-mm-dd hh:nn:ss&#8217;,dtTanggal1.DateTime));</p>
<p>19      sWaktuAkhir  := QuotedStr(FormatDateTime(&#8216;yyyy-mm-dd hh:nn:ss&#8217;,dtTanggal2.DateTime));</p>
<p>20</p>
<p>21      //sudah digantikan model QueryCountLogSmsOut</p>
<p>22      if cbHalaman.Checked then</p>
<p>23      begin</p>
<p>24        SDataset := DBConn.NewDataset(&#8216;select count(*) &#8216;+</p>
<p>25                           &#8217; from LOG_SMS_OUT A LEFT JOIN AKUN_CUST B on A.hp_tujuan=B.cust_hp where A.WAKTU_REQUEST between &#8216;+</p>
<p>26                           sWaktuAwal+&#8217; and &#8216;+sWaktuAkhir+&#8217; and A.USER_ID=&#8217;+</p>
<p>27                           quotedstr(cbMarketing.Items.Names[cbMarketing.ItemIndex])+&#8217; &#8216;+qryWhere</p>
<p>28                           ,True);</p>
<p>29        try</p>
<p>30          JmlData := SDataset.Fields[0].AsInteger;</p>
<p>31        finally</p>
<p>32        end;</p>
<p>33      end;</p>
<p>34</p>
<p>35      TotalHalaman := Ceil(JmlData/PAGEVIEW);</p>
<p>36      lbJmlData.Caption :=&#8217;Jumlah Data : &#8216;+inttoStr(JmlData)+&#8217; &#8211; Tampil halaman &#8216;+floattostr(edHal.Value)+</p>
<p>37                          &#8216; dari total &#8216;+inttostr(TotalHalaman)+&#8217; halaman&#8217;;</p>
<p>38</p>
<p>39      STampil := inttostr((ceil(edHal.Value)-1)*PAGEVIEW);</p>
<p>40</p>
<p>41      //telah digantikan dengan modul QueryViewLogSmsOut</p>
<p>42      DM.DoDataGrid(DBConn,&#8217;select first &#8216;+inttostr(PAGEVIEW)+&#8217; SKIP &#8216;+STampil+</p>
<p>43                           &#8216; A.URUT, A.WAKTU_REQUEST, A.HP_TUJUAN, B.CUST_ID, A.ISI_SMS &#8216;+</p>
<p>44                           &#8216; from LOG_SMS_OUT A LEFT JOIN AKUN_CUST B on A.hp_tujuan=B.cust_hp where A.WAKTU_REQUEST between &#8216;+</p>
<p>45                           sWaktuAwal+&#8217; and &#8216;+sWaktuAkhir+&#8217; and A.USER_ID=&#8217;+</p>
<p>46                           quotedstr(cbMarketing.Items.Names[cbMarketing.ItemIndex])+&#8217; &#8216;+qryWhere,</p>
<p>47                           sgrdLogSmsOut);</p>
<p>48    end;</p>
<p>Dari  potongan source code di atas, bisa kita simpulkan bahwa yang akan kita pisahkan menjadi</p>
<p>Controller dan Model ada pada source code nomor  24 – 27 dan 42 -  47. Sehingga source code untuk view menjadi seperti berikut:</p>
<p>1     procedure TfrmViewKirimSms.btnTampilkanClick(Sender: TObject);</p>
<p>2     var</p>
<p>3</p>
<p>4       TotalHalaman,</p>
<p>5       jmlData       : integer;</p>
<p>6       sDataset  : IDataset;</p>
<p>7     begin</p>
<p>8       if cbMarketing.ItemIndex=-1 then begin</p>
<p>9         MessageDlg(&#8216;Isikan User ID dulu ..!&#8217;,mtWarning,[mbOK],0);</p>
<p>10        Exit;</p>
<p>11      end;</p>
<p>12</p>
<p>13</p>
<p>14      DoCountLogSmsOut(cbMarketing.Items.Names[cbMarketing.ItemIndex], edCustID1.Text,</p>
<p>15                          dtTanggal1.DateTime, dtTanggal2.DateTime, jmlData);</p>
<p>16</p>
<p>17      TotalHalaman := Ceil(JmlData/PAGEVIEW);</p>
<p>18      lbJmlData.Caption :=&#8217;Jumlah Data : &#8216;+inttoStr(JmlData)+&#8217; &#8211; Tampil halaman &#8216;+floattostr(edHal.Value)+</p>
<p>19                          &#8216; dari total &#8216;+inttostr(TotalHalaman)+&#8217; halaman&#8217;;</p>
<p>20</p>
<p>21</p>
<p>22</p>
<p>23      DoViewLogSmsOut(cbMarketing.Items.Names[cbMarketing.ItemIndex], edCustID1.Text,</p>
<p>24            dtTanggal1.DateTime, dtTanggal2.DateTime,PAGEVIEW,(ceil(edHal.Value)), sDataset);</p>
<p>25</p>
<p>26      DM.DoDataGrid(sDataset,sgrdLogSmsOut);</p>
<p>27</p>
<p>28    end;</p>
<p>Procedure dengan awalan <em>Do</em> adalah controller. Pada contoh di atas, source code <em>DoViewLogSmsOut</em> adalah sebagai berikut:</p>
<p>1     procedure DoViewLogSmsOut(UserId, CustID: string; FromWhen, ToWhen: TDateTime;</p>
<p>2         NumDataPerPage, PageIndex: Integer; var Dataset: IDataset);</p>
<p>3     begin</p>
<p>4</p>
<p>5       Dataset:= QueryViewLogSmsOut(UserId,CustID,FromWhen,ToWhen,</p>
<p>6         NumDataPerPage,(PageIndex-1) * NumDataPerPage );</p>
<p>7</p>
<p>8     end;</p>
<p>Procedure dengan awalan Query adalah Model. Source Code untuk Model  <em>QueryViewLogSmsOut</em> adalah sebagai berikut:</p>
<p>1     function QueryViewLogSmsOut(UserId, CustID: string; FromWhen, ToWhen: TDateTime;</p>
<p>2         NumRecs, AfterRecIdx: Integer): IDataset;</p>
<p>3</p>
<p>4     var</p>
<p>5       sPeriod1, sPeriod2: string;</p>
<p>6     begin</p>
<p>7</p>
<p>8       sPeriod1:= QuotedStr(FormatDateTime(&#8216;yyyy-mm-dd hh:nn:ss&#8217;, FromWhen));</p>
<p>9       sPeriod2:= QuotedStr(FormatDateTime(&#8216;yyyy-mm-dd hh:nn:ss&#8217;, ToWhen));</p>
<p>10      LastExecuteQuery:=</p>
<p>11          &#8216;SELECT FIRST &#8216;+IntToStr(NumRecs)+&#8217; SKIP &#8216;+ IntToStr( AfterRecIdx) +</p>
<p>12          &#8216; A.URUT, A.WAKTU_REQUEST, A.HP_TUJUAN, B.CUST_ID, A.ISI_SMS &#8216;+</p>
<p>13          &#8216; from LOG_SMS_OUT A LEFT JOIN AKUN_CUST B on A.hp_tujuan=B.cust_hp &#8216; +</p>
<p>14          &#8216; where A.WAKTU_REQUEST between &#8216;+</p>
<p>15          sPeriod1+&#8217; and &#8216;+sPeriod2+&#8217; and A.USER_ID=&#8217;+ QuotedStr(UserId);</p>
<p>16      if CustID&lt;&gt;&#8221; then</p>
<p>17        LastExecuteQuery:= LastExecuteQuery + &#8216; and B.CUST_ID=&#8217;+quotedstr(CustID);</p>
<p>18      Result:= DBConn.NewDataset(LastExecuteQuery,True);</p>
<p>19    end;</p>
<p>Sumber :</p>
<p><a href="http://putroweb.blogspot.com/2009/02/mvc-model-view-controller.html">http://putroweb.blogspot.com/2009/02/mvc-model-view-controller.html</a></p>
<p><a href="http://pascal-id.org/-split-mvc-inquiry-by-mambamaestro-t-88.html%23pid1923">http://pascal-id.org/-split-mvc-inquiry-by-mambamaestro-t-88.html#pid1923</a></p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:1472px;width:1px;height:1px;overflow:hidden;"><!--[if gte mso 9]&gt;    &lt;![endif]--><!--[if gte mso 9]&gt;  Normal 0     false false false  IN X-NONE AR-SA                         &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:10.0pt; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	mso-bidi-font-size:10.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:Arial; 	mso-ansi-language:EN-US; 	mso-fareast-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-hansi-font-family:Calibri; 	mso-bidi-font-family:Arial;} @page WordSection1 	{size:612.0pt 792.0pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.WordSection1 	{page:WordSection1;}  /* List Definitions */  @list l0 	{mso-list-id:9914; 	mso-list-type:hybrid; 	mso-list-template-ids:1022758830 69271567 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l0:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l0:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l0:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l0:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l1 	{mso-list-id:29186746; 	mso-list-type:hybrid; 	mso-list-template-ids:1022758830 69271567 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l1:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l1:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l1:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l1:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l2 	{mso-list-id:65808020; 	mso-list-type:hybrid; 	mso-list-template-ids:1655973974 1003546244 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l2:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l2:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l2:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l2:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l3 	{mso-list-id:174928850; 	mso-list-type:hybrid; 	mso-list-template-ids:1657042478 1482051108 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l3:level1 	{mso-level-start-at:5; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l3:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l3:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l3:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l4 	{mso-list-id:177277889; 	mso-list-type:hybrid; 	mso-list-template-ids:1491765480 -1289956610 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l4:level1 	{mso-level-start-at:4; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l4:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l4:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l4:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l5 	{mso-list-id:693849652; 	mso-list-type:hybrid; 	mso-list-template-ids:-413624310 669150272 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l5:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l5:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l5:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l5:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l6 	{mso-list-id:846023585; 	mso-list-type:hybrid; 	mso-list-template-ids:1490158956 1222659034 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l6:level1 	{mso-level-start-at:2; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l6:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l6:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l6:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l7 	{mso-list-id:1543324809; 	mso-list-type:hybrid; 	mso-list-template-ids:-401047260 -2008414992 69271577 69271579 69271567 69271577 69271579 69271567 69271577 69271579;} @list l7:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level2 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level3 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l7:level4 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level5 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level6 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} @list l7:level7 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level8 	{mso-level-number-format:alpha-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt;} @list l7:level9 	{mso-level-number-format:roman-lower; 	mso-level-tab-stop:none; 	mso-level-number-position:right; 	text-indent:-9.0pt;} ol 	{margin-bottom:0cm;} ul 	{margin-bottom:0cm;} --><!--[if gte mso 10]&gt; &lt;!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:&quot;Table Normal&quot;; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-parent:&quot;&quot;; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-bidi-font-family:Arial;} --> <!--[endif]--></p>
<p class="MsoNormal">Untuk MVC:</p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal">Buat      aplikasi baru, 1 form, 1 edit, 1 label, 1 button. Simpan unit form tsb dgn      nama <span style="color:mediumblue;">first_view.pas</span>, beri nama form      dengan frmView.</li>
</ol>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">1.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;">TForm1 <span style="color:#000066;">=</span> <strong><span style="color:black;">class</span></strong><span style="color:#000066;">(</span>TForm<span style="color:#000066;">)</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">2.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> Edit1<span style="color:#000066;">:</span> TEdit<span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">3.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> Button1<span style="color:#000066;">:</span> TButton<span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">4.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> Label1<span style="color:#000066;">:</span> TLabel<span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">5.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">procedure</span></strong> Button1Click<span style="color:#000066;">(</span>Sender<span style="color:#000066;">:</span> <strong><span style="color:#000066;">TObject</span></strong><span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">6.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">end</span></strong><span style="font-size:10pt;font-family:&amp;">;</span><span style="font-size:10pt;font-family:&amp;"> </span></p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal">Buat 2      unit dgn nama <span style="color:mediumblue;">first_model.pas</span> dan <span style="color:mediumblue;">first_controller.pas</span>.</li>
<li class="MsoNormal">Di      frmView, ambil event onClick dari Button1 dgn isi berikut</li>
</ol>
<p class="MsoNormal" style="margin-left:36pt;text-indent:-.55pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">1.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">procedure</span></strong><span style="font-size:10pt;font-family:&amp;"> TForm1<span style="color:#000066;">.</span><span style="color:#006600;">Button1Click</span><span style="color:#000066;">(</span>Sender<span style="color:#000066;">:</span> <strong><span style="color:#000066;">TObject</span></strong><span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">2.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">begin</span></strong><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">3.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">if</span></strong> Edit1<span style="color:#000066;">.</span><span style="color:#006600;">Text</span> <span style="color:#000066;">=</span> <span style="color:red;">&#8221;</span> <strong><span style="color:black;">then</span></strong> <span style="color:#000066;">Exit;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">4.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">5.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> DoSearch<span style="color:#000066;">(</span>Edit1<span style="color:#000066;">.</span><span style="color:#006600;">Text</span><span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">6.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> Label1<span style="color:#000066;">.</span><span style="color:#006600;">Caption</span> <span style="color:#000066;">:=</span> SearchResult<span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">7.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">if</span></strong> Label1<span style="color:#000066;">.</span><span style="color:#006600;">Caption</span> <span style="color:#000066;">=</span> <span style="color:red;">&#8221;</span> <strong><span style="color:black;">then</span></strong> Label1<span style="color:#000066;">.</span><span style="color:#006600;">Text</span> <span style="color:#000066;">=</span> <span style="color:red;">&#8216;nothing found&#8217;</span><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">8.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">end</span></strong><span style="font-size:10pt;font-family:&amp;">;</span></p>
<p class="MsoNormal" style="margin-left:36pt;">
<ol style="margin-top:0;" type="1">
<li class="MsoNormal">Di unit <span style="color:mediumblue;">first_controller.pas</span>, buat procedure      DoSearch dgn isi berikut:</li>
</ol>
<p class="MsoNormal" style="margin-left:36pt;text-indent:-.55pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">1.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">procedure</span></strong><span style="font-size:10pt;font-family:&amp;"> DoSearh<span style="color:#000066;">(</span><strong><span style="color:black;">const</span></strong> Keyword<span style="color:#000066;">:</span> <strong><span style="color:#000066;">string</span></strong><span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">2.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">begin</span></strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">3.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">if</span></strong> <span style="color:#000066;">Length(</span>Keyword<span style="color:#000066;">)</span> &lt; <span style="color:blue;">3</span> <strong><span style="color:black;">then</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">4.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SearchResult <span style="color:#000066;">:=</span> <span style="color:red;">&#8216;minimum keyword length is 3 chars&#8217;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">5.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">else</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">6.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> QuerySearchResult<span style="color:#000066;">(</span>Keyword<span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">7.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">end</span></strong><span style="font-size:10pt;font-family:&amp;">;</span></p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal">Di unit <span style="color:mediumblue;">first_model.pas</span>, buat procedure      QuerySearchResult dgn isi berikut:</li>
</ol>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">1.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">var</span></strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">2.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SearchResult<span style="color:#000066;">:</span> <strong><span style="color:#000066;">string</span></strong><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">3.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">4.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">procedure</span></strong><span style="font-size:10pt;font-family:&amp;"> QuerySearchResult<span style="color:#000066;">(</span>Keyword<span style="color:#000066;">:</span> <strong><span style="color:#000066;">string</span></strong><span style="color:#000066;">);</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">5.<span style="font:7pt &amp;"> </span></span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">begin</span></strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">6.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SearchResult <span style="color:#000066;">:=</span> <span style="color:red;">&#8221;</span><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">7.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">8.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SQL<span style="color:#000066;">.</span><span style="color:#006600;">Query</span> <span style="color:#000066;">:=</span> <span style="color:red;">&#8216;select name from employee where name like %&#8217;</span><span style="color:#000066;">+</span>Keyword<span style="color:#000066;">+</span><span style="color:red;">&#8216;%&#8217;</span><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">9.<span style="font:7pt &amp;"> </span></span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SQL<span style="color:#000066;">.</span><span style="color:#006600;">Open</span><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">10.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">11.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">if</span></strong> SQL<span style="color:#000066;">.</span><span style="color:#006600;">RecordCount</span> &gt; <span style="color:blue;">0</span> <strong><span style="color:black;">then</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">12.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">begin</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">13.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">while</span></strong> <strong><span style="color:black;">not</span></strong> SQL<span style="color:#000066;">.EOF</span> <strong><span style="color:black;">do</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">14.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">begin</span></strong></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">15.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SearchResult <span style="color:#000066;">:=</span> SearchResult <span style="color:#000066;">+</span> SQL<span style="color:#000066;">.</span><span style="color:#006600;">Fields</span><span style="color:#000066;">[</span><span style="color:red;">'name'</span><span style="color:#000066;">].</span><span style="color:#006600;">AsString</span> <span style="color:#000066;">+</span> NewLine<span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">16.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SQL<span style="color:#000066;">.</span><span style="color:#006600;">Next</span><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">17.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">end</span></strong><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">18.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> <strong><span style="color:black;">end</span></strong><span style="color:#000066;">;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">19.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> </span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">20.</span><!--[endif]--><span style="font-size:10pt;font-family:&amp;"> SQL<span style="color:#000066;">.Close;</span></span></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;line-height:14.4pt;vertical-align:top;"><!--[if !supportLists]--><span style="font-size:10pt;font-family:&amp;">21.</span><!--[endif]--><strong><span style="font-size:10pt;font-family:&amp;">end</span></strong><span style="font-size:10pt;font-family:&amp;">;</span></p>
</div>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=196&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/07/20/mvc-dalam-delphi-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_12.png" medium="image">
			<media:title type="html">example_mvc_code_1</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_21.png" medium="image">
			<media:title type="html">example_mvc_code_2</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvc_code_3.png" medium="image">
			<media:title type="html">example_mvc_code_3</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_1.png" medium="image">
			<media:title type="html">example_mvp_code_1</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_2.png" medium="image">
			<media:title type="html">example_mvp_code_2</media:title>
		</media:content>

		<media:content url="http://altaifa.files.wordpress.com/2010/07/example_mvp_code_3.png" medium="image">
			<media:title type="html">example_mvp_code_3</media:title>
		</media:content>
	</item>
		<item>
		<title>Apa Itu Zope?</title>
		<link>http://altaifa.wordpress.com/2010/07/20/apa-itu-zope/</link>
		<comments>http://altaifa.wordpress.com/2010/07/20/apa-itu-zope/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 01:33:14 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Web Application Server]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=192</guid>
		<description><![CDATA[Deskripsi Zope, web application server open source. &#8220;untuk setiap harga pada setiap platform tidak ada solusi yang lebih fleksibel daripada Zope” &#8211; Theodore E. Patrick, CIO Indigo Networks Apa itu Zope ? Zope adalah web application server open source yang   source code utamanya ditulis dalam bahasa Python.  Mempunyai fitur transactional database objek  yang dapat menyimpan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=192&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Deskripsi Zope, web application server open source.</p>
<p><em>&#8220;untuk setiap harga pada setiap platform tidak ada solusi yang lebih fleksibel daripada Zope”</em></p>
<p>&#8211; <em>Theodore E. Patrick, <a href="http://www.zope.org/Resources/CaseStudies/ISHOPHERE/">CIO Indigo Networks</a></em></p>
<p><strong>Apa itu Zope ? </strong></p>
<p>Zope adalah <em>web application server</em> open source yang   source code utamanya ditulis dalam bahasa <a href="http://www.python.org/">Python</a>.  Mempunyai fitur transactional database objek  yang dapat menyimpan tidak hanya content dan data custom, namun juga template-template dynamic html, script,  search engine, dan koneksi serta kode database relasional.</p>
<p>Lebih lengkapnya lihat di <a href="http://www.zope.org/WhatIsZope">http://www.zope.org/WhatIsZope</a></p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/python-programming/web-application-server/'>Web Application Server</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=192&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/07/20/apa-itu-zope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>Version Control dan Subversion</title>
		<link>http://altaifa.wordpress.com/2010/07/05/version-control-dan-subversion/</link>
		<comments>http://altaifa.wordpress.com/2010/07/05/version-control-dan-subversion/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 03:18:23 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trigis]]></category>
		<category><![CDATA[version]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=188</guid>
		<description><![CDATA[Apa itu Version Control? Apa itu Subversion? Akan dijelaskan kemudian. Untuk mendaftarkan subversion sebagai service pada Windows (saya menggunakan Windows 7 x64) ketikkan perintah ini pada dos command sc create svn binpath= &#8220;\&#8221;C:\Program Files\SlikSvn\bin\svns erve.exe\&#8221; &#8211;service &#8211;root D:\svnrepository&#8221; start= auto displayname= &#8220;Subversi on Server&#8221; jangan sampai salah titik, koma, dan spasinya! harus ngeplek Filed under: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=188&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Apa itu Version Control?</p>
<p>Apa itu Subversion?</p>
<p>Akan dijelaskan kemudian.<br />
Untuk mendaftarkan subversion sebagai service pada Windows (saya menggunakan Windows 7 x64) ketikkan perintah ini pada dos command</p>
<p> sc create svn binpath= &#8220;\&#8221;C:\Program Files\SlikSvn\bin\svns<br />
erve.exe\&#8221; &#8211;service &#8211;root D:\svnrepository&#8221; start= auto displayname= &#8220;Subversi<br />
on Server&#8221;</p>
<p>jangan sampai salah titik, koma, dan spasinya! harus ngeplek</p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=188&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/07/05/version-control-dan-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>Membuat file dengan ektensi sendiri berasosiatif dengan aplikasi kita</title>
		<link>http://altaifa.wordpress.com/2010/06/07/membuat-file-dengan-ektensi-sendiri-berasosiatif-dengan-aplikasi-kita/</link>
		<comments>http://altaifa.wordpress.com/2010/06/07/membuat-file-dengan-ektensi-sendiri-berasosiatif-dengan-aplikasi-kita/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 05:50:40 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=185</guid>
		<description><![CDATA[Pernah memperhatikan file Microsoft Word kan? yang berekstensi dengan .doc (untuk versi 2003 dan sebelumnya) atau .docx (untuk versi 2007 keatas)? Jika Anda mengklik dobel pada file tersebut di windows explorer, apa yang terjadi? MS Word akan otomatis dijalankan dan membuka isi dari file tersebut. Bagaimana membuat file asosiasi spt itu? Kita harus mendaftarkan extensi [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=185&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pernah memperhatikan file Microsoft Word kan? yang berekstensi dengan .doc (untuk versi 2003 dan sebelumnya) atau .docx (untuk versi 2007 keatas)?</p>
<p>Jika Anda mengklik dobel pada file tersebut di windows explorer, apa yang terjadi? MS Word akan otomatis dijalankan dan membuka isi dari file tersebut. Bagaimana membuat file asosiasi spt itu? </p>
<p>Kita harus mendaftarkan extensi buatan kita ke Windows, Nah berikut ini berikut ini prosedurnya dalam Delphi.</p>
<p>uses registry, shlobj;</p>
<p>procedure RegisterFileType(ExtName:String; AppName:String);<br />
var<br />
  reg:TRegistry;<br />
begin<br />
 reg := TRegistry.Create;<br />
 try<br />
  reg.RootKey:=HKEY_CLASSES_ROOT;<br />
  reg.OpenKey(&#8216;.&#8217; + ExtName, True);<br />
  reg.WriteString(&#8221;, ExtName + &#8216;file&#8217;);<br />
  reg.CloseKey;<br />
  reg.CreateKey(ExtName + &#8216;file&#8217;);<br />
  reg.OpenKey(ExtName + &#8216;file\DefaultIcon&#8217;, True);<br />
  reg.WriteString(&#8221;, AppName + &#8216;,0&#8242;);<br />
  reg.CloseKey;<br />
  reg.OpenKey(ExtName + &#8216;file\shell\open\command&#8217;, True);<br />
  reg.WriteString(&#8221;,AppName+&#8217; &#8220;%1&#8243;&#8216;);<br />
  reg.CloseKey;<br />
 finally<br />
  reg.Free;<br />
 end</p>
<p> SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);<br />
end;</p>
<p>//gunainnya RegisterFileType(&#8216;ekstensi&#8217;,'aplikasimu lengkap dengan pathnya&#8217;);</p>
<p>Sumber: delphi-id.tk</p>
<br />Filed under: <a href='http://altaifa.wordpress.com/category/delphi/'>Delphi</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=185&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2010/06/07/membuat-file-dengan-ektensi-sendiri-berasosiatif-dengan-aplikasi-kita/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
		<item>
		<title>Menampakkan File Hidden / Tersembunyi</title>
		<link>http://altaifa.wordpress.com/2009/10/26/menampakkan-file-hidden-tersembunyi/</link>
		<comments>http://altaifa.wordpress.com/2009/10/26/menampakkan-file-hidden-tersembunyi/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 00:43:49 +0000</pubDate>
		<dc:creator>Abdellah</dc:creator>
				<category><![CDATA[Tip Sehari-hari]]></category>
		<category><![CDATA[vbscrip]]></category>
		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://altaifa.wordpress.com/?p=164</guid>
		<description><![CDATA[Dear Temen2, Baru saja saya dimintai tolong salah satu dosen untuk mengembalikan file-file di flashdisk yang hilang gara2 virus.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=164&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dear Temen2,  Baru saja saya dimintai tolong salah satu dosen untuk mengembalikan file-file word nya yang terserang virus.</p>
<p>Well, setelah saya periksa, ternyata sang virus hanya menghidden file2 nya, dan bisa dinampakkan melalui menu Tools-&gt;Folder Options-&gt;View pada Windows Explorer kemudian</p>
<p>- Pilih <em>Show Hidden Files And Folder</em></p>
<p><em>- </em>Hilangkan cek pada <em>Hide Extension for known files</em>, sehingga kita jenis file apa sebenarnya yang hendak kita akses. Virus biasanya menyembunyikan ektension asli</p>
<p>- Hilangka cek pada <em>Hide protected operating system files</em>, Virus biasa memberikan attribut file sistem operasi pada file korban.</p>
<p>Tampak deh! Kayaknya virusnya sedang nggak aktif.</p>
<p>Tapi karena pak dosen nya awam komputer, musti dihilangkan dulu attribut <em>hidden</em> pada file2 nya. Nah, karena file yang harus dirubah banyak, setelah searching google, saya mendapatkan code berikut dalam vbscript dari http://www.freevbcode.com/ShowCode.asp?ID=8547 :</p>
<p><span style="font-family:&quot;">option explicit<br />
dim fso, strPath, objFolder, objSubFolders, objFile, objSFldr, retVal</span></p>
<p>Set fso = CreateObject(&#8220;Scripting.FileSystemObject&#8221;)</p>
<p>&#8216;set the path to the folder we&#8217;re working in</p>
<p>strPath = inputBox(&#8220;Please enter the physical path to a directory.&#8221;, &#8220;File Attribute Setter&#8221;)</p>
<p>if strPath &lt;&gt; &#8220;&#8221; and fso.folderExists(strPath) then</p>
<p>retVal = msgbox(&#8220;Changing the attributes of all files in &#8221; &amp; vbCrLf &amp; strPath &amp; vbCrLf &amp; &#8220;to Read-only = NO and Hidden = No.&#8221;, vbYesNo+vbQuestion, &#8220;File Attribute Setter&#8221;)</p>
<p>if retVal = 6 then<br />
set objFolder = fso.getFolder(strPath)</p>
<p>for each objFile in objFolder.files<br />
objFile.attributes = 32<br />
next</p>
<p>set objSubFolders = objFolder.subFolders</p>
<p>for each objSFldr in objSubFolders<br />
for each objFile in objSFldr.files<br />
objFile.attributes = 32<br />
next<br />
next</p>
<p>set objSubFolders = nothing<br />
set objFolder = nothing<br />
set fso = nothing</p>
<p>msgbox &#8220;Job complete!&#8221;<br />
else<br />
msgBox &#8220;Job cancelled.&#8221;, vbOKOnly+vbInformation, &#8220;File Attribute Setter&#8221;<br />
end if<br />
else<br />
msgBox &#8220;You must enter a valid directory path to continue.&#8221;, vbOKOnly+vbExclamation, &#8220;File Attribute Setter&#8221;<br />
end if</p>
<p>saya copy kode tersebut ke dalam file text, ubah extensionnya jadi vbs, jalankan dengan klik dobeol. Jadi deh!</p>
<br />Posted in Tip Sehari-hari  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/altaifa.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/altaifa.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/altaifa.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=altaifa.wordpress.com&amp;blog=2700834&amp;post=164&amp;subd=altaifa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://altaifa.wordpress.com/2009/10/26/menampakkan-file-hidden-tersembunyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/098a02d23d5b105700c4e5bbbfcb7906?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif" medium="image">
			<media:title type="html">Abdellah</media:title>
		</media:content>
	</item>
	</channel>
</rss>
