-- TABLE SEARCH -- Developer: ImJustMaxie -- Credits: Akira Fudo, Fury Zenblade local function initTableSearch() frmTS = createForm() frmTS.Name = "formTableSearch" frmTS.Caption = "Table Search" frmTS.OnClose = frmTS.hide frmTS.Position = 'poScreenCenter' frmTS.BorderStyle = 'bsSizeable' frmTS.Height = 400 frmTS.Width = 700 frmTS.tsEditBox = createEdit(frmTS) frmTS.tsEditBox.Anchors = '[akTop,akLeft,akRight]' frmTS.tsEditBox.AutoSize = true frmTS.tsEditBox.AutoSelect = true frmTS.tsEditBox.AnchorSideTop.Control = frmTS frmTS.tsEditBox.AnchorSideTop.Side = asrTop frmTS.tsEditBox.BorderSpacing.Top = 20 frmTS.tsEditBox.AnchorSideLeft.Control = frmTS frmTS.tsEditBox.AnchorSideLeft.Side = asrLeft frmTS.tsEditBox.BorderSpacing.Left = 20 frmTS.tsEditBox.Height = 23 frmTS.tsCheckbox1 = createCheckBox(frmTS) frmTS.tsCheckbox1.Caption = "Case Sensitive" frmTS.tsCheckbox1.Anchors = '[akTop,akRight]' frmTS.tsCheckbox1.AutoSize = true frmTS.tsCheckbox1.AnchorSideTop.Control = frmTS.tsEditBox frmTS.tsCheckbox1.AnchorSideTop.Side = asrCenter frmTS.tsCheckbox1.BorderSpacing.Top = 20 frmTS.tsCheckbox1.AnchorSideRight.Control = frmTS frmTS.tsCheckbox1.AnchorSideRight.Side = asrRight frmTS.tsCheckbox1.BorderSpacing.Right = 20 frmTS.tsCheckbox2 = createCheckBox(frmTS) frmTS.tsCheckbox2.Caption = "Auto Search" frmTS.tsCheckbox2.Anchors = '[akTop,akLeft]' frmTS.tsCheckbox2.AutoSize = true frmTS.tsCheckbox2.AnchorSideTop.Control = frmTS.tsCheckbox1 frmTS.tsCheckbox2.AnchorSideTop.Side = asrTop frmTS.tsCheckbox2.BorderSpacing.Top = 20 frmTS.tsCheckbox2.AnchorSideLeft.Control = frmTS.tsCheckbox1 frmTS.tsCheckbox2.AnchorSideLeft.Side = asrLeft frmTS.tsCheckbox2.BorderSpacing.Left = 0 frmTS.tsButton1 = createButton(frmTS) frmTS.tsButton1.Caption = "Search" frmTS.tsButton1.Anchors = '[akTop,akRight]' frmTS.tsButton1.AutoSize = true frmTS.tsButton1.AnchorSideTop.Control = frmTS.tsEditBox frmTS.tsButton1.AnchorSideTop.Side = asrCenter frmTS.tsButton1.BorderSpacing.Top = 0 frmTS.tsButton1.AnchorSideRight.Control = frmTS.tsCheckbox1 frmTS.tsButton1.AnchorSideRight.Side = asrLeft frmTS.tsButton1.BorderSpacing.Right = 20 frmTS.tsLabel1 = createLabel(frmTS) frmTS.tsLabel1.Caption = "Double click to change the memory record value" frmTS.tsLabel1.Anchors = '[akTop,akLeft]' frmTS.tsLabel1.AutoSize = true frmTS.tsLabel1.AnchorSideTop.Control = frmTS.tsEditBox frmTS.tsLabel1.AnchorSideTop.Side = asrBottom frmTS.tsLabel1.BorderSpacing.Top = 10 frmTS.tsLabel1.AnchorSideLeft.Control = frmTS.tsEditBox frmTS.tsLabel1.AnchorSideLeft.Side = asrLeft frmTS.tsLabel1.BorderSpacing.Left = 0 frmTS.tsListView1 = createListView(frmTS) frmTS.tsListView1.Anchors = '[akTop,akLeft,akRight,akBottom]' frmTS.tsListView1.ViewStyle = 'vsReport' frmTS.tsListView1.AutoWidthLastColumn = true frmTS.tsListView1.AutoSort = true frmTS.tsListView1.ReadOnly = true frmTS.tsListView1.RowSelect = true frmTS.tsListView1.Checkboxes = true frmTS.tsListView1.AnchorSideTop.Control = frmTS.tsCheckbox2 frmTS.tsListView1.AnchorSideTop.Side = asrBottom frmTS.tsListView1.BorderSpacing.Top = 20 frmTS.tsListView1.AnchorSideLeft.Control = frmTS.tsEditBox frmTS.tsListView1.AnchorSideLeft.Side = asrLeft frmTS.tsListView1.BorderSpacing.Left = 0 frmTS.tsListView1.AnchorSideRight.Control = frmTS.tsCheckbox1 frmTS.tsListView1.AnchorSideRight.Side = asrRight frmTS.tsListView1.BorderSpacing.Right = 0 frmTS.tsListView1.AnchorSideBottom.Control = frmTS frmTS.tsListView1.AnchorSideBottom.Side = asrBottom frmTS.tsListView1.BorderSpacing.Bottom = 20 -- editbox is created late, hence this frmTS.tsEditBox.AnchorSideRight.Control = frmTS.tsButton1 frmTS.tsEditBox.AnchorSideRight.Side = asrLeft frmTS.tsEditBox.BorderSpacing.Right = 20 frmTS.tsColumn1 = frmTS.tsListView1.Columns.add() frmTS.tsColumn1.Caption = "ID" frmTS.tsColumn1.Width = 50 frmTS.tsColumn2 = frmTS.tsListView1.Columns.add() frmTS.tsColumn2.Caption = "Description" frmTS.tsColumn2.Width = 205 --frmTS.tsColumn2.AutoSize = true frmTS.tsColumn3 = frmTS.tsListView1.Columns.add() frmTS.tsColumn3.Caption = "Parent" frmTS.tsColumn3.Width = 125 --frmTS.tsColumn3.AutoSize = true frmTS.tsColumn4 = frmTS.tsListView1.Columns.add() frmTS.tsColumn4.Caption = "Address" frmTS.tsColumn4.Width = 125 --frmTS.tsColumn4.AutoSize = true frmTS.tsColumn5 = frmTS.tsListView1.Columns.add() frmTS.tsColumn5.Caption = "Type" frmTS.tsColumn5.Width = 50 --frmTS.tsColumn5.AutoSize = true frmTS.tsColumn6 = frmTS.tsListView1.Columns.add() frmTS.tsColumn6.Caption = "Value" frmTS.tsColumn6.Width = 100 --frmTS.tsColumn6.AutoSize = true end local function translateVartype(vartype) local tbl = { 'Byte', '2 Bytes', '4 Bytes', '8 Bytes', 'Float', 'Double', 'String', 'Wide String', 'Byte Array', 'Binary', 'All', 'AA Script', 'Pointer', 'Custom Type', 'Grouped', } if vartype ~= nil then return tbl[vartype+1] else return '' end end local function mod_string(textstring) local modstr = textstring:gsub("%W","%%%1") ; return modstr end local function ts_useTableSearch() frmTS.tsListView1.Items.Clear() local al = getAddressList() local str = frmTS.tsEditBox.text local desc = nil local desc2 = nil if str == '' then return end for i=0,al.Count-1 do if frmTS.tsCheckbox1.Checked == false then desc = al[i].description:lower() ; desc2 = str:lower() else desc = al[i].description ; desc2 = str end if string.match(desc,mod_string(desc2)) then local num = i local l = frmTS.tsListView1.Items.Add() l.Caption = i l.SubItems.add(AddressList[num].Description) if AddressList[num].Parent then l.SubItems.add(('%s'):format(AddressList[num].Parent.Description)) else l.SubItems.add(('%s'):format('')) end if AddressList[num].type == vtAutoAssembler then l.SubItems.add(('%20s'):format('')) l.SubItems.add(('%s'):format(translateVartype(AddressList[num].type))) l.SubItems.add('