Belajar Syntak Dasar Operasi Table dan Database

Bagi teman - teman yang baru belajar Visual Foxpro, berikut ini adalah beberapa contoh penggunaan dari syntak - syntax dasar dalam operasi table dan database khususnya table bawaan Visual Foxpro (*.DBF) dan Database bawaan Visual Foxpro (*.DBC). Bila teman - teman biasanya melakukan operasi table dan database (seperti membuat table, mengisi record, menambahkan table ke database dan operasi lainnya) dengan menggunakan fasilitas GUI yang disediakan oleh Visual Foxpro. Sekarang kita coba melakukan operasi - operasi tersebut dengan menggunakan syntak. Teman - teman bisa mencoba dan berlatih syntak - syntak ini dengan menggunakan Command Window atau dapat langsung dimasukkan ke dalam form (misal menaruh syntak di procedure Click pada kontrol Command Button). Selanjutnya ikuti latihan latihan berikut :

Membuat DataBase Baru
- Syntax
   CREATE DATABASE [nama database]
- Contoh
   CREATE DATABASE Kuliah

Menutup Database
- Syntax
  CLOSE DATABASE
- Contoh 
  CLOSE DATABASE Kuliah

Membuka Database
- Syntax
  OPEN DATABASE [nama database]
- Contoh
  OPEN DATABASE Kuliah

Menghapus Database
- Syntax
  DELETE DATABASE [nama database]
- Contoh
  DELETE DATABASE Kuliah
Ket : Untuk menghapus database, database tersebut harus dalam keadaan tertutup.

Membuat Tabel
- Syntax
  CREATE TABEL [nama table](nm_F1 t_f1 (p_f1), nm_FN t_fN (p_fN))
  Ket:
  nm_F=Nama Field
  t_f=Type Field
  p_f=Panjang Field
- Contoh
 CREATE TABEL Mhs(nama c (25), alamat c (50))

Menambahkan Tabel yang telah ada ke Database
- Syntax
  ADD TABLE TableName
- Contoh
  ADD TABLE MHS
Ket : Bila Pembuatan tabel pada saat suatu database terbuka maka secara otomatis
tabel akan berada pada database yang aktif

Membuang Tabel yang ada dalam Database
- Syntax
  REMOVE TABLE TableName
- Contoh
  REMOVE TABLE MHS

Menghapus Table
- Syntax
  DROP TABLE [nama tabel]
- Contoh
  DROP TABLE Mhs

Membuka / Menggunakan Tabel
- Syntax
  USE [nama tabel]
- Contoh
  USE Mhs

Menutup Spesifik Tabel
- Syntax
   USE IN [nama tabel]
- Contoh
  USE IN Mhs
Bila ingin menutup semua table pakai (close table all)

Membuat Index Table & Mengaktifkannya
- Syntax
  INDEX ON [nama field index] TAG [nama index]
  SET ORDER TO [nama index]
Ket:
Table Aktif Harus Ditentukan Dengan Syntax USE
- Contoh
  USE Mhs
  INDEX ON nama TAG nama
  SET ORDER TO nama

Menambah Record Dalam Tabel
- Syntax1
  INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])] ;
  VALUES (eExpression1 [, eExpression2, ...])
- Syntax2
  APPEND BLANK
  REPLACE FieldName1 With Value1
  REPLACE FieldName2 With Value2
  REPLACE FieldNameN With ValueN
- Contoh1
  INSERT INTO Mhs (nama, alamat) ;
  VALUES (“budi”,”Jepara”)
- Contoh2
  APPEND BLANK
  REPLACE nama With “budi”
  REPLACE alamat With “Jepara”

Menampilkan Record
- Syntax1
  Brows && Bentuk Grid
- Syntax2
  List && Ke Layar Editor Foxpro
- Syntax3
  ? [nama field]
- Contoh3
  ? nama
Ket: Untuk Membersihkan Layar Editor Foxpro digunakan Syntax Clear

Berpindah Antar Record
- Syntax1
 Go [no urutan record]
 Go TOP
 Go BOTTOM
- Syntax2
  SKIP [Jumlah Counter]
- Contoh1
  Go 4 && Menuju Record Nomor 4
- Contoh2
 SKIP 1 && Menuju 1 Record dibawah Record Aktif
 SKIP -1 && Menuju 1 Record diatas Record Aktif

Pencarian Record
- Syntax1
 LOCATE FOR [Expression]
Ket:
Dikombinasikan dengan perintah FOUND() untuk mengetahui hasil
pencarian, FOUND() akan Bernilai .T. bila ketemu dan .F. jika tidak
dan tanpa perlu index aktif.
- Syntax2
  SEEK([Expression])
Ket:
Memerlukan index aktif untuk pencarian Expression berisi data yang
mau dicari berdasarkan index aktif, akan mengembalikan nilai .T.
jika ketemu dan .F. jika tidak.
- Contoh1
  LOCATE FOR nama=”budi”
- Contoh2
 SET ORDER TO nama
 SEEK(“budi”)

Mengedit Record
- Syntax1
 UPDATE [nama tabel] SET Field1=Value1, Field2=Value2 ;
 WHERE [Expression]
- Syntax2
 REPLACE FieldName1 With Value1
Ket:
Harus Didahului Proses Pencarian
- Contoh1
 UPDATE Mhs SET nama=”hani”, alamat=”Kudus” ;
 WHERE nama=”budi”
- Contoh2
 LOCATE FOR nama=”budi”
 REPLACE nama With “hani”
 REPLACE alamat With “Kudus”

Menghapus Record
- Syntax1
 DELETE FOR [Expression]
Ket:
Table Aktif Harus Ditentukan Dengan Syntax USE
- Syntax2
 DELETE FROM [nama tabel] WHERE [Expression]
- Contoh1
 USE Mhs
 DELETE FOR nama=”hani”
- Contoh2
 DELETE FROM Mhs WHERE nama=”hani”
Ket: Syntax DELETE diatas tidak akan menghapus data secara fisik,
data masih dapat dikembalikan dengan syntax RECALL, Untuk
Menghapus Data Secara Fisik Setelah Syntax Diatas Harus
Diakhiri dengan Syntax PACK.

Bila teman - teman ingin mendownload latihan dan tutorial diatas dalam bentuk PDF silahkan ambil filenya Disini.


SEMOGA BERMANFAAT..!!

Menampilkan Report dengan Fasilitas Lengkap Menggunakan FoxyPreviewer

FoxyPreviewer adalah salah satu komponen yang dikembangkan oleh codeplex.com dan bisa digunakan secara gratis dengan mengikuti aturan yang telah ditetapkan. Dengan menggunakan FoxyPreviewer teman - teman dapat menampilkan Report (*.FRX) yang telah dibuat dengan berbagai fasilitas yang lengkap daripada kita menampilkan atau mem-preview Report dengan cara standart bawaan Visual Foxpro. Fasilitas - fasilitas tambahan tersebut diantaranya adalah kita dapat menyimpan atau mencetak Report kita dengan berbagai format seperti PDF RTF, IMAGE dan HTML. Selain itu juga ada fasilitas untuk mengirimkan Report kita via email. Sebelum kita mencoba FoxyPreviewer ini silahkan download dulu project lengkap aplikasinya di link di bawah ini :


Cara menggunakan FoxyPreviewer ini terbagi menjadi 3 jenis. Ketiga jenis ini berbeda dari sisi source code yang digunakan atau untuk mengakses FoxyPreviewer, cara distribusi dan kelengkapan fasilitas yang bisa di  akses. OK langsung saja kita pelajari cara tersebut satu demi satu.

Cara Pertama :
Ini merupakan cara yang paling mudah karena untuk menggunakan FoxyPreviewer karena tinggal menggunakan syntax :

DO FOXYPREVIEWER.APP 
REPORT FORM NamaReport PREVIEW 

Dengan menggunakan cara ini maka teman - teman tidak bisa menyimpan Report dengan format TXT dan HTML. Selain itu teman - teman juga tidak bisa melakukan pemilihan printer melalui "combo list printer" dan otomatis akan menggunakan printer yang sudah diatur sebagai default printer. Dan juga tambahan fasilitas untuk menentukan jumlah berapa kali Report akan di cetak juga tidak disediakan. 
FoxyPreviewer dengan Fasilitas Terbatas
Dengan menggunakan cara ini bila teman - teman ingin mendistribusikan aplikasi yang memanfaatkan FoxyPreviewer, perhatikan hal - hal berikut :
  1. Jangan tambahkan FoxyPreviewer.APP (File ada di dalam project FoxyPreviewer v2.13 yang telah teman - teman download) ke dalam Project. Bila tetap ditambahkan harus bersifat "Exclude"
  2. Tempatkan FoxyPreviewer.APP di Folder Utama atau Satu Folder dengan Aplikasi (*.exe) yang telah teman - teman buat. Bila ingin di tempatkan di folder lain, pastikan teman - teman sudah mengatur SET PATH TO NamaFolder ke Folder tersebut.
  3. Syntax DO FOXYPREVIEWER.APP tidak harus selalu dijalankan / diketikkan sebelum menjalankan syntax REPORT FORM NamaReport PREVIEW, lebih efektif di cantumkan / diketikkan sekali saja di Main Program atau di Procedure load atau init milik Form Utama.
Cara Kedua :
Menggunakan source code di bawah ini untuk mengakses FoxyPreviewer untuk melakukan preview report.

LOCAL loReport AS "PreviewHelper" OF "FoxyPreviewer.App" 
loReport = CREATEOBJECT("PreviewHelper") 
loReport.AddReport(NamaReport)
loReport.RunReport()

Dengan menggunakan langkah ini maka source code yang digunakan untuk mengakses FoxyPreviewer akan lebih panjang dari pada cara pertama. Tetapi bila menggunakan cara ini maka semua semua fasilitas yang disediakan oleh FoxyPreviewer akan dapat diakses.
FoxyPreviewer dengan Fasilitas Lengkap
Dengan menggunakan cara kedua ini, bila teman - teman ingin mendistribusikan aplikasi yang memanfaatkan FoxyPreviewer, perhatikan hal - hal berikut :
  1. Jangan tambahkan FoxyPreviewer.APP (File ada di dalam project FoxyPreviewer v2.13 yang telah teman - teman download) ke dalam Project. Bila tetap ditambahkan harus bersifat "Exclude"
  2. Tempatkan FoxyPreviewer.APP dan File - File Report (*.FRX) di Folder Utama atau Satu Folder dengan Aplikasi (*.exe) yang telah teman - teman buat. Bila ingin ditempatkan di folder lain, pastikan teman - teman sudah mengatur SET PATH TO NamaFolder ke Folder tersebut.
Kelemahan dari cara kedua ini adalah saat melakukan distribusi aplikasi, kita juga harus menyertakan file - file Report (*.FRX) yang telah kita buat. Bila tidak melakukan hal itu maka saat menampilkan Report dengan Source Code diatas maka akan muncul pesan error yang mengatakan bahwa file Report teman - teman tidak ditemukan, meski teman - teman sudah merasa menyertakan file -file Report tersebut di dalam project sebelum Mem-Build project ke EXE.

Cara Ketiga :
Cara ketiga ini adalah cara yang dapat digunakan untuk dapat mengakses semua fasilitas yang disediakan oleh  FoxyPreviewer, tetapi tanpa harus menyertakan file -file Report (*.FRX) saat melakukan distribusi aplikasi atau dengan kata lain cara ini adalah cara yang digunakan untuk menutupi kelemahan yang ada di cara yang kedua. Source code yang digunakan untuk cara ketiga ini adalah sebagai berikut :

SET PROCEDURE TO FoxyPreviewerCaller.prg ADDITIVE 

LOCAL loReport as "FoxyPreviewerCaller" OF ;
 "FoxyPreviewerCaller.Prg"
loReport = CREATEOBJECT("FoxyPreviewerCaller")

WITH loReport as ReportHelper
.AddReport(NamaReport)
.RunReport()
ENDWITH

Source code yang digunakan untuk mengakses FoxyPreviewer dengan cara ini lebih panjang daripada kedua cara sebelumnya, tetapi dengan cara ini teman - teman bisa mengakses semua fasilitas yang disediakan oleh FoxyPreviewer tanpa harus menyertakan semua file Report (*.FRX) saat mendistribusikan aplikasi. 

Dengan menggunakan cara ketiga ini bila teman - teman ingin menjalankan atau mem-Preview Report di  project (Saat Design / Run Form / Program) dan saat mendistribusikan aplikasi yang memanfaatkan FoxyPreviewer, perhatikan hal - hal berikut :
  1. Jangan tambahkan FoxyPreviewer.APP (File ada di dalam project FoxyPreviewer v2.13 yang telah teman - teman download) ke dalam Project. Bila tetap ditambahkan harus bersifat "Exclude"
  2. Tambahkan file foxypreviewercaller.prg (File ada di dalam project FoxyPreviewer v2.13 yang telah teman - teman download di dalam folder "Source") ke dalam project dan kemudian arahkan procedure ke file tersebut dengan syntak SET PROCEDURE TO FoxyPreviewerCaller.prg ADDITIVE di Main Program atau di procedure load atau init dari Form Utama.
CATATAN :
Berikut ini adalah hal - hal yang perlu diperhatikan dalam menggunakan FoxyPreviewer dan beberapa solusi yang dapat dilakukan bila terjadi beberapa permasalahan.

  1. Untuk menggunakan FoxyPreviewer ini, teman - teman sebaiknya menggunakan Visual FoxPro 9 SP2 dengan Hotfix terakhir. Bila saat melakukan preview dengan FoxyPreviewer, toolbar dari Foxypreviewer bisa terlihat tetapi tidak dapat diakses, berarti teman - teman belum menginstal Hotfix terakhir. Jadi silahkan instal dulu hotfix tersebut. Bila belum punya file hotfixnya silahkan ambil disini.
  2. Bila dalam suatu kondisi tertentu teman - teman ingin men-disable FoxyPreviewer dan ingin menggunakan preview default dari Visual Foxpro maka bisa gunakan syntak DO FOXYPREVIEWER.APP WITH "Release", bila ingin mengaktifkan kembali tinggal pakai syntax DO FOXYPREVIEWER.APP.
  3. Bila saat mengakses FoxyPeviewer ada pesan error  "Could not load the FOXYPREVIEWER report factory" silahkan update file ReportOutput.APP dengan menginstal file yang bisa diambil disini.
  4. Bila saat melakukan Build project menjadi Exe ada error "Unable to find Unknown XFCGDIPSETTEXTRENDERINGHINT" Pilih Ignore saja.
  5. Bila tidak ingin menggunakan file FoxyPreviewer.APP atau ingin agar FoxyPreviewer dapat digunakan tanpa tergantung  dengan FoxyPreviewer.APP, maka masukkan ke dalam project semua file ini : pr_ExcelListener.vcx, pr_PDFx.vcx, pr_RtfListener.vcx, GdiPlus.vcx, _ReportListener.vcx, _FRXCursor.vcx, FoxyPreviewer.prg, FoxPro_Reporting.H, FoxyPreviewer.H, FrxPreview.H, GdiPlus.H, GdiPlus_locs.H, HPDF_consts.H, ReportListeners.H, ReportListeners_Locs.H, WinCrypt.H, _FrxCursor.H, _Reports.H, LibHPDF.dll, FoxyPreviewer_Locs.dbf, FoxyPreviewer_DefaultSettings.dbf, PR_Settings.scx, PR_SendMail.scx, PR_SendMail2.scx, PR_Search.scx, pr_IMAGES.bmp, pr_Bottom.bmp, pr_Close.bmp, pr_Close2.bmp, pr_Excel.bmp, pr_GoToPage.bmp, pr_Html.bmp, pr_Img.bmp, pr_Locate.bmp, pr_Mail.bmp, pr_Next.bmp, pr_Pdf.bmp, pr_Previous.bmp, pr_Print.bmp, pr_PrintPref.bmp, pr_Save.bmp, pr_Top.bmp, pr_Word.bmp, WWrite.ico. Semua file tersebut ada di dalam project FoxyPreviewer v2.13 yang telah teman - teman download di dalam folder "Source"


SEMOGA BERMANFAAT...!!

Source Code singkat untuk mengkonversi Teks ke Suara

Sebenarnya pada tutorial Konversi Kata ke Suara & Mainkan Animasi dengan MS Agent kita telah mempelajari fungsi - fungsi dari MS Agent secara lengkap yang bisa digunakan untuk memainkan animasi dan melakukan konversi Teks / Kata ke dalam suara. Berikut ini ada trik lagi yang dapat dilakukan untuk melakukan konversi dari Teks / Kata ke suara tetapi dengan menggunakan cara yang lebih sederhana dan hanya terdiri dari 2 baris source code. Berikut Source Codenya :

speech = CreateObject("sapi.spvoice")
speech.speak("Selamat Datang di Foxpro Mania")

Silahkan ubah kata "Selamat Datang di Foxpro Mania" dengan Teks / Kata yang akan di konversi ke dalam suara. Seperti dengan menggunakan MS Agent, dengan menggunakan cara ini kata yang di ucapkan juga akan ber-logat english, meski Kata / Teks yang teman - teman masukkan adalah berbahasa selain english.




SELAMAT MENCOBA...!!

Source Code untuk mengetahui Drive yang sedang terpasang di PC

Berikut ini adalah source code yang dapat digunakan untuk mengetahui drive apa saja yang sedang terpasang di PC atau laptop kita. Disini Drive dibedakan menjadi 3 jenis yaitu (1) HardDrive, (2) CDDrive, (3) RemovableDrive. Source Code di bawah ini akan menampilkan Drive Letter dari masing - masing  drive yang sedang terpasang berdasarkan jenis Drivenya.

cRemovableDrive="" 
cCDDrive="" 
cHardDrive="" 
fso = CreateObject("Scripting.FileSystemObject")
For Each drv In fso.Drives
 DO CASE 
  CASE drv.DriveType = 2
   cRemovableDrive=cRemovableDrive+drv.Path
  CASE drv.DriveType = 4
   cCDDrive=cCDDrive+drv.Path
  CASE drv.DriveType = 1
  cRemovableDrive=cRemovableDrive+drv.Path
 ENDCASE
ENDFOR 
?cRemovableDrive
?cCDDrive
?cHardDrive 

Variable cRemovableDrive akan menampilkan semua Drive Letter yang berjenis RemovableDrive, sedangkan variable cCDDrive akan menampilkan semua Drive Letter yang berjenis CDDrive dan variable cHardDrive akan menampilkan semua Drive Letter yang berjenis HardDrive.


SELAMAT MENCOBA...!!

Sistem Informasi Perwalian Mahasiswa

Ini adalah sebuah aplikasi yang digunakan untuk mengelola perwalian mahasiswa. Aplikasi ini digunakan oleh Dosen Wali saat melakukan bimbingan atau perwalian dengan mahasiswanya. Melalui aplikasi ini maka semua data record perwalian dan keluhan mahasiswa akan ditampung, selain itu Dosen Wali juga dapat melihat grafik indek prestasi mahasiswa perwaliannya. Walaupun aplikasi perwalian ini cukup sederhana, tetapi ide tampilannya cukup unik, bila teman - teman dulu pernah memainkan Game Pro Evolution Soccer yang versi 6, maka pasti tidak asing lagi dengan tampilan aplikasi perwalian ini, karena memang ide tampilannga dari sana. Aplikasi ini menggunakan database MySQL, jadi bisa dicoba digunakan secara bersama - bersama bila terkonek dengan LAN. Sebelum menjalankan atau mencoba project aplikasinya ikuti langkah - langkah berikut :

  1. Pastikan di sistem operasi teman - teman sudah terinstal MySQL dan Konektor ODBC MySQL
  2. Import kan file siswali.sql (File ada di folder project aplikasi perwalian yang bisa di download di bagian bawah posting) ke dalam MySQL teman - teman.
  3. Buka File Koneksi.apu (File ada di folder project aplikasi perwalian yang bisa di download di bagian bawah posting) dengan Notepad atau editor teks lainnya, kemudian lihat parameter yang ada di dalamnya, default isinya adalah seperti di bawah ini :
  4. 1,localhost,root,0,siswali
    Bila teman - teman hanya menjalankan program secara lokal di PC biarkan nilai localhost tetap seperti diatas, tetapi bila teman - teman ingin menjalankannya di jaringan secara client - server localhost bisa diganti dengan nama komputer server atau IP addres server. Bila teman - teman ingin menggunakan user root bawaan MySQL maka biarkan nilai root tetap, tetapi bila ingin menggunakan user lain maka ubah nilai root dengan nama user yang ingin digunakan. Nilai 0 adalah berarti user yang sedang digunakan baik itu root atau user lain tidak mempunya password tetapi bila user yang digunakan sudah di kasih password maka ubah nilai 0 dengan password user yang digunakan.
  5. Selanjutnya silahkan jalankan aplikasi sistem perwalian ini dengan menjalankan prgutm.prg. Dan pertama kali login dengan username administrator dengan password admin.
Aplikasi perwalian mahasiswa ini hanya terdiri dari satu form saja, tetapi di dalam form tersebut nanti akan ada banyak container yang berfungsi sebagai ganti untuk form anak. Bila penasaran untuk mencobanya, silahkan download project aplikasinya di link di bawah ini :




SELAMAT MENCOBA...!!

Source Code untuk Compress dan Extract File Zip

Berikut ini adalah source code yang teman - teman Foxpro Mania bisa gunakan untuk mengkompress file di dalam folder dengan format ZIP. Dan kemudian source code yang bisa digunakan untuk mengekstrak file ZIP ke file aslinya. Selanjutnya kita langsung coba aja. 

&& Source untuk Mengkompress Folder
strFolderName="d:\test\hasil" && Folder yang mau di kompress
strZipFileName="c:\hasil.zip" && Nama File ZIP hasil kompres
IF DIRECTORY(JUSTPATH(strZipFileName))=.f.
 MESSAGEBOX("Folder '"+strZipFileName+"' Tidak ada") 
 RETURN .f.
ENDIF  
IF LOWER(JUSTEXT(strZipFileName))<>"zip"
 strZipFileName=strZipFileName+".zip"
ENDIF
fso = CreateObject("Scripting.FileSystemObject")
ts = fso.OpenTextFile(strZipFileName, 8, .t.)
BlankZip = "PK" + Chr(5) + Chr(6)
For x = 1 to 18
 BlankZip = BlankZip + Chr(0)
ENDFOR
ts.Write(BlankZip)
objShell = CreateObject("Shell.Application")
WshShell = CreateObject("WScript.Shell")
DestFldr=objShell.NameSpace(strZipFileName)
SrcFldr=objShell.NameSpace(strFolderName)
DestFldr.CopyHere(strFolderName)

Isi variable strFolderName dengan lokasi folder di PC yang akan di kompress pada contoh diatas adalah "d:\test\hasil" dan isi variable strZipFileName dengan nama file zip yang digunakan untuk mengkompress file yang berada di strFolderName isi variable strZipFileName pada contoh di atas adalah "c:\hasil.zip". Selanjutnya setelah berhasil mengkompress Folder, kemudian berikut ini adalah cara untuk mengekstrak file ZIP ke file aslinya :

&& Source untuk Mengekstrak File ZIP
strFolderName="c:\hasil" && Folder untuk menempatkan file yg di ekstrak
strFileName="c:\hasil.zip" && File ZIP yang ingin di ekstrak
objshell = CreateObject("Shell.Application")
objfso = CreateObject("Scripting.FileSystemObject")
If !DIRECTORY(strFolderName) 
 objfso.CreateFolder(strFolderName)
ENDIF 
objshell.NameSpace(strFolderName).CopyHere;
(objshell.NameSpace(strFileName).Items)

Isi variable strFolderName dengan lokasi folder di PC yang akan di gunakan untuk file hasil ekstrak pada contoh diatas adalah "c:\hasil" dan isi variable strFileName dengan nama file zip yang akan di ekstrak pada contoh di atas adalah "c:\hasil.zip". Selanjutnya tinggal kreasi teman - teman Foxpro Mania untuk menempatkan fasilitas ini di aplikasi yang teman - teman buat, bila memang diperlukan.


SELAMAT MENCOBA...!!

Cara Menyimpan Gambar di Table

Sebuah table digunakan untuk menyimpan data. Data tersebut bisa bermacam - macam jenisnya. Kebanyakan data yang disimpan adalah data text...yang tentunya dengan type data yang bermacam - macam dari integer, numeric, char dan lain - lain. Tetapi ada kalanya kita perlu juga untuk menyimpan data selain text, yaitu misalnya Gambar. Data gambar ini biasanya terdapat pada table yang digunakan untuk menyimpan data - data profil baik, karyawan, mahasiswa, lokasi, bangunan dan lain - lain.

Di dalam Visual Foxpro atau lebih tepatnya jika kita menggunakan table bawaan Visual Foxpro yaitu DBF, ada beberapa cara atau teknik yang bisa digunakan untuk menyimpan gambar ke table. Beberapa teknik tersebut otomatis ada kelebihan dan juga ada kelemahannya. Untuk menyingkat pembahasan, sekarang kita langsung coba saja teknik untuk menyimpan gambar ke table tersebut :

Teknik (Save Url Image)
Dalam cara ini yang disimpan di dalam table adalah URL atau lokasi dari gambar yang berada di dalam disk / komputer kita. Urutan hal yang diperhatikan dan dipersiapkan untuk menggunakan teknik ini adalah :

  1. Buat 1 Field dengan type Character dengan panjang 254.
  2. Dalam transaksi di form, simpan URL gambar dan masukkan ke Field yang telah dibuat untuk menyimpan gambar tersebut. Contoh misal gambar tersebut sudah ditampilkan melalui kontrol image, maka bisa mengambil nilai dari property picture (image.picture) untuk disimpan ke table.
  3. Dan bila ingin menampilkan gambar ke kontrol image dari data table, bisa langsung atur property picture (image.picture) dengan nilai yang ada di Field yang digunakan untuk menyimpan gambar tersebut.
  4. Setelah table jadi dan gambar ingin ditampikan di report, berikut urutan langkahnya : (1) tambahkan kontrol "Picture/OLE Bound Control" ke dalam report, (2) atur Propertiesnya di Tab "General", di bagian "Control Source Type" pilih "Image File Name" dan (3) di bagian "Control Source" masukkan nama field gambar tersebut.
  5. Teknik ini adalah teknik yang sering digunakan, tetapi teknik ini memiliki kelemahan yaitu yang tersimpan di table sebenarnya bukan gambar melainkan hanya lokasi gambar, jadi ada kemungkinan gambar bisa dihapus atau diubah tanpa harus masuk ke program atau mengakses table terlebih dahulu. Selain itu bila nanti table di copy dan dijalankan atau dipake di tempat lain maka gambar tidak bisa secara otomatis ikut tercopy. Tetapi kelemahan itu sebenarnya bisa diatasi dengan sedikit kreatifitas dari teman - teman Foxpro Mania sekalian dengan sedikit logika untuk melakukan pengaturan File..!!!
Teknik (Save Field Memo) 
Teknik berikut ini mencoba untuk benar - benar menyimpan gambar dan memasukkannya ke dalam table dengan memanfaatkan type data Memo yang dipunyai DBF. Dengan cara ini nanti File Gambar akan dikonversi ke text dan selanjutnya text tersebut yang akan disimpan di Memo. Text yang disimpan disini bukan hanya lokasi gambar tetapi memang gambar itu sendiri, jadi nanti jangan heran kalau ukuran table teman - teman akan membengkak jika menyimpan gambar yang berukuran besar. Urutan cara atau yang perlu diperhatikan untuk menggunakan teknik ini adalah sebagai berikut :

  1. Buat 1 Field dengan type data Memo.
  2. Dalam transaksi di form gunakan kontrol image dan property pictureval (perlu diingat kalau di teknik sebelumnya yang digunakan adalah property picture tapi disini adalah pictureval).
  3. Bila ingin menampilkan gambar ke image misal dengan melakukan pemilihan file gambar terlebih dahulu bisa pake syntax Image1.Pictureval=FILETOSTR(GETPICT()). Fungsi Filetostr adalah hal yang penting disini, karena fungsi itulah yang digunakan untuk mengkonversi dari file gambar ke text. Selanjutnya nilai Image1.Pictureval lah yang yang dimasukkan atau disimpan ke dalam Field yang bertype data Memo tersebut.
  4. Bila ingin menampilkan gambar ke kontrol image dari data table, bisa langsung atur property pictureval (image.pictureval) dengan nilai yang ada di Field gambar yang bertype Memo tersebut.
  5. Dengan menggunakan teknik ini akan sedikit ribet saat ingin menampilkan image tersebut ke dalam report, tidak sesederhana seperti bila menggunakan teknik lainnya karena harus membuat program kecil untuk mengkonversi kembali data memo tersebut ke dalam file gambar dan kemudian baru ditampilkan ke report. Tetapi meskipun agak ribet sebenarnya sich gk terlalu ribet banget juga dan teknik ini lah yang lebih banyak disukai oleh para rekan - rekan senior Foxpro Mania.
Teknik (Save Field General)
Teknik ini adalah teknik dengan menggunakan salah satu fasilitas yang ada di DBF untuk menyimpan objek, yaitu dengan menggunakan field general. Dengan cara ini nanti gambar akan disimpan sebagai objek. Sebenarnya teknik ini lah yang paling sederhana, tetapi memiliki beberapa kelemahan yaitu diantaranya adalah gambar yang bisa dengan baik dikelola dengan teknik ini adalah gambar dengan format BMP dengan kualitas gambar yang tidak begitu baik. Sebenarnya gambar dengan format yang lain seperti JPG, GIF dan lain - lain, bisa disimpan tetapi nantinya bila ditampilkan baik di dalam form melalui kontrol image atau di dalam report yang tampak hanya berupa shortcut dan bukanlah gambar yang sebenarnya. Bila teman - teman ingin mencoba teknik ini berikut ini urutan langkahnya :

  1. Buat 1 Field dengan type General
  2. Untuk menyimpan ke dalam field general gunakan syntak :
    APPEND BLANK
    APPEND GENERAL <nama field general> FROM <gambar yang akan ditambahkan>
  3. Bila ingin menampilkan ke dalam form dengan menggunakan kontrol, maka kontrol yang digunakan adalah kontrol OleBoundControl, tidak seperti teknik sebelumnya yang menggunakan kontrol image. Atur property ControlSource dari OleBoundControl dengan nama field general yang digunakan untuk menampilkan gambar.
  4. Setelah table jadi dan gambar ingin ditampikan di report, urutan langkahnya adalah : (1) tambahkan kontrol "Picture/OLE Bound Control" ke dalam report, (2) atur Propertiesnya di Tab "General", di bagian "Control Source Type" pilih "General Field Name" dan (3) di bagian "Control Source" masukkan nama field general yang digunakan untuk menyimpan gambar tersebut. Meskipun teknik ini lebih sederhana daripada 2 teknik lainnya, tetapi teknik ini seringkali dihindari atau jarang digunakan yang dikarenakan beberapa kelemahan yang telah dijelaskan diatas. Sebagai catatan bila nanti meski telah menggunakan gambar dengan type BMP ternyata yang ditampilkan tetap hanya berupa shortcut, baik saat di ditampilkan dengan  menggunakan OleBoundControl atau di dalam report, maka jalankan script ini assoc.bmp=Paint.Picture di dalam RUN atau di "Command Prompt" terlebih dahulu.
Bila teman - teman masih bingung mengenai penjelasan dan uraian diatas mungkin lebih mudah jika langsung otak - atik contoh project sederhananya. Project ini menggunakan 3 teknik diatas untuk menampilkan gambar baik di form maupun di report. Langsung saja silahkan download projectnya di link dibawah ini dan bila ada pertanyaan silahkan kasih comment aj.





SEMOGA BERMANFAAT...!!

Membuat Laporan dengan Format HTML

Berikut ini adalah salah satu cara yang dapat teman - teman gunakan untuk menghasilkan laporan dalam bentuk html dari sebuah table atau cursor. Diilhami dari function CursorToHTML yang dibuat oleh Mike Lewis Consultants, dengan sedikit tambahan dan modifikasi, teman - teman dapat menggunakannya untuk membuat laporan dalam format html dan sekaligus membuka browser serta menampilkan laporan tersebut. Untuk mencobanya silahkan download dan ekstrak dulu file prgutm.prg dibawah ini :


Selanjutnya untuk menggunakannya teman - teman bisa menggunakan langkah - langkah berikut ini :

  1. Atur procedur ke prgutm.prg dengan mengetikkan syntak
  2. SET PROCEDURE TO PRGUTM.PRG
    bila teman - teman belum melakukan SET DEFAULT TO <Folder tempat PRGUTM disimpan> maka lakukan dulu atau langsung ganti PRGUTM.PRG dengan path lengkapnya misal C:\PRGUTM.PRG
  3. Buat dan tampilkan laporan html dengan mengetikkan
  4. bukahtmlreport(nama table / cursor)
    Misal :
    bukahtmlreport("TBPEGAWAI")
Selanjutnya bila teman - teman menguasai sedikit syntak - syntak html, silahkan otak - atik file PRGUTM.PRG untuk memperbaiki tampilannya sesuai yang diinginkan.


SELAMAT MENCOBA..!!

Source Code untuk Menyembunyikan dan Memproteksi Drive

Masih seputar trik yang berhubungan dengan registry, seperti source code untuk mendisable taskmanager, berikut ini adalah trik yang dapat digunakan untuk menyembunyikan drive di windows explorer dan memprotectnya agar tidak bisa diakses oleh user. Cara ini mungkin bisa anda gunakan pada komputer yang sering di pakai oleh banyak orang dan mungkin ada data penting yang dikhawatir akan hilang atau terhapus, jadi untuk mengatasinya anda bisa menaruh data tersebut ke dalam satu drive dan kemudian sembunyikan serta buat proteksi pada drive tersebut. Source Codenya adalah sebagai berikut :

WSHShell = CreateObject("WScript.Shell")

*Menyembunyikan Drive
WSHShell.RegWrite("HKEY_CURRENT_USER\Software\Microsoft\+;
 "Windows\CurrentVersion\Policies\Explorer\NoDrives", 256,;
 "REG_DWORD")

*Menampilkan kembali drive yang disembunyikan
WSHShell.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\+;
 "Windows\CurrentVersion\Policies\Explorer\NoDrives")

*Memproteksi Drive
WSHShell.RegWrite("HKEY_CURRENT_USER\Software\Microsoft\+;
 "Windows\CurrentVersion\Policies\Explorer\NoViewOnDrive", 256,;
 "REG_DWORD")

*Menghilangkan proteksi pada drive yang terproteksi
WSHShell.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\+;
 "Windows\CurrentVersion\Policies\Explorer\NoViewOnDrive")

Angka 256 pada source code diatas menunjukkan drive yang akan dikenai syntak diatas. Berikut daftar lengkap drive dan nilai untuk mengaksesnya :
Hasil dari syntak diatas akan terlihat setelah teman - teman merestart PC atau kalau tidak ingin restart matikan program explorer.exe dan kemudian jalankan kembali.



SELAMAT MENCOBA..!!

Source Code Untuk Mendisable TaskManager

Berikut ini adalah salah satu trik yang dapat digunakan untuk mendisable aplikasi TaskManager melalui registry. Trik ini sering digunakan oleh aplikasi virus lokal untuk memproteksi dirinya sendiri agar tidak bisa dimatikan oleh user melalui TaskManager. Berikut Source Codenya :

WSHShell = CreateObject("WScript.Shell")

*Mendisable TaskManager
WSHShell.RegWrite("HKCU\Software\Microsoft\Windows\"+;
"CurrentVersion\Policies\System\DisableTaskMgr",1,"REG_DWORD")

*Mengenable kembali TasjManager
WSHShell.RegWrite("HKCU\Software\Microsoft\Windows\"+;
"CurrentVersion\Policies\System\DisableTaskMgr",0,"REG_DWORD")

Bagi yang belum begitu paham source code untuk mengakses Registry mungkin ada baiknya untuk membaca tutorial tentag cara membuat membaca dan menghapus key di registry  dulu.



SELAMAT MENCOBA...!!

Cara Membuat, Membaca dan Menghapus Key di Registry

Berikut ini adalah sedikit penjelasan dengan beberapa contoh yang bisa teman - teman gunakan, bila ingin membuat, membaca atau menghapus key dalam registry windows. Seperti kita tahu registry di dalam windows adalah letak semua pengaturan pada sistem operasi windows. Bila teman - teman ingin membuat sebuah aplikasi yang memerlukan hubungan dengan registry, berikut ada beberapa contoh sederhana yang bisa teman - teman gunakan agar bisa memahami operasi untuk membuat, membaca dan menghapus key di registry dengan mudah.

WSHShell = CreateObject("WScript.Shell")

*Membuat key dengan nama "Kunciku" di HKCU dengan nilai default "Kunci Tertinggi"
WSHShell.RegWrite("HKCU\Kunciku\", "Kunci Tertinggi")

*Membuat subkey dengan nama "FoxMania" di bawah key "Kunciku" dengan nilai default "Subkey"
WSHShell.RegWrite("HKCU\Kunciku\FoxMania\", "Subkey")

*Membuat sebuah nilai dengan nama "setting" di dalam Key "Kunciku" dengan tipe text yang berisi "1" (REG_SZ)
WSHShell.RegWrite("HKCU\Kunciku\setting", 1)

*Membuat sebuah nilai dengan nama "kode" di dalam Key "Kunciku" dengan tipe decimal yang berisi 3 (REG_DWORD)
WSHShell.RegWrite("HKCU\Kunciku\kode", 3, "REG_DWORD")

*Membuat sebuah nilai dengan nama "setting2" di dalam SubKey "FoxMania" dengan tipe binary yang berisi 3 (REG_BINARY)
WSHShell.RegWrite("HKCU\Kunciku\FoxMania\setting2", 4,;
 "REG_BINARY")

*Membaca nilai default dari Key Kunciku dan disimpan dalam variable cnil
cnil = WSHShell.RegRead("HKCU\Kunciku\")

*Membaca nilai default dari SubKey FoxMania dan disimpan dalam variable cnil 
cnil = WSHShell.RegRead("HKCU\Kunciku\FoxMania\")

*Membaca nilai setting yang ada di Key Kunciku dan disimpan dalam variable cnil 
cnil = WSHShell.RegRead("HKCU\Kunciku\setting")

*Membaca nilai kode yang ada di Key Kunciku dan disimpan dalam variable cnil 
cnil = WSHShell.RegRead("HKCU\Kunciku\kode")

*Menghapus nilai setting2 yang berada di dalam subkey FoxMania
WSHShell.RegDelete("HKCU\Kunciku\FoxMania\setting2")

*Menghapus SubKey FoxMania
WSHShell.RegDelete("HKCU\Kunciku\FoxMania\") 

*Menghapus key Kunciku
WSHShell.RegDelete("HKCU\Kunciku\") 

Silahkan coba contoh - contoh diatas sambil membuka aplikasi "Regedit" dan lakukan refresh setiap menjalankan Source Code diatas untuk mengetahui hasilnya. Selanjutnya tinggal berkreasi dengan sedikit mempelajari kunci - kunci penting yang ada di dalam Registry.


SELAMAT MENCOBA...!!

Membuat Aplikasi TaskManager Sederhana

Di trik kali ini kita akan coba membuat sebuah aplikasi yang cara kerjanya seperti aplikasi "TaskManager". Aplikasi "TaskManager" seperti yang teman - teman sudah banyak tau adalah aplikasi yang pada dasarnya digunakan untuk melihat daftar aplikasi yang sedang berjalan di windows dan selanjutnya bila terjadi error di salah satu aplikasi kita bisa mencari nama aplikasi tersebut kemudian mematikannya. Sebenarnya Windows sendiri mempunyai modul yang berupa aplikasi kecil yang bernama tasklist dan taskkill yang keduanya perjalan dalam modus command atau tanpa GUI. Tasklist ini dapat digunakan untuk menampilkan daftar aplikasi yang sedang berjalan dan Taskkill digunakan untuk mematikan aplikasi. 

Dengan memandaatkan kedua modul kecil tersebut disini kita akan coba untuk membuat sebuah aplikasi yang cara kerjanya mirip TaskManager, yaitu menampilkan daftar aplikasi yang sedang berjalan dan bila ingin mematikan salah satu aplikasi, kita tinggal pilih aplikasi di list dan mematikannya. Meskipun aplikasi ini masih jauh kalau dibandingkan dengan TaskManager bawaan windows tetapi setidaknya teman - teman semua, bisa mempunyai gambaran bila ingin membuat sebuah aplikasi yang dapat mematikan aplikasi yang lain. Ingat dulu saat lagi ngetrendnya virus lokal..mereka sering menggunakan cara seperti ini untuk melindungi dirinya sendiri, misalnya dengan mematikan secara otomatis aplikasi "taskmanager", "regedit" dan lain - lain. Mungkin saja mereka melakukan atau menggunakan cara atau source code yang lain untuk mematikan aplikasi tertentu, tetapi bila ingin menggunakan cara termudah khususnya untuk Visual Foxpro dari segi programmiing mungkin inilah caranya. Dua source code dasar yang digunakan di contoh aplikasi Taskmanager sederhana ini adalah :

! tasklist >> tmp.txt

! taskkill /f /im notepad.exe

Source code pada baris pertama diatas digunakan untuk menampilkan list aplikasi yang sedang berjalan dan kemudian menampungnya di file tmp.txt, sedangkan source code pada baris kedua digunakan untuk mematikan sebuah aplikasi dan pada contoh tersebut yang akan dimatikan adalah aplikasi notepad.exe. Selanjutnya dengan dua source code dasar tersebut dengan melakukan sedikit modifikasi, penyesuaian dan tambahan sedikit logika maka bisa dibuat aplikasi seperti di bawah ini 
Daftar aplikasi yang sedang berjalan pada contoh project ini belum secara otomatis terupdate, jadi teman - teman harus menekan tombol "Refresh List Program Aktif" untuk melakukan update daftar aplikasi yang sedang berjalan. Terus bila ingin membuatnya otomatis gimana???...mungkin tergantung kreatifitas teman - teman...:D, Bila ingin mengutak - atik project sederhananya bisa ambil di link di bawah ini :




SELAMAT MENCOBA...!!

Source Code untuk Mengatur Tanggal dan Waktu

Berikut ini adalah salah satu trik yang dapat digunakan untuk mengubah untuk melakukan pengaturan atau perubahan tanggal dan waktu di sistem (di Laptop / PC). Pengaturan tanggal dan waktu ini secara manual bisa kita lakukan melalui menu "Date and Time" yang ada di "Control Panel". Kegunaan dari pengaturan tanggal dan waktu ini adalah bila suatu saat teman - teman membangun sebuah aplikasi dan ternyata membutuhkan fungsi atau procedure yang mengharuskann untuk melakukan pengontrolan tanggal dan waktu dari sistem serta melakukan perubahan, seperti misalnya memastikan bahwa aplikasi trial / demo yang kita buat dengan batasan waktu, agar tidak bisa dimanipulasi dengan melakukan perubahan tanggal dan waktu oleh user. Berikut ini source codenya :

*Pengaturan tanggal dengan format (dd/mm/yyyy)
ctgl="21/03/2011"
EXECSCRIPT("! date "+ctgl)  

*Pengaturan waktu dengan format (hh:mm:ss)
cwkt="09:06:20"
EXECSCRIPT("! time "+cwkt)

Silahkan lakukan perubahan pada variable ctgl untuk melakukan pengaturan tanggal dan variable cwkt untuk pengaturan waktu. Selanjutnya silahkan lanjutkan kreasi teman - teman.


SELAMAT MENCOBA...!!

Mengganti IP Address Lewat Source Code

Trik berikut ini adalah sebuah trik yang dapat digunakan untuk mengubah IP Address local atau LAN melalui Source Code. Jika biasanya teman - teman melakukan hal ini dengan cara manual dari pengaturan network properties, tetapi sekarang teman - teman bisa melakukannya secara otomatis melalui Source Code. Berikut Source Codenya :

cip="192.168.1.189"
csubnet="255.255.255.0"
cgateway="192.168.1.1"
cscr= '! netsh interface ip set address "Local Area connection";
static '+cip+" "+csubnet+" "+cgateway+" 1"
EXECSCRIPT(cscr)

Untuk melakukan penggantian IP teman - teman tinggal menentukan IP,Subnet Mask dan Gateway melalui variable cip, csubnet dan cgateway.


SELAMAT MENCOBA...!!

Kirim Email dengan Google Account Via Source Code

Berikut ini adalah salah satu trik yang dapat digunakan untuk mengirim email dengan menggunakan google account dengan melalui source code. Dengan trik ini teman - teman bisa menambahkan fasilitas kirim email ke aplikasi yang teman - teman buat secara otomatis. Tapi sebelumnya pastikan bahwa teman - teman sedang terkoneksi internet dan memasukkan user & password account gmail dengan benar. Di bawah ini source code nya :

public fromEmail, cpassword, emailObj, emailConfig
fromEmail = "account_gmail_anda@gmail.com"
cpassword = "password gmail"
emailObj = CreateObject("CDO.Message")
emailObj.From = fromEmail
emailObj.To = "email_tujuan@yahoo.com"
emailObj.Subject = "Foxpro Mania"
emailObj.TextBody = "Ini adalah pesan yang akan dikirimkan"
emailConfig = emailObj.Configuration
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/smtpserver") = "smtp.gmail.com"
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/smtpserverport") = 465
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/sendusing") = 2
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/smtpauthenticate") = 1
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/smtpusessl") = .t.
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/sendusername") = fromEmail
emailConfig.Fields("http://schemas.microsoft.com/;
cdo/configuration/sendpassword") = cpassword
emailConfig.Fields.Update
emailObj.Send

Yang perlu diperhatikan adalah variable fromEmail, silahkan isi variable tersebut dengan account dari gmail yang akan digunakan untuk mengirim email, variable cpassword isi dengan password dari account gmail yang digunakan. Sedangkan variable emailObj.To isikan dengan alamat email yang akan dikirimi pesan, variable emailObj.Subject merupakan isian yang akan ditampilkan sebagai subject pengirim dan variable emailObj.TextBody isikan dengan pesan yang ingin dikirimkan. 

Bila ingin mencoba contoh penerapannya dalam sebuah form silahkan download contoh formnya di link di bawah ini :





SELAMAT MENCOBA...!!

Memindahkan Form tanpa Title Bar

Secara default bila kita ingin memindahkan sebuah form saat program dijalankan adalah dengan meng-klik tittle barnya (bagian atas dari form yang berisi caption/judul form) kemudian men-drag nya ke tempat yang diinginkan. Tetapi gimana kalau ternyata kita membuat sebuah desain form yang mengharuskan kita untuk tidak menampilkan tittle bar tersebut???...apakah kita masih tetap bisa memindahkan form tersebut saat dijalankan???..pasti tentunya tidak akan bisa, seperti trik bentuk-form-sesuai-gambar dimana tittle bar dinonaktifkan dan kemudian form diisi dengan gambar. Setelah dijalankan pasti form bentuk gambar tersebut tidak akan bisa dipindah - pindahkan.

Untuk mengatasi hal itu ada sebuah trik yang dapat digunakan yang membuat meskipun form dalam kondisi tittle bar dinonaktifkan tetapi masih bisa tetap dipindah - pindahkan saat dijalankan. yaitu dengan mengetikkan source code di bawah ini :

DECLARE Long ReleaseCapture IN WIN32API
DECLARE Long SendMessage IN WIN32API ;
 Long HWND, Long wMsg, Long wParam, Long Lparam

IF nButton = 1
 = ReleaseCapture()
 = SendMessage(Thisform.HWnd, 0x202, 0x0, 0x0)
 = SendMessage(Thisform.HWnd, 0x112, 0xf012, 0x0)
ENDIF

Source code tersebut silahkan ditaruh di dalam procedure MouseDown kepunyaan Form atau kontrol yang lain seperti Container atau Image. Bila dalam kasus pada trik bentuk-form-sesuai-gambar maka source code ditaruh di procedure MouseDown milik kontrol Image. Sebagai catatan Form yang akan dipindahkan disini mempunyai property ShowWindow dengan nilai 2 atau dengan nilai ShowWindow berapapun asalkan property Desktop nya bernilai .T.


SELAMAT MENCOBA...!!

Source Code untuk Mendeteksi Koneksi Internet

Berikut ini adalah salah satu trik yang dapat digunakan untuk mendeteksi apakah PC atau Laptop kita sekarang sedang terkoneksi dengan internet ataukah tidak. Sebenarnya cara manual untuk mendeteksi koneksi ini sangatlah mudah dan pasti teman - teman semua sudah pada mengerti dan sering melakukannya yaitu tinggal masuk ke browser kemudian ketikkan alamat web yang terpercaya seperti www.google.com dan selanjutnya tinggal dilihat, tampil halaman google atau tidak, kalau tidak berarti koneksi internet sekarang sedang tidak aktif.

Tetapi gimana kalau kita mempunyai program yang harus mengambil data atau berhubungan dengan aplikasi lain melalui internet???...pastinya kita harus mempunyai cara agar program kita bisa mendeteksi koneksi internet secara otomatis sebelum melakukan proses selanjutnya. Pengecekan koneksi dengan cara manual diatas bisa dirubah dengan cara yang otomatis melalui source code di bawah ini :

DECLARE Long InternetCheckConnection IN Wininet.dll String Url,;
Long dwFlags, Long Reserved
lcUrl = "http://www.google.com"
IF InternetCheckConnection(lcUrl, 1, 0) <> 0
cStatus="Terkoneksi"
ELSE
cStatus="Tidak Terkoneksi"
ENDIF

Source diatas akan menyimpan hasil pengecekan koneksi ke dalam variable cStatus, dimana bila cStatus berisi "Terkoneksi" maka sekarang berarti kita sedang terkoneksi dengan internet dan jika nilai status "Tidak Terkoneksi" maka berarti sekarang kita tidak sedang terkoneksi ke internet. Selanjutnya silahkan teman - teman Foxpro Mania bereksplorasi dengan source code di atas.


SELAMAT MENCOBA...!!

Cara Menampilkan Progress Bar dengan Mudah

Berikut ini adalah salah satu trik yang dapat digunakan untuk menampilkan Progress Bar dengan mudah. Trik ini adalah salah satu trik yang ada di Webblog Foxite yang sedikit dipermudah lagi dengan disertai contoh pemakaian sederhana. Anda hanya perlu menggunakan syntak sederhana untuk menampilkan progress bar seperti di bawah ini :

=DoTherm(90, "Foxpro Mania", "www.foxpromania.co.cc")
Angka 90 di dalam syntak digunakan untuk menentukan isi dari progressbar.


=DoTherm(-1, "Foxpro Mania", "www.foxpromania.co.cc")
Angka -1 di dalam syntak digunakan untuk mengatur type progressbar dengan type marque.

Sedangkan untuk menutup progress bar dilakukan dengan syntak
=DoTherm()

Untuk dapat menggunakan syntax - syntax diatas diperlukan komponen FoxyPreviewer.App, PR_ctl32_progressbar.vcx dan dotherm.prg. Yang kesemuanya anda bisa coba di contoh project progresbar sederhana atau bila anda ingin mendapatkan FoxyPreviewer.App secara lengkapnya di sini. FoxyPreviewer.App Merupakan buatan dari foxypreviewer.codeplex.com.


SELAMAT MENCOBA...!!