Sunday, March 27, 2005

ExitOnOutsideClick

Tips berikut ini berguna apabila Anda ingin membuat suatu form yang apabila si user melakukan mouse click di luar form, maka otomatis form tersebut akan di release. Mungkin banyak dari Anda yang bertanya, "Untuk apa jenis form seperti ini?" --- he-he-he... sebenarnya banyak fungsinya. Jadi silahkan kreatif aja...

Untuk Demo, silahkan copy-and-paste kode di bawah ini, kemudian jalankan di VFP!

*!* Code Starts Here:
oFrm = CREATEOBJECT("frmExitOnOutsideClick")
oFrm.Show(1)
Return

DEFINE CLASS frmExitOnOutsideClick AS form


DoCreate = .T.
Caption = "ExitOnOutsideClick Demo by Foxy"
Name = "frmExitOnOutsideClick"

ADD OBJECT label1 AS label WITH ;
WordWrap = .T., ;
Caption = "Click yang dilakukan di dalam form " + ;
"akan berfungsi seperti biasa. Tetapi, coba saja click " + ;
"di luar form ini. Otomatis form ini akan tertutup!" + CHR(13) + ;
"Grid di bawah ini hanya berfungsi untuk demo saja...", ;
Height = 72, ;
Left = 12, ;
Top = 6, ;
Width = 348, ;
Name = "Label1"


ADD OBJECT command1 AS commandbutton WITH ;
Top = 216, ;
Left = 276, ;
Height = 27, ;
Width = 84, ;
Caption = "Click Me!", ;
Name = "Command1"


ADD OBJECT grid1 AS grid WITH ;
Height = 132, ;
Left = 12, ;
Top = 78, ;
Width = 348, ;
Name = "Grid1"


PROCEDURE clickme
lcMsg = "Click di terima oleh cmdClickMe.Click()" + CHR(13) + ;
"dan method ClickMe dijalankan..."
MESSAGEBOX(lcMsg, 64, "Click Me!")
ENDPROC


PROCEDURE Destroy
&& Kembalikan status ON KEY LABEL MOUSE ke default
ON KEY LABEL MOUSE
ENDPROC

PROCEDURE Click
&& Kalau click bukan terjadi di form ini, langsung keluar
IF !(MWINDOW() == ThisForm.Name)
ThisForm.Release()
ENDIF
ENDPROC

PROCEDURE Init
&& Rubah nama form supaya form dijamin unik
THISFORM.Name = SYS(2015)
&& Trap setiap mouse click di _Screen
&& ke event Click dari form ini:
ON KEY LABEL MOUSE _SCREEN.ActiveForm.Click()
ENDPROC

PROCEDURE command1.Click
&& Panggil method THISFORM.ClickMe()
THISFORM.ClickMe()
ENDPROC

PROCEDURE grid1.Init
CREATE CURSOR curTest (name C(30), address C(100))
SELECT curTest
APPEND BLANK
WITH THIS
.ColumnCount = 2
.AllowAddNew = .T.
.RecordSource = "curTest"
.Column1.Header1.Caption = "NAME"
.Column1.Width = 100
.Column2.Header1.Caption = "ADDRESS"
.Column2.Width = 200
ENDWITh
ENDPROC
ENDDEFINE

*!* Code Ends here


Happy coding!

Foxy

Thursday, March 24, 2005

Memeriksa tabel apakah ada duplikasi data atau tidak.

Pernahkah Anda perlu memeriksa tabel Anda; apakah di tabel itu (field tertentu) ada duplikasi data atau tidak? Kalau pernah, apa cara yang Anda gunakan? Berikut ini adalah skeleton dari simple query yang menampilkan duplikasi data yang ada di field pada tabel tertentu:


SELECT c_name, c_address, c_city
FROM customer
WHERE c_name IN
(SELECT c_name FROM customer GROUP BY c_name HAVING COUNT(*) > 1)


Catatan: kalau Anda menggunakan native vfp, jangan lupa menyertakan tanda titik koma untuk menyambung expresi antar baris.

Query di atas akan menampilkan nama, alamat, dan kota dari customer yang nama-nya ada lebih dari dua di data customer. Untuk memodifikasi sesuai dengan kebutuhan Anda, Anda bisa perhatikan frame berikut:

SELECT {field1}, {field2}, {field3}, ...
FROM {tabel}
WHERE {field_X} IN
(SELECT {field_X} FROM {tabel} GROUP BY {field_X} HAVING COUNT(*) > 1)


dimana {field_X} adalah nama field yang ingin dicari kemungkinan ada/tidak duplikasi data.

Mudah-mudahan bisa membantu menambah wawasan!

Foxy

Sunday, March 20, 2005

Wanita ingin dimengerti? Get Real!

Baru aja liat iklan Softex (please guys... jangan berpikiran ngeres dulu!)
Tag line terakhirnya: "Karena wanita ingin dimengerti..."
Menurut saya BULL! BIG MISTAKE! Come on guys! Face it! Kita nggak AKAN pernah bisa mengerti wanita. Jalur pemikirannya sangat kompleks. Kalau mau diceritain bisa lebih dari 100 jam (blog ini gak akan beres-beres) - dan itupun belum cukup! Anda nggak percaya? Coba kupingin kalau para wanita sedang 'ngobrol' (read: nge-gosip). I mean, LUAR BIASA. Dari satu topik ke topik yang lain, wuiiiih.... tau-tau di sini tau-tau di sana! Belum lagi kebiasaan mereka yang disebut 'curhat' aduh-aduh.... bercerita tanpa bermaksud untuk menemukan solusi!? Nuts...

So guys... I'm not an expert in woman psychology, neither am I a man having thousand girls surrounding me (though I like that idea very much ;) ) - but here is my suggestion to you guys: nggak usah repot-repot berusaha mengerti wanita, 'cause your gonna fall flat on your face to do that! Tanya pada semua wanita; mana yang mereka pilih: pria yang 'mengerti' mereka, atau pria yang 'mencintai' mereka? Aha, now you see what I mean? Women don't need to be understood, they need to be loved.

OK. Guys (and gals too...). See you around!

Foxy

VB is going down, VFP is moving up!

Dalam satu minggu terakhir ini Microsoft mengambil keputusan yang mengejutkan banyak developer classic VB di dunia. Microsoft memutuskan untuk menghentikan support kepada VB6. Sampai-sampai 100 MVP Visual Basic menandatangani petisi kepada Microsoft. Di sisi lain, VFP9 mendapatkan expose yang positif dari microsoft. Microsoft sampai-sampai 'memperkenalkan' VFP9 secara resmi. Padahal sejak dilepaskannya VFP dari keluarga Visual Studio (back in 2001 with VFP7), microsoft tidak pernah mengeluarkan pernyataan resmi mengenai VFP (kecuali satu halaman tanpa link dari web site resmi microsoft untuk menanggapi kontroversi VFP jalan di Linux). Apalagi, disebutkan juga dukungan untuk VFP9 akan dilakukan sampai tahun 2014. Jadi saya rasa, masih cukup banyak waktu untuk mempelajari VFP dengan serius dan memetik hasilnya. Memang betul, kita para software developer hanya pion di permainan catur software dunia. Tapi jangan salah. Dengan strategi yang benar, kita bisa maju terus sampai ke kotak akhir dan menjadi menteri.

Just my 2c
Foxy