Harap posting sesuai dengan Kategorinya agar anggota yang lain mudah dalam bernavigasi!
0 Members and 1 Guest are viewing this topic.
***************************************************-- Form: frmdemo (d:\_fox_id\demomenu\form_demo.scx)*-- ParentClass: form*-- BaseClass: form*-- Time Stamp: 01/22/10 12:48:06 PM*DEFINE CLASS frmdemo AS form Height = 462 Width = 656 ShowWindow = 2 DoCreate = .T. AutoCenter = .T. Caption = "Demo Menu" BackColor = RGB(166,57,100) withmouse = .F. nodeenter = .F. mysqlcon = 0 Name = "frmDemo" ADD OBJECT shpback AS shape WITH ; Top = 0, ; Left = 0, ; Height = 440, ; Width = 238, ; Anchor = 7, ; BorderStyle = 0, ; BackColor = RGB(219,162,177), ; Name = "shpBack" ADD OBJECT otreeview AS olecontrol WITH ; Top = 4, ; Left = 4, ; Height = 432, ; Width = 230, ; Anchor = 7, ; Name = "oTreeView" ADD OBJECT oimagelist AS olecontrol WITH ; Top = 14, ; Left = 238, ; Height = 100, ; Width = 100, ; Name = "oImageList" ADD OBJECT ostatusbar AS olecontrol WITH ; Top = 440, ; Left = 0, ; Height = 22, ; Width = 656, ; Align = 2, ; Name = "oStatusBar" PROCEDURE showmenu #define COLOR_PANEL RGB(219,162,177) #define COLOR_LABEL RGB(144,7,61) WITH this LOCAL lcAlias, oNode, lcTeks, lcKey, lcParent m.lcAlias = SELECT() =SQLEXEC(.mysqlcon, "SELECT * FROM my_menu", "my_menu") IF !USED('my_menu') RETURN ENDIF SELECT my_menu WITH .oTreeView .Nodes.Clear() .SelectedItem = .NULL. SCAN m.lcKey = '_' + TRANSFORM(my_menu.id) m.lcTeks = ALLTRIM(my_menu.title) m.lcParent = '_' + TRANSFORM(my_menu.id_parent) IF my_menu.is_header = 1 IF my_menu.id_parent = 0 m.loNode = .Nodes.Add(, 1, m.lcKey, m.lcTeks, "fclose") WITH m.loNode .ExpandedImage = "fopen" .Bold = .T. .Expanded = .T. .BackColor = COLOR_PANEL .ForeColor = COLOR_LABEL ENDWITH ELSE m.loNode = .Nodes.Add(m.lcParent, 4, m.lcKey, m.lcTeks, "fclose") WITH m.loNode .ExpandedImage = "fopen" .Bold = .T. .BackColor = COLOR_PANEL ENDWITH ENDIF ELSE IF this.Authorized(my_menu.id) m.lnGroup = my_menu.group DO CASE CASE m.lnGroup = 1 m.lcIcon = "master" CASE m.lnGroup = 2 m.lcIcon = "trans" CASE m.lnGroup = 3 m.lcIcon = "report" CASE m.lnGroup = 4 m.lcIcon = "tools" ENDCASE IF my_menu.id_parent = 0 m.loNode = .Nodes.Add(, 1, m.lcKey, m.lcTeks, m.lcIcon) m.loNode.BackColor = COLOR_PANEL ELSE m.loNode = .Nodes.Add(m.lcParent, 4, m.lcKey, m.lcTeks, m.lcIcon) m.loNode.BackColor = COLOR_PANEL IF !EMPTY(my_menu.command) IF my_menu.is_report = 0 m.loNode.Tag = "DO FORM " + ALLTRIM(my_menu.command) ELSE m.loNode.Tag = "REPORT FORM " + ALLTRIM(my_menu.command) ENDIF ELSE m.loNode.Tag = '' ENDIF ENDIF ENDIF ENDIF ENDSCAN m.loNode = .Nodes.Add(, 1, "_exit", "KELUAR", "logoff") WITH m.loNode .Bold = .T. .BackColor = COLOR_PANEL .ForeColor = COLOR_LABEL ENDWITH ENDWITH ENDWITH USE IN my_menu SELECT (lcAlias) ENDPROC PROCEDURE authorized LPARAMETERS tnID * * cek hak guna pemakai * RETURN .T. ENDPROC PROCEDURE Load _screen.Visible = .F. ENDPROC PROCEDURE Unload =SQLDISCONNECT(this.mysqlcon) _screen.Visible = .T. ENDPROC PROCEDURE Init #define GWL_STYLE -16 #define TVM_SETBKCOLOR 4381 #define TVM_GETBKCOLOR 4383 #define TVS_HASLINES 2 #define COLOR_PANEL RGB(219,162,177) DECLARE LONG SendMessage IN WIN32API LONG, LONG, LONG, LONG DECLARE LONG GetWindowLong IN WIN32API LONG, LONG DECLARE LONG SetWindowLong IN WIN32API LONG, LONG, LONG WITH this * seting mysql sesuai server anda .mysqlcon = SQLSTRINGCONNECT( ; 'DRIVER={MySQL ODBC 5.1 Driver};' + ; 'SERVER=localhost;' + ; 'DATABASE=tesdata;' + ; 'UID=root;' + ; 'PWD=;' ; ) ENDWITH * inisialiasi treeview WITH this.oTreeView LOCAL lnStyle SendMessage(.hWnd, TVM_SETBKCOLOR, 0, COLOR_PANEL) m.lnStyle = GetWindowLong(.hWnd, GWL_STYLE) SetWindowLong(.hWnd, GWL_STYLE, m.lnStyle - TVS_HASLINES) SetWindowLong(.hWnd, GWL_STYLE, m.lnStyle) .ImageList = this.oImageList .Nodes.Clear() .SelectedItem = .NULL. ENDWITH this.ShowMenu() ENDPROC PROCEDURE otreeview.NodeClick LPARAMETERS Node PUBLIC goContent, gcNodeKey IF VARTYPE(m.gcNodeKey) != 'C' m.gcNodeKey = '' ENDIF IF thisform.NodeEnter OR thisform.WithMouse thisform.NodeEnter = .F. thisform.WithMouse = .F. m.lcKey = this.SelectedItem.Key IF VARTYPE(m.goContent) == 'O' AND !ISNULL(m.goContent) AND (m.gcNodeKey != m.lcKey) m.goContent.Release() m.gcNodeKey = '' ENDIF IF m.lcKey == "_exit" IF MESSAGEBOX("Benar akan keluar?", 36, "Konfirmasi") = 6 CLEAR EVENTS thisform.Release() ENDIF ELSE IF !ISNULL(this.SelectedItem.Parent) IF !EMPTY(this.SelectedItem.Tag) IF m.gcNodeKey != m.lcKey m.gcNodeKey = m.lcKey m.lcCommand = this.SelectedItem.Tag IF ATC("DO FORM", m.lcCommand) > 0 m.lcCommand = m.lcCommand + " NAME goContent NOSHOW" &lcCommand m.goContent.Move(thisform.shpBack.Width + 1, 0, thisform.Width - thisform.shpBack.Width - SYSMETRIC(3) * 2) m.goContent.Visible = .T. ELSE IF !EMPTY(m.lcCommand) &lcCommand ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC PROCEDURE otreeview.KeyUp LPARAMETERS keycode, shift thisform.NodeEnter = (KeyCode == 13) IF !ISNULL(this.SelectedItem) AND thisform.NodeEnter NODEFAULT RAISEEVENT(this, "NodeClick", this.SelectedItem) ELSE DODEFAULT(keycode, shift) ENDIF ENDPROC PROCEDURE otreeview.MouseDown LPARAMETERS button, shift, x, y thisform.WithMouse = .T. DODEFAULT(button, shift, x, y) ENDPROCENDDEFINE**-- EndDefine: frmdemo*****************************************************************************************************-- Form: frmchoice (d:\_fox_id\demomenu\form_choice.scx)*-- ParentClass: form*-- BaseClass: form*-- Time Stamp: 01/22/10 12:37:02 PM*DEFINE CLASS frmchoice AS form Top = 0 Left = 0 Height = 250 Width = 375 ShowWindow = 1 DoCreate = .T. BorderStyle = 1 Caption = "Form1" MaxButton = .F. MinButton = .F. Movable = .F. Name = "frmChoice" PROCEDURE Init LPARAMETERS tcCaption this.Caption = m.tcCaption ENDPROCENDDEFINE**-- EndDefine: frmchoice***************************************************************************************************** createmenu.prg*************************************************** ubah sesuai setingan mysql server masing-masingmysqlcon = SQLSTRINGCONNECT( ; 'DRIVER={MySQL ODBC 5.1 Driver};' + ; 'SERVER=localhost;' + ; 'DATABASE=tesdata;' + ; 'UID=root;' + ; 'PWD=;' ; )=SQLEXEC(mysqlcon, "DELETE FROM my_menu")=SQLEXEC(mysqlcon, "ALTER TABLE my_menu AUTO_INCREMENT=1")#define GRP_MASTER 1#define GRP_TRANS 2#define GRP_REPORT 3#define GRP_TOOLS 4m.lnId = 0** CONTOH untuk menyusun menu item*lnHeader = _HDR("MASTER", 0, GRP_MASTER)lnItem = _ITM("Kota", lnHeader, "form_choice with 'Data Kota'")lnItem = _ITM("Bank", lnHeader, "form_choice with 'Data Bank'")lnItem = _ITM("Periode Katalog", lnHeader, "form_choice with 'Katalog'")lnItem = _ITM("Produk", lnHeader, "form_choice with 'Data Produk'")lnItem = _ITM("Supplier", lnHeader, "form_choice with 'Data Supplier'")lnItem = _ITM("Member", lnHeader, "form_choice with 'Data Member'")lnHeader = _HDR("TRANSAKSI", 0, GRP_TRANS)lnItem = _ITM("Pesanan Member", lnHeader, "form_choice with 'Transaksi Pesanan Member'")lnItem = _ITM("Pemesanan dan Pembelian", lnHeader, "form_choice with 'Transaksi Pemesanan & Pembelian'")lnItem = _ITM("Penjualan", lnHeader, "form_choice with 'Transaksi Penjualan'")lnItem = _ITM("Retur Pembelian/Penjualan", lnHeader, "form_choice with 'Transaksi Retur Pembelian/Penjualan'")lnItem = _ITM("Kas", lnHeader, "form_choice with 'Transaksi Kas'")lnHeader = _HDR("LAPORAN", 0, GRP_REPORT)lnHeader = _HDR("KELENGKAPAN", 0, GRP_TOOLS)lnItem = _ITM("Tukar Password", lnHeader, "form_choice with 'Tukar Password'")lnItem = _ITM("Reindex Database", lnHeader, "form_choice with 'Reindex Database'")lnItem = _ITM("Pengaturan Sistim", lnHeader, "form_choice with 'Pengaturan Sistim'")lnItem = _ITM("Pengguna Sistim", lnHeader, "form_choice with 'Manajemen Pemakai'")SQLDISCONNECT(mysqlcon)RETURN ** fungsi untuk membuat menu header ** parameter:* - tcDesc : deskripsi menu item* - tnParent : menu induk* - tnGroup : id group*FUNCTION _HDR(tcDesc, tnParent, tnGroup) IF m.tnParent > 0 =SQLEXEC(mysqlcon, "SELECT * FROM my_menu WHERE id='" + TRANSFORM(m.tnParent) + "'", "my_menu") m.lnGroup = my_menu.group m.lnLevel = my_menu.level + 1 ELSE m.lnGroup = m.tnGroup m.lnLevel = 0 ENDIF =SQLEXEC(mysqlcon, "INSERT INTO my_menu (`id_parent`,`group`,`title`,`command`,`is_header`,`is_report`,`level`)" + ; " VALUES (" + ; TRANSFORM(m.tnParent) + "," + ; TRANSFORM(m.lnGroup) + ; ",'"+m.tcDesc+"'" + ; ",''" + ; ",'1'" + ; ",'0'," + ; TRANSFORM(m.lnLevel) + ; ")", "my_menu") m.lnID = m.lnID + 1 RETURN m.lnIDENDFUNC** fungsi untuk membuat menu item** parameter:* - tcDesc : deskripsi menu item* - tnParent : menu induk* - tcCommand: nama form atau nama report* - tlReport : .T. jika tcparam adalah report*FUNCTION _ITM(tcDesc, tnParent, tcCommand, tlReport) =SQLEXEC(mysqlcon, "SELECT * FROM my_menu WHERE id='" + TRANSFORM(m.tnParent) + "'", "my_menu") m.lnGroup = my_menu.group m.lnLevel = my_menu.level + 1 =SQLEXEC(mysqlcon, "INSERT INTO my_menu (`id_parent`,`group`,`title`,`command`,`is_header`,`is_report`,`level`)" + ; " VALUES (" + ; TRANSFORM(m.tnParent) + "," + ; TRANSFORM(m.lnGroup) + ; ",'"+m.tcDesc+"'" + ; ",'" + STRTRAN(m.tcCommand,"'", '"') + "'" + ; ",'0'" + ; ",'"+IIF(m.tlReport, '1', '0')+"'," + ; TRANSFORM(m.lnLevel) + ; ")", "my_menu") m.lnID = m.lnID + 1 RETURN m.lnIDENDFUNC
SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `my_menu`-- ----------------------------DROP TABLE IF EXISTS `my_menu`;CREATE TABLE `my_menu` ( `id` int(6) NOT NULL AUTO_INCREMENT, `id_parent` int(6) NOT NULL DEFAULT '0', `group` int(2) NOT NULL DEFAULT '1', `title` varchar(60) NOT NULL DEFAULT '', `command` longtext, `is_header` tinyint(1) NOT NULL DEFAULT '0', `is_report` tinyint(1) NOT NULL DEFAULT '0', `level` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;