L LAMPIRAN Spefikasi Proses Builder Proses membuka, membuat baru, dan menutup database Module TMainForm.MenuOpenClick Begin Jalankan OpEndialog1 Jika Memilih File Begin Buka GlobalModule.DatabaseConnection Berdasarkan OpEndialog1.FileName Aktifkan Menu Close Aktifkan Menu Category Aktifkan Menu Statement Aktifkan Menu Rules NonAktifkan Menu Open NonAktifkan Menu New End End Module TMainForm.MenuCloseClick Begin NonAktifkan Menu Close NonAktifkan Menu Category NonAktifkan Menu Statement NonAktifkan Menu Rules Aktifkan Menu Open Aktifkan Menu New Hilangkan item FrmViewCategory.TreeViewStatementList Hilangkan item FrmViewCategory.TreeViewStatementTree Hilangkan Form FrmEditorRules Hilangkan Form FrmEditorInput Close DatabaseConnection End Module TMainForm.MenuOpenClick Begin Jika Jalankan SaveDialog1 = True maka Begin Copy dan rename file Database yang kosong disiapkan ke SaveDialog1.Filename Buka GlobalModule.DatabaseConnection Berdasarkan OpEndialog1.FileName Aktifkan Menu Close Aktifkan Menu Category Aktifkan Menu Statement Aktifkan Menu Rules NonAktifkan Menu Open NonAktifkan Menu New End End
Proses aktifasi viewer Module TGlobalModule.DatabaseConnectionAfterConnect Begin Open FrmViewCategory.ADODataSetCategory, Query ambil kategori pada Viewer Aktifkan Menu NewCategory pada MainForm End
1
L -
Module TFrmViewCategory.ADODataSetCategoryAfterConnect Begin Jika State ADODataSetCategory = browse dan FlagAddEdit = False maka Begin Jika FrmEditorRules Ada maka Hilangkan FrmEditorRules Jika
FrmEditorInput <> nil maka Hilangkan FrmEditorInput Buat item TreeViewStatementList tidak ada yang dipilih Buat item TreeViewStatementTree tidak ada yang dipilih Panggil Module CreateStatement Panggil Module CreateStatementTree Jika ADODataSetCategory tidak kosong maka Begin Aktifkan Menu NewStatement pada MainForm Aktifkan Menu NewFromTemplate pada MainForm End End
End
Module TFrmViewCategory.DataSourceADODataSetCategoryChange Begin Jika ADODataSetCategory tidak kosong maka Begin Jika ADODataSetCategory['IdCategory']='Template' maka Begin NonAktifkan Menu EditCategory pada MainForm NonAktifkan Menu DeleteCategory pada MainForm End Jika Tidak Begin Aktifkan Menu EditCategory pada MainForm Aktifkan Menu DeleteCategory pada MainForm End End End
Membuat viewer list statement
dan prosess tree
Module TFrmViewCategory.CreateStatement Module Variabel i,j : integer TT,TR : TtreeNode Begin Hilangkan Item TreeViewStatementList Jika ADODataSetCategory kosong Maka Keluar Module Buka query ADODataSetStatement, query Statement Buka query ADODataSetRules, query Rules Pergi ke Item ADODataSetStatement pertama Lakukan perulangan dari i =1 sampai ADODataSetStatement.RecordCount Begin TT = Tambah item pada TreeViewStatementList ADODataSetStatement ['IdStatement'] Children dari root
2
L Pergi ke Item pertama ADODataSetRules TT.StateIndex =1, beri gambar icon statement Lakukan perulangan dari j = 1 sampai ADODataSetRules.RecordCount Begin TR = Tambah item pada TreeViewStatementList ADODataSetRules['IdRules']Children dari TT TR.StateIndex = 2, beri gambar icon Rules TT.Expanded = true Pergi ke Item ADODataSetRules berikutnya End Pergi ke Item ADODataSetStatement berikutnya End Buat item TreeViewStatementList tidak ada yang dipilih End Module TFrmViewCategory.CreateStatementTree Module Variabel DS_Statement : TADODataSet i : integer TT: TtreeNode Begin Hilangkan Item TreeViewStatementTree Jika ADODataSetCategory kosong Maka Keluar Module Create DS_Statement set koneksi database DS_Statement DS_Statement query = 'Select * from Statement where IdCategory = ''' + ADODataSetCategory['IdCategory'] + ''' dan type = true' Buka query DS_Statement Lakukan perulangan dari j = 1 sampai DS_Statement.RecordCount Begin TT = Tambah item pada TreeViewStatementTree DS_Statement['IdStatement'] Children dari root TT.StateIndex =1, beri gambar icon statement TT.Expanded =true Pangil Module CreateStatementTreeNode(TT) Pergi ke item DS_Statement berikutnya End tutup query dan bebaskan object DS_Statement Buat item TreeViewStatementTree tidak ada yang dipilih End Module TFrmViewCategory.CreateStatementTreeNode Variable Module DS_Rules,DS_statement : TADODataSet i,j : integer TR,TTT,TS: TTreeNode StatementStr,categoryStr : string Begin Create DS_Rules DS_Rules set koneksi database DS_Rules DS_Rules query = 'Select * from Rules where IdCategory = ''' + ADODataSetCategory['IdCategory'] + ''' dan IdStatement = '''+TT.Text+''' order by IdRules' Buka query DS_Rules Lakukan perulangan dari i = 1 sampai DS_Rules.RecordCount Begin TR = Tambah item pada TreeViewStatementTree DS_Statement['IdStatement'] Children dari TT TT.StateIndex = 2 //beri gambar icon Rules Create DS_statement DS_statement.Connection = GlobalModule.DataBaseAdoConn(set konesi database) DS_statement query = 'Select * from DetilRules where IdCategory = ''' +
3
L ADODataSetCategory['IdCategory'] + ''' dan IdStatement = '''+TT.Text+''' dan IdRules ='''+DS_Rules['IdRules']+''' dan link=true dan Value<>'''' Order by Value' Buka query DS_statement Lakukan perulangan dari i = 1 DS_statement.RecordCount Begin Panggil Module GlobalModule.SplitCategoryStatement (DS_statement['Value'], categoryStr, StatementStr) Jika categoryStr = ADODataSetCategory['IdCategory'] maka Begin TTT = TT Repeat Jika TTT.Text = StatementStr maka Begin TS = Tambah item pada TreeViewStatementTree DS_Statement ['IdStatement'] Children dari TR TS.StateIndex = 3 //beri gambar icon Statement recursive TR.Expanded=true Keluar dari looping End TTT=TTT.Parent Jika TTT=nil maka Begin TS= Tambah item pada TreeViewStatementTree DS_Statement ['IdStatement'] Children dari TR TS.StateIndex=1(beri gambar icon Statement) Panggil Module CreateStatementTreeNode(TS) //Recursive TR.Expanded=true Keluar dari perulangan End Jika tidak TTT=TTT.Parent Until(TTT=nil) End Jika tidak Begin TS = Tambah item pada TreeViewStatementTree DS_Statement ['IdStatement'] Children dari TR TS.StateIndex=4 //beri gambar icon ke kategori lain End ke itemDS_statement berikutnya End tutup query DS_statement bebaskan dari memory DS_statement ke item DS_Rules berikutnya
End tutup query DS_Rules bebaskan memory DS_Rules TT.Expanded=true End
Membuat, mengedit, menghapus category Module TMainform.MenuNewCategoryClick Begin Try //Error Handler FrmViewCategory.FlagAddEdit = true FrmCategory.FlagSave = False tambah item pada ADODataSetCategory tampilkan Form kategory jika frmCategory.FlagSave maka Begin Pangil Module FrmViewCategory.CreateStatement
4
L Pangil Module FrmViewCategory.CreateStatementTree jika FrmEditorRules <> nil maka Begin Bebaskan Form editor Rules FrmEditorRules = nil End jika FrmEditorInput <> nil maka Begin Bebaskan Form editor Input FrmEditorInput = nil End NonAktifkan Menu RulesNew NonAktifkan Menu RulesDelete NonAktifkan DeleteState NonAktifkan SavetoTemplate End FrmViewCategory.FlagAddEdit = false except End End Module TMainForm.MenuEditCategoryClick Module Variabel OldCategoryId:string Begin OldCategoryId = FrmViewCategory.ADODataSetCategory['IdCategory'] FrmViewCategory.FlagAddEdit = true FrmCategory.FlagSave = False Edit item ADODataSetCategory Tampilkan Form Category FrmViewCategory.FlagAddEdit = false Jika (FrmEditorRules <> nil) dan (frmCategory.FlagSave) maka Begin FrmEditorRules.CategoryId=FrmViewCategory.ADODataSetCategory['IdCategory'] Pangil Module GlobalModule.editStatement(OldCategoryId +'.',FrmEditorRules.CategoryId+'.') Pangil Module GlobalModule.editInput('<%'+OldCategoryId +'.' ,'<%'+FrmEditorRules.CategoryId+'.') Panggil Module FrmEditorRules.PanelCanvasEnter( FrmEditorRules.Controllmove ) End jika (FrmEditorInput <> nil) dan (frmCategory.FlagSave) maka Begin FrmEditorInput.CategoryId=FrmViewCategory.ADODataSetCategory['IdCategory'] Pangil Module GlobalModule.editStatement(OldCategoryId +'.', FrmEditorInput.CategoryId+'.') Pangil Module GlobalModule.editInput('<%'+OldCategoryId +'.' , '<%' + FrmEditorInput.CategoryId + '.' ) Pangil Module FrmEditorInput.updateInputText('<%'+OldCategoryId +'.' , '<%' + FrmEditorInput.CategoryId +'.',True) End End Module TMainForm.MenuCategoryDeleteClick Begin Jika Konfirmasi Delete categoryMessageDlg = Yes maka Begin jika FrmEditorRules <> nil maka Begin Bebaskan Form editor Rules FrmEditorRules = nil End
5
L -
6
jika FrmEditorInput <> nil maka Begin Bebaskan Form editor Input FrmEditorInput = nil End jika FrmViewCategory.ADODataSetCategory['IdCategory']<>'Template' maka FrmViewCategory.ADODataSetCategory.Delete Jika tidak Tampilkan Pesan('can''t not delete category template') End End Membuat, menghapus statement Module untuk menyesuaikan perubahan input Module TGlobalModule.editInput(IdOld,IdNew:string) menurut perubahan statement/category Variabel Module DSInput :TADODataSet i : integer temp : string Begin create DSInput Set koneksi database DSInput DSInput query = 'select * from [input] where [Default value] like ''%'+IdOld+'%'' atau [text] like ''%'+IdOld+'%''' Buka query DSInput lakukan perulangan i= 1 sampai DSInput.RecordCount Begin edit input DSInput jika DSInput['Default value']<> Null maka DSInput['Default value'] = StringReplace(DSInput['Default value'],IdOld,IdNew,[rfReplaceAll,rfIgnoreCase] ) jika DSInput['text']<> Null maka Ubah DSInput['text'] = StringReplace( DSInput['text'], IdOld, IdNew, [rfReplaceAll, rfIgnoreCase] ) save perubahan DSInput pergi ke item DSInput selanjutnya End tutup query DSInput bebaskan dari DSInput memory End Module untuk menyesuaikan perubahan Rules menurut perubahan statement/category Module TGlobalModule.editStatement(IdOld,IdNew:string) Variabel Module DSDetRul :TADODataSet i:integer Begin Create DSDetRul set koneksi database DSDetRul DSDetRul query = 'select * from DetilRules where Link = true dan [Value] like ''%'+IdOld+'%''' Buka query DSDetRul lakukan perulangan i = 1 sampai DSDetRul.RecordCount Begin Edit itemDSDetRul DSDetRul['value']=StringReplace(DSDetRul['value'],IdOld,IdNew,[rfReplaceAll,r fIgnoreCase] ) save perubahan DSDetRul Pergi ke itemDSDetRul berikutnya End Tutup query DSDetRul
L -
7
Bebaskan dari DSDetRul memory End Module TMainForm.MenuCreateStatementBlankClick var i,x:integer Begin Refresh query FrmStatement.ADODataSet1 Tambah item pada FrmStatement.ADODataSet1 FrmStatement.Flag=false FrmStatement.ADODataSet1['IdCategory']=FrmViewCategory.ADODataSetCategory['Id Category'] FrmStatement.ADODataSet1['type']=false Tampilkan form Statement jika FrmStatement.Flag maka Begin jika FrmEditorInput <> nil maka Begin Bebaskan Form Editor Input dari memory FrmEditorInput=nil End jika FrmEditorRules <> nil maka Begin Bebaskan Form Editor Rules dari memory FrmEditorRules=nil End Buat item FrmViewCategory.TreeViewStatementList tidak dipilih Buat itemFrmViewCategory.TreeViewStatementTree tidak dipilih Panggil Module FrmViewCategory.CreateStatement Panggil Module FrmViewCategory.CreateStatementTree Lakukan perulangan i = 0 sampai frmViewCategory.TreeViewStatementList. Items.Count -1 Begin jika FrmViewCategory.TreeViewStatementList.items[i].Level = 0 maka jika FrmViewCategory.TreeViewStatementList.items[i].Text = FrmStatement.ADODataSet1 ['IdStatement'] maka FrmViewCategory.TreeViewStatementList.Selected = FrmViewCategory.TreeViewStatementList.items[i] End End End Module TMainForm.MenuNewFromTemplateClick var i:integer Begin Refresh query FrmStatement.ADODataSet1 Tambah item pada FrmStatement.ADODataSet1 Tampikan Form Template FrmStatement.Flag=false FrmStatement.ADODataSet1['IdCategory']=FrmViewCategory.ADODataSetCategory['IdCat egory'] FrmStatement.ADODataSet1['type']=false Tampilkan form Statement jika FrmStatement.Flag maka Begin jika FrmEditorInput <> nil maka Begin Bebaskan Form Editor Input dari memory FrmEditorInput=nil End jika FrmEditorRules <> nil maka
L -
8
Begin Bebaskan Form Editor Rules dari memory FrmEditorRules=nil End Pangil Module GlobalModule.CopyState ('Template', FrmTemplate.ADODataSet1 ['Idstatement'],FrmViewCategory.ADODataSetCategory['IdCategory'], FrmStatement.ADODataSet1['IdStatement']) FrmViewCategory.TreeViewStatementList.Selected=nil FrmViewCategory.TreeViewStatementTree.Selected=nil FrmViewCategory.CreateStatement FrmViewCategory.CreateStatementTree Lakukan perulangan i = 0 sampai frmViewCategory.TreeViewStatementList. Items.Count -1 Begin jika FrmViewCategory.TreeViewStatementList.items[i].Level = 0 maka jika FrmViewCategory.TreeViewStatementList.items[i].Text = FrmStatement.ADODataSet1 ['IdStatement'] maka FrmViewCategory.TreeViewStatementList.Selected = FrmViewCategory.TreeViewStatementList.items[i] End End End Module TGlobalModule.CopyState(IdCatTemplt,IdStateTemplt,Idcat,IdState:string) variabel Module i,j:integer Begin Tutup query DatasetStateTempllt Tutup query DatasetState DatasetStateTempllt query = 'select * from Statement where idCategory = '''+IdCatTemplt+''' dan Idstatement ='''+IdStateTemplt+'''' DatasetState query = 'select * from Statement where idCategory = '''+IdCat+''' dan Idstatement ='''+IdState +'''' Buka query DatasetStateTempllt Buka query DatasetState Buka query DataSetInputTemplt Buka query DataSetInput Edit item DatasetState DatasetState['BackGroundColor']=DatasetStateTempllt['BackGroundColor'] Update perubahan pada DatasetState Lakukan perulangan i=1 to DataSetInputTemplt.RecordCount do Begin Tambah item pada DataSetInput DataSetInput['IdCategory']=Idcat DataSetInput['IdStatement']=IdState DataSetInput['IdInput']=DataSetInputTemplt['IdInput'] DataSetInput['TypeInput']=DataSetInputTemplt['TypeInput'] DataSetInput['Text']=DataSetInputTemplt['Text'] DataSetInput['FontName']=DataSetInputTemplt['FontName'] DataSetInput['FontColor']=DataSetInputTemplt['FontColor'] DataSetInput['FontSize']=DataSetInputTemplt['FontSize'] DataSetInput['FontBold']=DataSetInputTemplt['FontBold'] DataSetInput['FontItalic']=DataSetInputTemplt['FontItalic'] DataSetInput['FontUnderline']=DataSetInputTemplt['FontUnderline'] DataSetInput['FontStrikeThrough']=DataSetInputTemplt['FontStrikeThrough'] DataSetInput['BackGroundColor']=DataSetInputTemplt['BackGroundColor'] DataSetInput['Stretch']=DataSetInputTemplt['Stretch'] DataSetInput['Left']=DataSetInputTemplt['Left'] DataSetInput['Top']=DataSetInputTemplt['Top'] DataSetInput['Width']=DataSetInputTemplt['Width'] DataSetInput['Height']=DataSetInputTemplt['Height'] DataSetInput['Parent']=DataSetInputTemplt['Parent'] DataSetInput['TypeEdit']=DataSetInputTemplt['TypeEdit'] DataSetInput['BrowseText']=DataSetInputTemplt['BrowseText']
L -
9
DataSetInput['Default Value']=DataSetInputTemplt['Default Value'] Update perubahan pada DataSetInput Pergi ke item DataSetInputTemplt berikutnya End Tutup query DataSetInputTemplt Tutup query DataSetInput Buka query DatasetRulesTemplt Buka query DatasetRules Buka query DatasetDetRulTempllt Buka query DatasetDetRul Lakukan perulangan i =1 to DatasetRulesTemplt.RecordCount do Begin Tambah item pada DatasetRules DatasetRules['IdCategory']=Idcat DatasetRules['IdStatement']=IdState DatasetRules['IdRules']=DatasetRulesTemplt['IdRules'] Update perubahan pada DatasetRules lakukan perulangan j=1 to DatasetDetRulTempllt.RecordCount do Begin DatasetDetRul.AppEnd DatasetDetRul['IdCategory']=Idcat DatasetDetRul['IdStatement']=IdState DatasetDetRul['IdRules']=DatasetRulesTemplt['IdRules'] DatasetDetRul['Value']=DatasetDetRulTempllt['Value'] DatasetDetRul['Comparision']=DatasetDetRulTempllt['Comparision'] DatasetDetRul['IdInput']=DatasetDetRulTempllt['IdInput'] DatasetDetRul['Parent']=DatasetDetRulTempllt['Parent'] DatasetDetRul['Link']=DatasetDetRulTempllt['Link'] Update perubahan pada DatasetDetRul Pergi ke item DatasetDetRulTempllt berikutnya End Pergi ke item DatasetRulesTemplt berikutnya End Tutup query DatasetDetRulTempllt Tutup query DatasetDetRul Tutup query DatasetRulesTemplt Tutup query DatasetRules Tutup query DatasetStateTempllt Tutup query DatasetState End Module TMainForm.DeleteStateClick Variabel Module statementId : string CategoryId:string DSComm : TADOCommand Begin jika FrmEditorInput <> nil maka Begin Jika Konfirmasi Delete Statement = Yes maka Begin statementId = FrmEditorInput.StatementId CategoryId = FrmEditorInput.CategoryId Bebaskan Form Editor Input dari memory FrmEditorInput=nil Buat Item FrmViewCategory.TreeViewStatementList tidak terpilih Buat Item FrmViewCategory.TreeViewStatementTree tidak terpilih Create DSComm Setting koneksi database DSComm DSComm query = 'delete from Statement where IdCategory ='''+CategoryId +''' dan IdStatement ='''+StatementId+'''' Execute query command DSComm Bebaskan memory DSComm
L - 10 Pangil Module FrmViewCategory.CreateStatement Pangil Module FrmViewCategory.CreateStatementTree End End End
Module TMainForm.SavetoTemplateClick Begin Jika FrmEditorInput <>nil maka Begin FrmStatement.Flag=false Refresh query FrmStatement.ADODataSet1 Tambah item pada FrmStatement.ADODataSet1 FrmStatement.ADODataSet1['IdCategory']='Template' FrmStatement.ADODataSet1['type']=false Tampilkan Form Statement jika FrmStatement.Flag maka Begin GlobalModule.CopyState(FrmEditorInput.CategoryId,FrmEditorInput.StatementId ,'Template',FrmStatement.ADODataSet1['IdStatement'] ) Tampilkan Pesan('Template has been save') End End End Membuat, menghapus Rules Module TMainForm.RulesNewClick Variabel Module i,j : integer Begin Jika (FrmEditorInput <> nil) atau (FrmEditorRules <> nil) maka Begin Refresh query FrmAddRules.ADODataSet1.Close Tambah item pada FrmAddRules.ADODataSet1 FrmAddRules.Flag=false jika FrmEditorRules <> nil maka Begin FrmAddRules.ADODataSet1['IdCategory']=FrmEditorRules.CategoryId FrmAddRules.ADODataSet1['IdStatement']=FrmEditorRules.StatementId End jika FrmEditorInput <> nil maka Begin FrmAddRules.ADODataSet1['IdCategory']=FrmEditorInput.CategoryId FrmAddRules.ADODataSet1['IdStatement']=FrmEditorInput.StatementId End Tampilkan Form AddRules jika FrmAddRules.Flag maka Begin jika FrmEditorInput <>nil maka Begin Bebaskan Form EditorInput dari memory FrmEditorInput=nil End jika FrmEditorRules <>nil maka Begin Bebaskan Form EditorRules dari memory FrmEditorRules=nil End Buat item FrmViewCategory.TreeViewStatementList tidak ada yang dipilih Buat item FrmViewCategory.TreeViewStatementTree tidak ada yang
L - 11 dipilih Panggil Module FrmViewCategory.CreateStatement Panggil Module FrmViewCategory.CreateStatementTree Lakukan perulangan i = 0 to FrmViewCategory.TreeViewStatementList.Items. Count-1 do Begin jika FrmViewCategory.TreeViewStatementList.items[i].Level = 0 maka jika FrmViewCategory.TreeViewStatementList.items[i].Text = FrmAddRules.ADODataSet1['IdStatement'] maka Begin Lakukan perulangan j=0 to FrmViewCategory.TreeViewStatementList. Items[i].Count -1 do jika FrmViewCategory.TreeViewStatementList.items[i].item[j].Text = FrmAddRules.ADODataSet1['IdRules'] maka FrmViewCategory.TreeViewStatementList.Selected = FrmViewCategory.TreeViewStatementList.items[i].Item[j] End End End End End Module TMainForm.RulesDeleteClick Variabel Module statementId,CategoryId,RulesId : string DSComm : TADOCommand Begin Jika FrmEditorRules <> nil maka Begin Jika Konfirmasi Delete Rules = Yes maka Begin statementId = FrmEditorRules.StatementId CategoryId = FrmEditorRules.CategoryId RulesId = FrmEditorRules.RulesId Bebaskan Form EditorRules dari memory FrmEditorRules=nil Buat item FrmViewCategory.TreeViewStatementList tidak dipilih Buat item FrmViewCategory.TreeViewStatementTree tidak dipilih CreateDSComm Setting koneksi database DSComm DSComm query = 'delete from Rules where IdCategory ='''+CategoryId +''' dan IdStatement ='''+StatementId+''' dan IdRules ='''+RulesId+'''' Jalankan query command DSComm DSComm query = 'delete from DetilRules where IdCategory ='''+CategoryId +''' dan IdStatement ='''+StatementId+''' dan IdRules ='''+RulesId+'''' Jalankan query DSComm Bebaskan DSComm dari memory Jalankan Module FrmViewCategory.CreateStatement Jalankan Module FrmViewCategory.CreateStatementTree End End End
Memilih item(rules/statement) pada viewer list statement atau proses tree untuk di edit pada editor Module TFrmViewCategory.TreeViewStatementListChange(Node: TTreeNode) Begin
L - 12 Jika Node <> nil maka Begin SelTreeview = TreeViewStatementList Buat item TreeViewStatementTree tidak dipilih jika TreeViewStatementList ada yang dipilih maka pangil Module IDEEdit1Click(self) End Jika FrmEditorInput <>nil maka Begin Aktifkan menu New Rules pada main form Aktifkan menu Delete Statement pada main form Jika ADODataSetCategory['Idcategory']<> 'Template' maka Aktifkan menu SavetoTemplate pada main form Jika tidak NonAktifkan menu SavetoTemplate pada main form End Jika tidak Non Aktifkan menu Delete Statement pada main form Jika FrmEditorRules <> nil maka Begin Aktifkan menu New Rules pada main form Aktifkan menu Delete Rules pada main form End Jika tidak NonAktifkan menu Delete Rules pada main form Jika (FrmEditorRules = nil) dan (FrmEditorInput=nil) maka Begin NonAktifkan menu New Rules pada main form End End Module TFrmViewCategory.TreeViewStatementTreeChange( Node: TTreeNode) Begin Jika Node <> nil maka Begin SelTreeview= TreeViewStatementTree Buat item TreeViewStatementList tidak dipilih Jika jika item TreeViewStatementTree ada yang dipilih maka IDEEdit1Click(self) End Jika FrmEditorInput <>nil maka Begin Aktifkan menu New Rules pada main form Aktifkan menu Delete Statement pada main form Jika ADODataSetCategory['Idcategory']<> 'Template' maka Aktifkan menu SavetoTemplate pada main form Jika tidak NonAktifkan menu SavetoTemplate pada main form End Jika tidak Non Aktifkan menu Delete Statement pada main form Jika FrmEditorRules <> nil maka Begin Aktifkan menu New Rules pada main form Aktifkan menu Delete Rules pada main form End Jika tidak NonAktifkan menu Delete Rules pada main form Jika (FrmEditorRules = nil) dan (FrmEditorInput=nil) maka Begin NonAktifkan menu New Rules pada main form End End
L - 13
Module TFrmViewCategory.IDEEdit1Click Variabel Module Node : TTreeNode Begin Jika (item TreeViewStatementList tidak ada yang dipilih) dan (Jika item TreeViewStatementList tidak ada yang dipilih) maka Keluar module Jika SelTreeview = TreeViewStatementList maka Begin Jika item TreeViewStatementList tidak ada yang dipilih maka Keluar module node = TreeViewStatementList.Selected End Jika tidak Begin Jika Item TreeViewStatementTree tidak ada yang dipilih maka Keluar module node = TreeViewStatementTree.Selected End Jika FrmEditorRules <> nil maka Begin Bebaskan Form EditorRules dari memory FrmEditorRules = nil End Jika FrmEditorInput <> nil maka Begin Bebaskan FormEditorInput dari memory FrmEditorInput=nil End Jika (Node.StateIndex = 1) atau (Node.StateIndex = 3) maka Begin Create FrmEditorInput FrmEditorInput.StatementId = Node.Text FrmEditorInput.CategoryId = DBEdit1.Text Panggil Module FrmEditorInput.InitiateStatement Panggil Module FrmEditorInput.CreateInput(FrmEditorInput.PanelCanvas,'') FrmEditorInput.Controllmove = FrmEditorInput.PanelCanvas FrmEditorInput.ShowProperty FrmEditorInput.FormStyle = fsMDIChild FrmEditorInput.left = Self.Width FrmEditorInput.Top=0 FrmEditorInput.Width =800 FrmEditorInput.Height =663 FrmEditorInput.Visible=true MainForm.DeleteState.Enabled=true End Jika tidak Begin Jika Node.StateIndex = 2 maka Begin Create FrmEditorRules FrmEditorRules.StatementId = Node.Parent.Text FrmEditorRules.RulesId= Node.Text FrmEditorRules.CategoryId = DBEdit1.Text Panggil Module FrmEditorRules.InitiateStatement Panggil Module FrmEditorRules.CreateInput(FrmEditorRules.PanelCanvas,'') FrmEditorRules.FormStyle = fsMDIChild FrmEditorRules.left = Self.Width FrmEditorRules.Top=0 FrmEditorRules.Width =800 FrmEditorRules.Height =663 FrmEditorRules.Visible=true
L - 14 End End End
Membuat Editor Input dan Editor Rules Module TFrmEditorInput.CreateInput (Vparent:TWinControlIdinput:string) Variable Module RS,DSUserArchive:TADODataSet i: integer value:string begin Create query RS Setting koneksi RS Query RS = 'Select * from [Input] Where Parent = '''+Idinput+''' and IDStatement = '''+StatementId+''' and IDCategory = '''+CategoryId+'''' Buka query Ciptakan komponen berdasarkan RS['TypeInput'] Jika RS['TypeInput']=1 maka Begin Panggil Module CreateInput(Groupbox yang diciptakan, RS[IdInput]) End End Module TFrmEditorRules.CreateInput (Vparent:TWinControlIdinput:string) Variable Module RS,DSUserArchive:TADODataSet i: integer value:string begin Create query RS Setting koneksi RS Query RS = 'Select * from [Input] Where Parent = '''+Idinput+''' and IDStatement = '''+StatementId+''' and IDCategory = '''+CategoryId+'''' Buka query Ciptakan komponen berdasarkan RS['TypeInput'] Jika RS['TypeInput']=1 maka Begin Panggil Module CreateInput(Groupbox yang diciptakan, RS[IdInput]) End End
Spesifikasi Proses Client User login Module TForm1.btnLoginClick Variabl module str1,str2:Variant Begin str1 = Edit1.Text str2 =Edit2.Text if str2 = '' then str2 = Null Jika cari item ADODataSet1 'IdUser’= str1 dan Password =’str2’ ada maka Begin FrmInput.UserId = Edit1.text Tampilkan Form pilih kategory dan start point End Else Begin
L - 15 ShowMessage('Invalid UserId / Password ') End End Memilih kategory(topik) dan start topik Category query = select * from Category where idcategory<>'Template' Start Topic query = select IdStatement, Keterangan from Statement where IdCategory = :IdCategory and Type=true // detil dari Master(category query) Module TForm2.ButtonSimulasiClick Begin Tampilkan Form simulasi client End Simulasi input Module TFrmInput.FormShow Begin Panggil Module HapusInput CategoryId = Form2.ADODataSet1['IdCategory'] StatementId = Form2.ADODataSet2['IdStatement'] Panggil Module InitiateStatement Panggil Module CreateInput(self,'') Panggil Module Prosesinput Panggil Module ShowAll End Module TFrmInput.HapusInput Variabel module j:integer Begin Lakukan perulangan j=banyaknya component control pada menu simulasi – 1 sampai 0 Begin Jika formsimulasi.component[j] adalah input maka Begin //input :radiobutton, checkbox, groupbox, label, edit, button, image, //datetimepicker class yang sudah dimodif Bebaskan formsimulasi.component[j] dari memory End End End Module TFrmInput.ShowAll Variabel module j:integer Begin Lakukan perulangan j=banyaknya component control pada menu simulasi – 1 sampai 0 Begin Jika formsimulasi.component[j] adalah input maka Begin //input :radiobutton, checkbox, groupbox, label, edit, button, image, //datetimepicker class yang sudah dimodif Tunjukan formsimulasi.component[j] ke layar End End End Module TFrmInput.InitiateStatement Variabel module DS: TADODataSet Begin
L - 16 Create query DS Setting koneksi database DS DS query = 'Select * from Statement where IdStatement = '''+StatementId +''' and IdCategory = ''' +CategoryId +'''' Buka query DS Jika DS['BackGroundColor'] <> Null maka Backgroundcolor Form simulasi = DS['BackGroundColor'] Tutup query DS Bebaskan DS dari memory End Module TFrmInput.CreateInput (Vparent:TWinControlIdinput:string) Variable module RS,DSUserArchive:TADODataSet i: integer value:string Begin Create query RS Setting koneksi RS Query RS = 'Select * from [Input] Where Parent = '''+Idinput+''' and IDStatement = '''+StatementId+''' and IDCategory = '''+CategoryId+'''' Buka query Ciptakan komponen berdasarkan RS['TypeInput'] Jika RS['TypeInput']=1 maka Begin Panggil Module CreateInput(Groupbox yang diciptakan, RS[IdInput]) //rekursive End End Module TFrmInput.Prosesinput Variabel module j:integer idInput:string Value,TempV:string DSUserArchive:TADODataSet Begin ifchange =false Lakukan perulangan j=banyaknya component control pada menu simulasi – 1 sampai 0 Begin IdInput='' Jika formsimulasi.component[j] adalah input maka Begin //input :radiobutton, checkbox, groupbox, label, edit, button, image, //datetimepicker class yang sudah dimodif formsimulasi.component[j].! = ProsesValue(formsimulasi.component[j] sebagai Input).???) Value = formsimulasi.component[j].! //??? = valuedef / textdef(bisa sendiri/semuanya) //!: caption, text,value tergantung dari jenis inputnya Idinput = (formsimulasi.component[j] sebagai Input).IdInput // Input : radiobutton, checkbox, groupbox, label, edit, button, image, //datetimepicker class yang sudah dimodif End if idInput<>'' then Begin Create query DSUserArchive Seting koneksi dabatabase DSUserArchive Query DSUserArchive = 'Select * from UserArchieve where IdStatement = '''+StatementId +''' and IdCategory = ''' +CategoryId +''' and IdInput = '''+ idInput +''' and IdUser = ''' + UserId+ ''''
L - 17 Buka query DSUserArchive jika item DSUserArchive ada maka Begin DSUserArchive.Edit DSUserArchive['Value']= Value End else Begin tambah item DSUserArchive DSUserArchive['Value']= Value DSUserArchive['Idcategory']= CategoryId DSUserArchive['IdStatement']= StatementId DSUserArchive['IdInput']= idInput DSUserArchive['IdUser']= UserId End Lakukan update pada item DSUserArchive Tutup query DSUserArchive End End ifchange=true End
Spesifikasi Proses Distribution Inisialisasi AWAL delQuery = false AKHIR btnConLeft JIKA LABEL btnConLeft = 'Open' browse file JIKA browse file menghasilkan path dan nama file Tampilkan path dan nama file pada status informasi Hubungkan aplikasi dengan database Tampilkan semua kategori Rubah label btnConLeft = ‘close’ Aktifkan tombol leftPaneDelete Jika Pane Kiri dan Pane Kanan terhubung database Aktifkan tombol Move Aktifkan tombol Copy AKHIR JIKA AKHIR JIKA SELAIN ITU Putuskan hubungan aplikasi dengan database yang sedang terhubung Tampilkan status informasi = 'Left Path : NOT OPENED' Rubah label btnConLeft ='Open' Non aktifkan tombol btnLeftPaneDelete Non aktifkan tombol btnMove Non aktifkan tombol btnCopy AKHIR JIKA btnConRight JIKA LABEL btnConRight = 'Open' browse file JIKA browse file menghasilkan path dan nama file Tampilkan path dan nama file pada status informasi Hubungkan aplikasi dengan database Tampilkan semua kategori Rubah label btnConRight = ‘close’ Aktifkan tombol rightPaneDelete Jika Pane Kiri dan Pane Kanan terhubung database Aktifkan tombol Move
L - 18 Aktifkan tombol Copy AKHIR JIKA AKHIR JIKA SELAIN ITU Putuskan hubungan aplikasi dengan database yang sedang terhubung Tampilkan status informasi = 'right Path : NOT OPENED' Rubah label btnConRight ='Open' Non aktifkan tombol btnRightPaneDelete Non aktifkan tombol btnMove Non aktifkan tombol btnCopy AKHIR btnLeftPaneDelete AWAL Konfirmasi bahwa kategori yang terpilih pada pane kiri akan dihapus JIKA Konfirmasi = True Hapus knowledge aktif pane kiri AKHIR JIKA AKHIR btnRightPaneDelete AWAL Konfirmasi bahwa kategori yang terpilih pada pane kanan akan dihapus JIKA Konfirmasi = True Hapus knowledge aktif pane kanan AKHIR JIKA AKHIR btnCopy JIKA label btnCopy = 'copy >>' JIKA kategori yang mau dikopi sudah ada pada pane kanan Tampilkan Peringatan DelQuery = False SELAIN ITU DelQuery = True Salin kategori kiri yang dipilih ke pane kanan AKHIR JIKA SELAIN ITU JIKA kategori yang mau dikopi sudah ada pada pane kiri Tampilkan Peringatan DelQuery = False SELAIN ITU DelQuery = True Salin kategori kanan yang dipilih ke pane kiri AKHIR JIKA btnMove AWAL JIKA label btnMove = 'move >>' Panggil modul btnCopy JIKA DelQuery = True Panggil modul btnRightPaneDelete DelQuery = False AKHIR JIKA SELAIN ITU Panggil modul btnCopy JIKA DelQuery = True Panggil modul btnLeftPaneDelete DelQuery = False AKHIR JIKA AKHIR btnAbout
L - 19 AWAL Tampilkan form About AKHIR