I think I should share something, too. I share so often. That was sarcasm.

This is just a start a start of a generic DB/List editor. I am using it for adding/deleting/editing simple lists. This is my test script before I stick it into the real program. It supports my current needs, but I should add support for multiple columns.

http://www.geocities.com/krabourn@sbcglobal.net/

 -

 -



BREAK  ON

$ScriptDir = @CurDir
$iMargin = 5
$iLabelHeight = 15
$iButtonWidth = 86
$iButtonHeight = 30
$iButtonSmallWidth = 60
$iToolButtonWidth = 20
$iToolButtonHeight = 20
$FileRTAINI = $ScriptDir + '\RTA.INI'
$aSMSTSMID = Split (ReadProfileString ($FileRTAINI'SMS''SMSTSMID'), ',', -1)
$aSMSTSMName = Split (ReadProfileString ($FileRTAINI'SMS''SMSTSMNAME'), ',', -1)
;SMSTSMID=M5400634,M5400620,M5400621,M540061E,M540061F,M54005DE,M5400636,M5400635,M5400641,
;M5400637,M5400C85,M5400647,M5400638,M5400644,M5400643,M5400622,M54007F2,M54007F3
;SMSTSMNAME=SAN - BB4738,SAN - BC5691,SAN - CB8564,SAN - CM9626,SAN - CR8337,SAN - DG4893,
;SAN - DS2616,SAN - EI3473,SAN - JH1579,SAN - JW9976,SAN - KR8770,SAN - RE4271,SAN - RP8192,
;SAN - RR7523,SAN - PT7845/JJ8313/MG7423,SAN - UNKNOWN,SAN - ISDN/RAS,SAN - SELF SUPPORT

;--- DB form
$frmDB = CreateObject("Kixtart.Form")
$frmDB.ClientWidth = 300
$frmDB.ClientHeight = 300
$frmDB.FontSize = 8
$frmDB.BorderStyle = 0
$frmDB.Center
$frmDB.Rectangle(00$frmDB.ClientWidth$frmDB.ClientHeight)
$ilsicons = $frmDB.ImageList
$ilsicons.ImageSize = 16,16
$ilsicons.Images.AddStrip($ScriptDir + '\RTA.bmp', &00FF00FF1616)

$txtDBName = $frmDB.TextBox
$txtDBName.ToolTip = ''
$txtDBName.Location = $iMargin$iMargin
$txtDBName.Size = 225$iLabelHeight
$txtDBName.BorderStyle = 5
$txtDBName.OnChange='
    IF $$spnDBName.Visible = 0 AND $$txtDBName.Value <> ""
        $$btnDBAdd.Show
    ELSE
        $$btnDBAdd.Hide
    ENDIF'

$txtDBName.OnGotFocus = '$$btnDBDelete.Hide'

$spnDBName = $frmDB.SpinButton
$spnDBName.ToolTip = 'Which column to edit.'
$spnDBName.Location = $txtDBName.Right + $iMargin$txtDBName.Top
$spnDBName.Size = 15,25
$spnDBName.Orientation = 0
$spnDBName.BorderStyle = 0
$spnDBName.OnChange = '
    $$txtDBName.ToolTip = ""
    $$btnDBSave.ToolTip = "Save the Item back to the list."
    $$txtDBName.Text = $$lvwDB.Items($$lvwDBIndex).SubItems($$spnDBName.Value).Text
    $$txtDBName.SetFocus'

$spnDBName.Hide

$btnDBSave = $frmDB.ToolButton
$btnDBSave.ToolTip = 'Save the Item back to the list.'
$btnDBSave.Size = $iToolButtonWidth$iToolButtonHeight
$btnDBSave.Location = $spnDBName.Right$txtDBName.Top - 2
$btnDBSave.FlatStyle = 1
$btnDBSave.Alignment = 0
$btnDBSave.Icon = $ilsicons.Images(11)
$btnDBSave.OnClick = '
    IF $$spnDBName.Value = 0
        $$lvwDB.Tag = 0
        FOR $$Index = 0 TO $$lvwDB.Items.Count
            IF $$txtDBName.Text = $$lvwDB.Items($$Index).SubItems(0).Text
                $$Index = $$lvwDB.Items.Count + 1
                $$txtDBName.ToolTip = "DUPLICATE"
                $$btnDBSave.ToolTip = "DUPLICATE - Save the Item back to the list."
                $$lvwDB.Tag = 1
            ENDIF
        NEXT
        IF $$lvwDB.Tag = 0
            $$lvwDB.Items($$lvwDBIndex).SubItems($$spnDBName.Value).Text = $$txtDBName.Text
            $$txtDBName.ToolTip = ""
            $$btnDBSave.ToolTip = "Save the Item back to the list."
        ENDIF
        $$lvwDB.Tag = ""
    ELSE
        $$lvwDB.Items($$lvwDBIndex).SubItems($$spnDBName.Value).Text = $$txtDBName.Text
    ENDIF
    $$txtDBName.SetFocus'

$btnDBSave.Hide

$lvwDB = $frmDB.ListView
$lvwDB.ToolTip = 'Double Click an item to edit.'
$lvwDB.Location = $iMargin$txtDBName.Bottom + $iMargin
$lvwDB.Size = $frmDB.Width - (2 * $iMargin), $frmDB.Height - $lvwDB.Top - $iMargin
$lvwDB.GridLines = 1
$lvwDB.View = 3
$lvwDB.FullRowSelect = 1
$lvwDB.OnDoubleClick = '
    $$lvwDBIndex = $$lvwDB.FocusedItem.Index
    $$spnDBName.Value = $$spnDBName.Min
    $$txtDBName.Text = $$lvwDB.Items($$lvwDBIndex).SubItems($$spnDBName.Value).Text
    $$btnDBSave.Show
    $$spnDBName.Show
    $$txtDBName.SetFocus'

$lvwDB.OnClick = '
    $$lvwDBIndex = $$lvwDB.FocusedItem.Index $$txtDBName.Text = ""
    $$txtDBName.ToolTip = ""
    $$btnDBAdd.ToolTip = "Add to the list."
    $$btnDBSave.ToolTip = "Save the Item back to the list."
    $$btnDBSave.Hide
    $$spnDBName.Hide
    $$btnDBAdd.Hide
    $$btnDBDelete.Show'

$lvwDBIndex = ''

$btnDBAdd = $frmDB.ToolButton
$btnDBAdd.ToolTip = 'Add to the list.'
$btnDBAdd.Size = $iToolButtonWidth$iToolButtonHeight
$btnDBAdd.Location = $txtDBName.Right + $iMargin$txtDBName.Top - 2
$btnDBAdd.FlatStyle = 1
$btnDBAdd.Alignment = 0
$btnDBAdd.Icon = $ilsicons.Images(12)
$btnDBAdd.Hide
$btnDBAdd.OnClick = '
    IF $$txtDBName.Text <> ""
        $$lvwDB.Tag = 0
        FOR $$Index = 0 TO $$lvwDB.Items.Count
            IF $$txtDBName.Text = $$lvwDB.Items($$Index).SubItems(0).Text
                $$Index = $$lvwDB.Items.Count + 1
                $$txtDBName.ToolTip = "DUPLICATE"
                $$btnDBAdd.ToolTip = "DUPLICATE - Add to the list."
                $$lvwDB.Tag = 1
            ENDIF
        NEXT
        IF $$lvwDB.Tag = 0
            $$Item = $$lvwDB.Items.Add($$txtDBName.Text)
            $$lvwDB.EnsureVisible($$Item.Index)
            $$lvwDBIndex = $$Item.Index
            $$spnDBName.Value = $$spnDBName.Min
            $$txtDBName.Text = $$lvwDB.Items($$Item.Index).SubItems($$spnDBName.Value).Text
            $$txtDBName.ToolTip = ""
            $$btnDBAdd.ToolTip = "Add to the list."
            $$btnDBSave.Show
            $$spnDBName.Show
            $$txtDBName.SetFocus
        ENDIF
        $$lvwDB.Tag = ""
    ENDIF
    $$txtDBName.SetFocus'


$btnDBDelete = $frmDB.ToolButton
$btnDBDelete.ToolTip = 'Delete from the list.'
$btnDBDelete.Size = $iToolButtonWidth$iToolButtonHeight
$btnDBDelete.Location = $txtDBName.Right + $iMargin$txtDBName.Top - 2
$btnDBDelete.FlatStyle = 1
$btnDBDelete.Alignment = 0
$btnDBDelete.Icon = $ilsicons.Images(6)
$btnDBDelete.Hide
$btnDBDelete.OnClick = '
    IF Val($$lvwDBIndex) >= 0
        IF $$frmDB.MsgBox("Do you want to delete " + $$lvwDB.Items($$lvwDBIndex).SubItems(0).Text + "?", "Delete", 4) =&nbs p;6
            $$lvwDB.Items($$lvwDBIndex).Remove
        ENDIF
        $$txtDBName.SetFocus
    ENDIF'


$btnDBDone = $frmDB.ToolButton
$btnDBDone.ToolTip = 'Go back to the Main Window'
$btnDBDone.Size = $iToolButtonWidth$iToolButtonHeight
$btnDBDone.Location = $frmDB.Width - $btnDBDone.Width - $iMargin$txtDBName.Top - 2
$btnDBDone.FlatStyle = 1
$btnDBDone.Alignment = 0
$btnDBDone.Icon = $ilsicons.Images(5)
$btnDBDone.OnClick = '$$frmDB.Hide'
;--- DB form

$aSMSTSM = $aSMSTSMID,$aSMSTSMName
$aSMSTSMTitles = 'SMS TSM Collection IDs','SMS TSM Collection Names'
$aSMSTSM = fnDB($aSMSTSM$aSMSTSMTitles)
UBound($aSMSTSM)
FOR EACH $k IN $aSMSTSM
UBound($k)
    FOR EACH $r IN $k
        ? $r
    NEXT
NEXT
QUIT 0

FUNCTION fnDB($aDBListOPTIONAL $DBTitle)
    DIM $Index$Index2$DBTemp$ColumnIndex$ColumnName$Column
    FOR $ColumnIndex = 0 TO $lvwDB.Columns.Count - 1
        $lvwDB.Columns($ColumnIndex).Remove
    NEXT
    $lvwDB.Items.Clear
    IF UBound($aDBList[1]) > 0
        SELECT
            CASE UBound($DBTitle) > 0
               FOR EACH $ColumnName IN $DBTitle
                    $Nul = $lvwDB.Columns.Add($ColumnName,, 0)
                NEXT
            CASE $DBTitle <''
                FOR $Index = 0 TO UBound($aDBList)
                    IF $Index = 0
                        $Nul = $lvwDB.Columns.Add($DBTitle,, 0)
                    ELSE
                        $Nul = $lvwDB.Columns.Add($Index,, 0)
                    ENDIF
                NEXT
            CASE $DBTitle = ''
                FOR $Index = 0 TO UBound($aDBList)
                    $Nul = $lvwDB.Columns.Add($Index,, 0)
                NEXT
                $lvwDB.HeaderStyle = 0
        ENDSELECT
    ELSE
        SELECT
            CASE UBound($DBTitle) > 0
                $Nul = $lvwDB.Columns.Add($DBTitle[0],, 0)
            CASE $DBTitle <''
                $Nul = $lvwDB.Columns.Add($DBTitle,, 0)
            CASE $DBTitle = ''
                $Nul = $lvwDB.Columns.Add(0,, 0)
                $lvwDB.HeaderStyle = 0
        ENDSELECT
    ENDIF
    IF UBound($aDBList[1]) > 0
        $lvwDB.Items.Count = Val (UBound($aDBList[0]) + 1)
        FOR $Index = 0 TO Val(UBound($aDBList[$Index2]))
            FOR $Index2 = 0 TO Val(UBound($aDBList))
                $lvwDB.Items($Index).SubItems($Index2).Text = $aDBList[$Index2][$Index]
            NEXT
        NEXT
    ELSE
        $lvwDB.Items.Count = Val (UBound($aDBList) + 1)
        FOR $Index = 0 TO Val(UBound($aDBList))
            $lvwDB.Items($Index).SubItems(0).Text = $aDBList[$Index]
        NEXT
    ENDIF
    FOR EACH $Column IN $lvwDB.Columns
        $Column.Width = -1
        $Column.Width = -2
    NEXT
    $spnDBName.Min = 0
    $spnDBName.Max = $lvwDB.Columns.Count - 1

    $frmDB.Show
    $frmDB.SetFocus
    $txtDBName.SetFocus
    WHILE $frmDB.Visible
        $Nul = Execute($frmDB.DoEvents())
    LOOP
    DIM $aDBTemp [Val($lvwDB.Columns.Count - 1)]
    FOR $Index = 0 TO Val($lvwDB.Items.Count - 1)
        FOR $Index2 = 0 TO Val(UBound($aDBTemp))
            $aDBTemp[$Index2] = $aDBTemp[$Index2] + $lvwDB.Items($Index).SubItems($Index2).Text + ','
        NEXT
    NEXT
    FOR $Index = 0 TO Val(UBound($aDBTemp))
        $DBTemp = Substr($aDBTemp[$Index], 1Len($aDBTemp[$Index]) - 1)
        $aDBTemp[$Index] = Split($DBTemp',', -1)
    NEXT
    $fnDB = $aDBTemp
ENDFUNCTION



[ 18. February 2003, 03:27: Message edited by: krabourn ]
_________________________
Kelly