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
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
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)
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.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
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
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
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']
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
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
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
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
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
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 = NullJika 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
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
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+ ''''
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
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
AWAL
Tampilkan form About AKHIR