Tampilkan postingan dengan label tutorial dasar. Tampilkan semua postingan
Tampilkan postingan dengan label tutorial dasar. Tampilkan semua postingan

Sebagai lanjutan dari tulisan sebelumnya masih mengenai Canvas dalam HTML5, berikut kita membahas mengenai Fill dan Gradasi (Gradient). Tentu kita hanya menggunakan fungsi2 bawaan HTML5 untuk mengelola canvas. Hasil akhir dari pelajaran kita hari ini kira2 seperti gambar berikut :

HTML5 Canvas Fill and Gradient

Langkah2nya pembuatannya masih sama mulai dari mempersiapkan halaman HTML yang berisi tag canvas dalam <body></body> seperti tag berikut :

<canvas id="canvasku" width="300" height="300"></canvas>

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Selanjutnya rujuk ke file JS atau tambahkan tag <script></script> yang berisi code berikut

var canvas=document.getElementById('canvasku');
var context=canvas.getContext('2d');

/* SOLID */
//kotak 1
context.beginPath();
context.rect(10, 10, 80, 40);
context.fillStyle = 'lime';
context.fill();

//kotak 2
context.beginPath();
context.rect(100, 10, 80, 40);
context.strokeStyle = 'green';
context.stroke();

//kotak 3
context.beginPath();
context.rect(190, 10, 80, 40);
context.fillStyle = 'lime';
context.strokeStyle = 'green';
context.fill();
context.stroke();

/* LINEAR GRADIENT */
//kotak 4
context.beginPath();
var grdf = context.createLinearGradient(10, 3, 10+80, 3); //x1,y1,x2,y2
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.rect(10, 60, 80, 40);
context.fillStyle = grdf;
context.fill();

//kotak 5
context.beginPath();
var grdl = context.createLinearGradient(3, 60, 3, 100);
grdl.addColorStop(0, '#865');   
grdl.addColorStop(1, '#f65');
context.rect(100, 60, 80, 40);
context.strokeStyle = grdl;
context.stroke();

//kotak 6
context.beginPath();
var grdl = context.createLinearGradient(3, 60, 3, 100);
grdl.addColorStop(0, '#865');   
grdl.addColorStop(1, '#f65');
var grdf = context.createLinearGradient(190, 3, 190+80, 3);
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.rect(190, 60, 80, 40);
context.fillStyle = grdf;
context.fill();
context.strokeStyle = grdl;
context.lineWidth = 5;
context.stroke();

//garis bantu
circles([[3, 60],[3, 100]]);
lines([[3, 60],[3, 100]],grdl);
circles([[190, 3],[190+80, 3]]);
lines([[190, 3],[190+80, 3]],grdf);

/* RADIAL GRADIENT */
//lingkaran 1
context.beginPath();
var grdf = context.createRadialGradient(40, 140, 0, 40, 140, 30); //circle1x,circle1y,circle1radius,circle2x,circle2y,circle2radius,
grdf.addColorStop(0, '#234');   
grdf.addColorStop(1, '#23e');
context.arc(40, 140, 30, 0, 2 * Math.PI, false); //lingkaran
context.fillStyle = grdf;
context.fill();

//lingkaran 2
context.beginPath();
var grdf = context.createRadialGradient(110, 140, 20, 110, 140, 30);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(110, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

//lingkaran 3
context.beginPath();
var grdf = context.createRadialGradient(180, 140, 0, 180, 140, 50);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(180, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

//lingkaran 4
context.beginPath();
var grdf = context.createRadialGradient(250, 110, 0, 250, 140, 30);
grdf.addColorStop(0, '#234');
grdf.addColorStop(1, '#23e');
context.arc(250, 140, 30, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

/* KOMBINASI */
//lingkaran besar
context.beginPath();
var grdlin = context.createLinearGradient(0, 235-65, 0, 235+65);
grdlin.addColorStop(0, '#23e');   
grdlin.addColorStop(1, '#234');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdlin;
context.fill();
context.beginPath();
var grdf = context.createRadialGradient(145+20, 235+80, 0, 145+20, 235+80, 130);
grdf.addColorStop(0, 'rgba(255,255,255,0.7)');
grdf.addColorStop(1, 'rgba(255,255,255,0)');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();
context.beginPath();
var grdf = context.createRadialGradient(145-10, 235-40, 0, 145-10, 235-40, 90);
grdf.addColorStop(0, 'rgba(255,255,255,0.9)');
grdf.addColorStop(1, 'rgba(255,255,255,0)');
context.arc(145, 235, 65, 0, 2 * Math.PI, false);
context.fillStyle = grdf;
context.fill();

/* fungsi tambahan */
function circles(a,color){
  color=color||'rgba(0,0,0,0.5)';
  for (var i=0; i<a.length; i++ ){
    context.beginPath();
    context.arc(a[i][0], a[i][1], 3, 0, 2 * Math.PI, false);
    context.fillStyle = color;
    context.fill();
  }
}

function lines(a,color){
  color=color||'rgba(0,0,0,0.5)';
  context.beginPath();
  context.moveTo(a[0][0],a[0][1]);
  for (var i=1; i<a.length; i++ ){
    context.lineTo(a[i][0],a[i][1]);
  }
  context.lineWidth = 1;
  context.strokeStyle = color;
  context.stroke();
}

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Maka hasilnya akan menjadi seperti gambar di atas, atau hasil berikut :

See the Pen Canvas Basic (Fill & Gradient) by Agus Made (@agusmade) on CodePen.

Maaf saya masih males ngasi panduan bertele2 dalam kata2, karna dalam soure code sudah disertai ketarangan tidap bagiannya. Kalo ada yang belum jelas, atau salah, atau usul atau protes, silahkan tulis komen.
Moga pikiran yang baik senantiasa menyertai kita.
Makasih

Canvas dalam HTML5 bukanlah barang baru, namun kebanyakan dari web developer khususnya yang berkutat di HTML5 dan javascript jarang peduli sama hal ini. Mengapa demikian? karena udah banyak library2 javascript yang instan dan mudah digunakan untuk pengelolaan gambar.

Gak peduli apapun alasannya, tahu bagaimana cara ngurusi canvas di HTML5 lebih baik daripada gak tahu sama sekali. Karna sebagian besar library pengelolaan gambar dengan javascript menggunakan object dan fungsi dasar dalam HTML5 canvas.

Dalam Tutorial ini kita akan belajar membuat gambar2 sederhana pada canvas menggunakan fungsi2 bawaan pada canvas. Berikut kira2 penampilan hasil dari apa yang kita lakukan :

HTML5 Canvas Line and Curve

Langkah2nya pembuatannya adalah sebagai berikut :
Pertama siapkan halaman HTML yang berisi tag canvas dalam <body></body> seperti tag berikut :

<canvas id="canvasku" width="400" height="50"></canvas>

See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Selanjutnya rujuk ke file JS atau tambahkan tag

yang berisi sintaks berikut :

var canvas=document.getElementById('canvasku');
var context=canvas.getContext('2d');

/* GARIS (line) */
context.beginPath();
context.moveTo(0,10);
context.lineTo(200,100);
context.stroke();

context.beginPath();
context.moveTo(50,10);
context.lineTo(250,100);
//ukuran garis
context.lineWidth=10;
context.stroke();

context.beginPath();
context.moveTo(100,10);
context.lineTo(300,100);
context.lineWidth=10;
//warna garis
context.strokeStyle = '#ff0000';
context.stroke();

context.beginPath();
context.moveTo(150,10);
context.lineTo(350,100);
context.lineWidth=15;
context.strokeStyle = 'rgba(0,0,255,.5)';
//ujung garis
context.lineCap = 'round';
context.stroke();

/* BUSUR (arc) */
context.beginPath();
context.arc(10, 100, 50, 0, Math.PI/2, false); //x, y, radius, startAngle, endAngle, counterClockwise
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'green';
context.stroke();
circles([[10,100]]); //titik pusat

context.beginPath();
context.moveTo(10, 200)
context.arcTo(50, 200, 50, 180, 20); //x1, y1, x2, y2, radius
context.arcTo(50, 140,100, 190, 15);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'purple';
context.stroke();
circles([[10,200],[50, 200],[50, 180],[50, 140],[100, 190]]); //titik pusat
lines([[10,200],[50, 200],[50, 180],[50, 140],[100, 190]]); //titik pusat

/* KURVA (curve) */
context.beginPath();
context.moveTo(80,110);
context.quadraticCurveTo(100,220,240,110);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'blue';
context.stroke();
circles([[80,110],[100,220],[240,110]]); //titik bantu
lines([[80,110],[100,220],[240,110]]); //garis bantu

context.beginPath();
context.moveTo(140,200);
context.bezierCurveTo(240,260,390,110,240,120);
context.lineWidth = 5;
context.lineCap = 'butt';
context.strokeStyle = 'red';
context.stroke();
circles([[140,200],[240,260],[390,110],[240,120]]); //titik bantu
lines([[140,200],[240,260],[390,110],[240,120]]); //garis bantu

function circles(a,color){
  color=color||'rgba(0,0,0,0.5)';
  for (var i=0; i<a.length; i++ ){
    context.beginPath();
    context.arc(a[i][0], a[i][1], 3, 0, 2 * Math.PI, false);
    context.fillStyle = color;
    context.fill();
  }
}

function lines(a,color){
  color=color||'rgba(0,0,0,0.5)';
  context.beginPath();
  context.moveTo(a[0][0],a[0][1]);
  for (var i=1; i<a.length; i++ ){
    context.lineTo(a[i][0],a[i][1]);
  }
  context.lineWidth = 1;
  context.strokeStyle = color;
  context.stroke();
}
See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Maka hasilnya akan menjadi seperti gambar di atas, atau hasil berikut :

See the Pen Canvas Basic (Line & Curve) by Agus Made (@agusmade) on CodePen.

Maaf tidak banyak panduan dalam kata2, karna dalam soure code semua ada keterangannya. Kalo ada yang belum jelas, atau salah, atau usul atau protes, silahkan tulis komen.

Moga pikiran yang baik senantiasa menyertai kita.
Makasih

Sebuah trik mensiasati blogger agar mau memenggal artikel yg terlalu panjang. dan tidak menampilkan semua di halaman utama.
aseli bikinan agusmade

Kayaknya ini sangat penting dan banyak sekali para blogger mengharapkan fitur ini difasilitasi oleh blogger, tapi entah mengapa blogger belum memfasilitasinya. Kalo pada wordpress kita cukup memberi tag html sederhana seperti ini :

 <!--more-->

sedangkan diblogger gak ada.
Tapi jangan kecewa dulu, artikel ini saya post untuk menangani masalah ini. Setelah saya telusuri helpnya blogger, akhirnya saya ketemu cara (baca: akal-akalan) yang disarankan untuk melakukannya.

Kita mulai, Pada dasarnya metode ini hanyalah akal-akalan penampilan saja, artinya tulisan lengkap hanya tidak di tampilkan, bukan tidak ada. Namun setidaknya dapat mengatasi masalah capek-nya pengguna hanya untuk menggulung layar di halaman utama blog anda hanya untuk melihat 5 sampai 10 blog yang tampil, dihalaman utama.
Pengguna hanya akan melihat summary pada setiap post yg ada dihalaman utama dan dapat membaca selengkapnya tulisan tersebut pada halaman terpisah, hanya dengan mengklik tulisan "Baca Selengkapnya!",
Bagaimana cara membuatnya?

Berikut adalah langkah demi langkah melakukan hal ini :

Edit CSS template blog anda
Setelah anda login diblogger Pilih seting TataLetak | trus Edit HTML (ini kalo blogger anda disetting Bahasa Indonesia, kalo nggak cari aja link yang maksudnya sama), setelah itu, untuk jaga-jaga jangan lupa backup dulu template anda dengan mengklik tulisan Download Template Lengkap lalu simpan. seandainya ada kesalahan dalam utak-atik, anda dapat menguploadnya kembali.

beri tanda Cek pada CheckBox "Expand Template Widget" biar semuanya kelihatan.
terus cari tulisan
</head>
lalu ketikkan kode beriku ini diatasnya:

 <style>
  <b:if cond='data:blog.pageType == "item"'>
   span.fullpost {display:inline;}
  <b:else/>
   span.fullpost {display:none;}
  </b:if>
 </style>

tujuannya adalah mengatur kondisi penampilan pada keadaan : jika hanya artikel tersebut yang ditampilkan maka bagian yang ada didalam "span" dengan "class=fullpost" akan ditampilkan, selain itu tidak.

Tambahkan Link pada Tiap Akhir Artikel di halaman Utama
selanjutnya cari tulisan :
<data:post.body/>
ketikan kode berikut dibawahnya :

 <b:if cond='data:blog.pageType != "item"'>
  <a expr:href='data:post.url' target='_blank'>Baca Selengkapnya !</a>
 </b:if>

tujuannya adalah tulisan "Baca Selengkapnya !" -- yang bisa di klik untuk membaca artikel selengkapnya --, pada setiap akhir artikel dihalaman utama.
Selanjutnya simpan template anda dengan mengkli tombol "SIMPAN TEMPLATE".

Edit Semua Post yang ingin dipenggal
Nah, ini adalah bagian yang paling menyebalkan.
kita harus mengedit setiap Artikel yang sudah kita kirim untuk menentukan sampai dimana summary artikel kita.
Lakukan pengeditan berikut dalam mode HTML.

Tentukan bagian pemenggalan artile anda, dan beri tag berikut :

 Ini adalah contoh bagian summary artikel 
 dan akan tampil di halaman utama.
 <span class=fullpost>
  Dan ini adalah kelanjutan-nya, 
  dan bagian ini tidak akan tampil di halaman utama
 </span>

Perhatikan kode di atas, bagian yang ada dibuka dengan "<span class=fullpost>" dan ditutup dengan "</span>" tidak akan tampil pada halaman utama.

Saat pengguna meng-klik tulisan Baca Selengkapnya! maka web akan membuka window baru dan menampilkan seluruh artikel.
Sudah selesai, ohya, Anda dapat memodifikasinya, misalnya hilangkan tulisan target='_blank' biar tidak selalu membuka window baru, atau ganti tulisan "Baca Selengkapnya!" dengan kata2 lain sesuai selera.

Artikel ini sudah saya coba di sini dan berhasil. selamat mencoba.

Terima kasih
Agus Made K http://agusmade.blogspot.com

 

aseli bikinan agus made
Seperti biasa, saya berasumsi anda sudah mengenal CorelDraw (sebuah aplikasi pengolah gambar berbasis vektor yg lumayan terkenal). Seandainya anda belum mengenalnya, sangat saya sayangkan tulisan ini bukan untuk anda.

Langsung saja, siapkan alat dan bahan sebagai berikut :
1. Aplikasi CorelDraw yang mendukung VBA (saya menggunakan CorelDraw 12)
2. Aplikasi AdobePhotoshop (opsional)
3. Secangkir Kopi (kalo anda ngopi), sebatang rokok (kalo memang perokok). kalo nggak ada, beli di warung sebrang jalan.

Langkahnya sangat sederhana, mudah, cepat dan hasilnya keren. Bermula dari jalankan CorelDraw. Buka VisualBasic Editor-nya (cek menu Tools|VisualBasic|VisualBasic Editor...) Pastikan Project Explorernya tampil, kalo belum cek menu View|Project Explorer. DoubleClick "ThisDocument" pada Project Explorer (VBAProject|CorelDraw12 Objects). Lalu ketik (atau copy-paste) script berikut pada Code Editor-nya:

Sub latihan()
Dim sa As Shape
For i = 1 To 300
Set sa = ActiveLayer.CreateArtisticText((Rnd() * 100) / 10, (Rnd() * 80) / 10,"Agus Made Krisna Parta", _
cdrEnglishUS, , "Arial", (Rnd() * 200) / 10 + 4, cdrTrue, cdrTrue, , cdrLeftAlignment)
sa.Transparency.ApplyUniformTransparency Rnd() * 100
Next i
End Sub


Kalo udah, Tutup VisualBasic Editor dan kembali ke Corel. lalu jalankan Script Anda (Pilih menu Tools|VisualBasic|Play..., pilih "latihan"|Run)
Tunggu sebentar, dan Lihat hasilnya... wow menakjubkan!!! keren khan?
Biar lebih keren SelectAll terus beri warna (misalnya Biru), export ke *.psd, buka di Photoshop, beri latar hitam dan hasilnya akan tampak seperti gambar di atas.


Hehe... saya rasa sudah cukup bikin 'sakit kepala' para pengguna CorelDraw dan Photoshop yg Konvensional. Untuk informasi lebih lengkap soal VBA pada CorelDraw silahkan pencet F1 dari VisualBasic Editor-nya. oke...

dan berikut adalah contoh2 hasil utak-atik VBA pada CorelDraw yg dan saya beri sentuhan akhir dengan Photoshop:





Terima kasih
Agus Made K (http://agusmade.blogspot.com)
aseli bikinan agus made

Pastikan paket komponen JVCL sudah terinstal pada delphi anda, jika belum silahkan download di : http://jvcl.sourceforge.net dan ikuti langkah instalasinya.

Jika semua sudah beres, kini kita mulai.

buat program baru, dan tambah kan dua form lagi, hingga program kita terdiri dari tiga Form. Jangan lupa set ukuran Form2 dan Form3 lebih kecil dari Form1 (sekitar 250x250an), dan set properti "formstyle"-nya menjadi "fsStayOnTop" karena ke dua form ini akan dijadikan Dockable Form.

pada Form1 (form utama) tambahkan dua buah Button, dan komponen TJvDockServer ( dari tab "Jv Docking" dikomponen palette), tambahkan juga salah satu komponen Dock Style (misalnya TJvDockVIDVCStyle).

set property JvDockServer1.DockStyle=JvDockVIDVCStyle1

pada Form2 tambahkan komponen TJvDockClient (juga dari tab "Jv Docking").

hubungkan Form2 dengan Form1, bisa dilakukan dengan menambahkan "Unit1" pada "uses" atau pilih menu "File | Use unit" kemudian pilih unit1.

set property JvDockClient1.DockStyle=Form1.JvDockVIDVCStyle1

lakukan hal yang sama (seperti Form2) untuk Form3.

beri event OnClick pada Button1 dan Button2 yang ada di Form1 untuk menampilkan masing-masing untuk menampilkan Form2 dan Form3.

kurang lebih begini :

//...
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form3.Show;
end;
//...

selesai.

Jalankan program, klik Button1 dan Button2, arahkan ke dua Form ini ke pinggir Form1 lihat hasilnya.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made

Saatnya kita belajar implementasi OLE Automation, kali ini kita belajar cara sederhana mengendalikan Photoshop dari aplikasi yang kita buat dengan Delphi. Saya belum tahu mulai Photoshop versi berapa yang mendukung ini, yang jelas dengan Photoshop CS, tidak ada masalah.

Mula-mula jalankan Photoshop pada komputer anda, buka file gambar.

Buat program dengan delphi, tambahkan sebuah "Button" pada form, tambahkan "ComObj" pada "uses", beri event OnClick pada "Button", perhatikan source code berikut :

uses
//...
ComObj
//...

//...
procedure TForm1.Button1Click(Sender: TObject);
var
PhotoShop: OLEVariant;
begin
try
PhotoShop := CreateOleObject('Photoshop.Application');
except
ShowMessage('Error...');
Exit;
end;
//contoh GaussianBlur
PhotoShop.activeDocument.activeLayer.applyGaussianBlur(5);
end;
//...

Jalankan program anda, Klik Tombol-nya dan lihat di Photosop, gambar akan menjadi 'mblawur' karena efek "applyGaussianBlur" yang diperintahkan oleh program anda. Gampang khan?

Anda juga bisa memberikan efek lain, atau memberikan aktivitas lain pada Photoshop, untuk lebih jelasnya silahkan baca "Scripting Guide" pada Photoshop.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made

Kali ini kita belajar cara sangat sederhana membuat aplikasi 3D dengan OpenGL menggunakan Delphi dan GLScene. Latihan ini akan sangat tidak berguna jika anda sudah mahir, tapi jangan protes dulu, saya belum banyak melihat teman-teman membuat aplikasi Tiga Dimensi apalagi pake Delphi.

Seperti biasa, saya berasumsi GLScene sudah terinstal dengan baik pada delphi anda, kalo belum silahkan kunjungi web resmi GLScene di http://glscene.org/, download versi terbaru yang cocok dengan delphi anda dan ikuti petunjuk instalasinya.

Karena kemudahan menggunakan GLScene, anda tidak diwajibkan untuk tahu apa itu OpenGL, bagaimana menggunakannya apalagi bagaimana ia bekerja. namun jika anda tertarik untuk tahu lebih jauh silahkan kunjungi http://www.opengl.org/.

Langsung saja, buat proyek baru dengan delphi, tempatkan beberapa komponen, pada form anda, komponen-komponen tersebut antara lain: TGLScene,TGLSceneViewer dan TAsyncTimer (yang semuanya terdapat pada komponen palette "GLScene").


Double Click komponen "GLScene1", akan tampil dialog "GLScene Editor".

Pada "Object Treeview" pilih "Scene objects", klik kanan, pilih "Add object | DummyCube".

pilih "DummyCube1" (yang baru anda buat), klik kanan, pilih "Add object | Special objects | SpaceText".

pilih "SpaceText1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
Text="Agus Made Krisna" // ini cuma contoh, "AgusMade" saja juga boleh... :-)
Material.FrontProperties.Emission.Blue=0.718 // warnanya agak biru.
Position.X=-3.6 // geser ke kiri dikit.

kembali ke dialog "GLScene Editor" pilih "Scene objects", klik kanan, pilih "Add object | LightSource".

pilih "GLLightSource1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
Position.X=-2 // geser ke kiri dikit.
Position.Y=3 // geser ke atas dikit.
Position.Z=4 // geser ke depan dikit.

kembali lagi ke dialog "GLScene Editor" pilih "Cameras", klik kanan, pilih "Add camera".

pilih "GLCamera1" (yang baru anda buat), set Property-nya pada "Object Inspector" :
TargetObject=DummyCube1 // geser ke kiri dikit.
Position.X=-4 // geser ke kiri dikit.
Position.Y=-1 // geser ke bawah dikit.
Position.Z=3.5 // geser ke depan dikit.


Jika sudah, tampilan dialog "GLScene Editor" kira2 akan begini :

dialog "GLScene Editor" sudah boleh ditutup. Klik "GLSceneViewer1" pada form set property Camera=GLCamera1

Akhirnya tampillah dia :
Pada dasarnya program sudah bisa dijalankan tanpa harus mengetik source code sedikitpun. Namun sebagai programmer, masak bikin program hanya klak-klik saja... :-) Kita beri animasi berputar, (sekedar contoh Animasi 3D). Langkah2nya :
Pilih "AsyncTimer1" pada form, set property:
Enabled=True
Interval=1

beri "AsyncTimer1" Event "OnTimer" :

procedure TForm1.AsyncTimer1Timer(Sender: TObject);
begin
DummyCube1.Turn(1);
end;
Sudah selesai, gampang khan?... Oke, Jalankan program maka tampil Tulisan3D berputar :
silahkan download source code untuk Aplikasi ini disini

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

aseli bikinan agus made


Berikut kita belajar cara sangat sederhana mengelola database MySQL menggunakan Delphi dan Zeos. Latihan ini akan sangat tidak berguna jika anda sudah mahir, tapi jangan protes dulu, artikel ini saya muat di sini karena banyak teman yang minta ke saya, karena merasa terlalu awam dengan zeos.

Mula-mula, saya berasumsi zeos sudah terinstal dengan baik pada delphi anda, kalo belum silahkan download di http://www.sourceforge.net/projects/zeoslib, lalu ikuti petunjuk instalasinya.

Saya juga berasumsi bahwa MySQL sudah berjalan pada komputer anda atau setidaknya bisa diakses sepenuhnya dari komputer anda, kalo belum silahkan download di http://dev.mysql.com/downloads/, lalu ikuti petunjuk instalasinya.

dan

Saya juga berasumsi anda sudah dapat menggunakan MySQL dengan baik, entah menggunakan MySQL Front, SQLYog, PHPMyAdmin atau apa aja, yang penting bisa ..:) selanjutnya buat database "latihan" dan buat satu tabel "Anggota" dengan field "Id" varchar(15), "Nama" varchar(15), "Alamat" varchar(255), atau jalankan script berikut pada SQLEditor aplikasi anda:

create database if not exists `latihan`;
USE `latihan`;
DROP TABLE IF EXISTS `anggota`;
CREATE TABLE `anggota` (
`Id` varchar(15) NOT NULL default '',
`Nama` varchar(30) default NULL,
`Alamat` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) TYPE=MyISAM;
insert into `anggota`(`Id`,`Nama`,`Alamat`)
values ('123','Agus Made','Yogyakarta'),
('456','Krisna Parta','Yogyakarta juga');
atau dump file "db_latihan.sql" dari source code latihan ini.

Buat proyek baru pada delphi yang kurang lebih tampilannya seperti gambar berikut :

Deklarasikan variabel gloabal "editmode" untuk pengelolaan mode tampilan dan akses terhadap setiap komponen:


//...
var
Form1: TForm1;
editmode:0..2=0;//0=browse 1=insert 2=edit
implementation
//...

Buat beberapa "procedure" bantu berikut, dan deklarasikan sebelum sintaks "private". kurang lebih seperti ini :

//...
procedure setmode;
procedure kosong;
procedure isi;
//...
private
//...
implementation
//...
procedure TForm1.setmode;
begin
tbTambah.Enabled:=editmode=0;
tbEdit.Enabled:=editmode=0;
tbSimpan.Enabled:=editmode>0;
tbBatal.Enabled:=editmode>0;
tbHapus.Enabled:=editmode=0;

edId.ReadOnly:=editmode=0;
edNama.ReadOnly:=editmode=0;
mmAlamat.ReadOnly:=editmode=0;
end;

procedure TForm1.kosong;
begin
edId.Text:='';
edNama.Text:='';
mmAlamat.Text:='';
end;

procedure TForm1.isi;
begin
edId.Text:=zqAnggota.fieldbyname('Id').asstring;
edNama.Text:=zqAnggota.fieldbyname('Nama').asstring;
mmAlamat.Text:=zqAnggota.fieldbyname('Alamat').asstring;
end;


lalu berikan event OnAfterScroll pada TZReadOnlyQuery "zqAnggota" dengan sintaks berikut:

procedure TForm1.zqAnggotaAfterScroll(DataSet: TDataSet);
begin
isi;
end;

berikan juga event OnFormShow pada TForm1 "Form1" dengan sintaks berikut:
procedure TForm1.FormShow(Sender: TObject);
begin
setmode;
end;


lalu berikan event OnClick pada TButton "tbTambah" dengan sintaks berikut:

procedure TForm1.tbTambahClick(Sender: TObject);
begin
case TButton(sender).tag of
0: begin editmode:=1; kosong; setmode; end; //tambah
1: begin editmode:=2; isi; setmode; end; //edit
2: begin editmode:=0; isi; setmode; end; //batal
3: begin //simpan
if editmode = 1 then //jika data adalah tambahan
zqProses.Script.Text:='insert into anggota(Id,Nama,Alamat)'+
'values("'+edId.text+'","'+edNama.text+'","'+mmAlamat.Text+'")'
else //jika data adalah editan
zqProses.Script.Text:='update anggota set'+
'Id="'+edId.text+'",Nama="'+edNama.text+'",Alamat= "'+
mmAlamat.Text+'" where Id="'+
zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;

zqAnggota.Close; //biar refresh
zqAnggota.Open;
editmode:=0; setmode;
end;
4: begin //hapus
zqProses.Script.Text:='delete from anggota where '+
'Id="'+zqAnggota.fieldbyname('Id').AsString+'"';
zqProses.Execute;
zqAnggota.Close; //biar refresh
zqAnggota.Open;
end;
end;
end;

Event OnClick yang kita buat di atas sebenarnya berlaku untuk semua tombol (tbEdit, tbBatal, tbSimpan dan tbHapus) yang kita buat, menggunakan metode pembagian kerja berdasarkan property "Tag" pada "TButton" tersebut. Jadi hubungkan event OnClick semua tombol tersebut dengan "tbTambahClick"

jika semua sudah 'dilakoni' dengan baik, 'kayaknya' program 'gak bakalan' bermasalah. Jalankan program dan lihat hasilnya, kurang lebih akan seperti ini :

Semua tombol sudah berfungsi dengan baik. Sekali lagi contoh ini sangat sedarhana tidak menggunakan penangan error dan konfirmasi apapun. Pada implementasi sesungguhnya banyak hal yang perlu di'urusi'. Namun demikian setidaknya bagi yang belum pernah 'nyoba' handle MySQL dengan Delphi, bisa menyadari betapa mudah Zeos digunakan untuk hal ini.

silahkan download source code untuk Aplikasi ini disini.

Terima kasih
Agus Made K (http://agusmade.blogspot.com)

More

Label

3D (1) blogger (1) Canvas (2) cerita pribadi (4) cms (1) coreldraw (1) delphi (6) freeware (1) GLScene (1) gps (1) HTML5 (2) humor (1) library (1) mysql (4) OLE/DDE (1) online tools (2) oop (2) OpenGL (1) photoshop (2) php (1) PJU (2) project (4) referensi (1) software (9) tamzbackup (1) tutorial dasar (8) zeos (3)