Code:
Imports CMPNetModule
Imports System.Windows.Forms
Imports System.Drawing
Namespace CustomerFunction
<PSPClassAttribute("Exposed PSP class")> _
Public Class PSP_Functions
Inherits CCustomerNetModuleBase
#Region "Member Variables"
Private PSPenv_WsPath As String
Private PSPenv_PrgPath As String
Private PSPenv_DatPath As String
Private PSPenv_Question As String
Private PSPenv_CheckBoxValues As String
Private PSPenv_FunctionToCall As String
Private PSPenv_AIMKEY As String
Private frm As Form
Private data As String()
Private Hash As New Hashtable
Private Checked As String()
Private ReturnValue As String
Private RetVal As Integer
#End Region
Private Sub CreateEnvironment()
PSPenv_WsPath = Substitute("$(WSPATH:t)")
PSPenv_PrgPath = Substitute("$(PRGPATH:t)")
PSPenv_DatPath = Substitute("$(DATPATH:t)")
PSPenv_Question = Substitute("$(QUESTION)")
PSPenv_CheckBoxValues = Substitute("$(CHECKBOXVALUES)")
PSPenv_FunctionToCall = Substitute("$(FUNCTIONTOCALL)")
PSPenv_AIMKEY = Substitute("#AIMKEY")
End Sub
Private Function PSP_Substitute(ByVal Expression As String) As String
Try
Return Substitute(Expression)
Catch ex As Exception
Throw New Exception("PSP_Functions :: PSP_Substitute: " & ex.Message)
End Try
End Function
<PSPMethodAttribute("PSP Method")> _
<PSPMethodCondAttribute("TRUE", "TRUE", "", "")> _
Public Function Checkboxes(ByVal Question As String) As Integer
RetVal = 1
Try
CreateEnvironment()
If PSPenv_CheckBoxValues = "$(CHECKBOXVALUES)" Then
Throw New Exception("Variable $CHECKBOXVALUES ist nicht gefüllt")
Else
Call DrawForm(PSPenv_Question, PSPenv_CheckBoxValues)
End If
'CallFunction(PSPenv_FunctionToCall, Nothing)
Catch ex As Exception
Throw New Exception("_Checkboxes: " & ex.Message)
End Try
Return (RetVal)
End Function
Public Function DrawForm(ByVal Question As String, ByVal Values As String) As Integer
Try
frm = New Form()
frm.Text = "PSP"
frm.ControlBox = False
frm.Size = New Size(10, 10)
frm.AutoSize = True
Dim offset = 10
If PSPenv_Question Is Nothing Then
Dim label As New Label()
frm.Controls.Add(label)
label.Location = New Point(10, offset)
label.Text = PSPenv_Question
label.AutoSize = True
offset = offset + 30
End If
data = Values.Split(New Char() {","c})
Dim i As Integer = 1
For Each cur In data
If Not cur = "" Then
Dim checkBox = New CheckBox()
AddHandler checkBox.CheckedChanged, AddressOf checkBoxCheckedChangedFunction
frm.Controls.Add(checkBox)
checkBox.Location = New Point(10, offset)
checkBox.Text = cur
checkBox.Name = "checkBox" + i.ToString()
checkBox.Checked = False
checkBox.AutoSize = True
offset = offset + 30
If Hash.ContainsKey(checkBox.Text) = False Then
Hash.Add(checkBox.Text, checkBox.CheckState)
End If
i = i + 1
End If
Next
offset = offset
'frm.Size = New Size(300, offset + 100)
Dim OkButton As New Button()
AddHandler OkButton.Click, AddressOf OkButton_Click
frm.Controls.Add(OkButton)
OkButton.Location = New Point(10, offset)
OkButton.Size = New Size(50, 25)
OkButton.Name = "btn_OK"
OkButton.Text = "OK"
Dim CancelButton As New Button()
AddHandler CancelButton.Click, AddressOf CancelButton_Click
frm.Controls.Add(CancelButton)
CancelButton.Location = New Point(70, offset)
CancelButton.AutoSize = True
CancelButton.Name = "btn_Cancel"
CancelButton.Text = "Cancel"
frm.Show()
Catch ex As Exception
Throw New Exception("DrawForm: " & ex.Message)
End Try
Return Nothing
End Function
Sub OkButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim DicEntry As DictionaryEntry
ReturnValue = Nothing
For Each DicEntry In Hash
If DicEntry.Value = True Then
If ReturnValue = Nothing Then
ReturnValue = DicEntry.Key
Else
ReturnValue = ReturnValue + "," + DicEntry.Key
End If
End If
Next
' MsgBox(PSPenv_AIMKEY)
CallFunction("___Environment", "OUTPUTVAR=" + ReturnValue)
CallFunction("___Environment", "AIMKEY=" + PSPenv_AIMKEY)
CallFunction(PSPenv_FunctionToCall, Nothing)
frm.Close()
frm.Dispose()
End Sub
Sub CancelButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
frm.Close()
frm.Dispose()
End Sub
Sub checkBoxCheckedChangedFunction(ByVal sender As Object, ByVal e As System.EventArgs)
Dim objCheckbox = DirectCast(sender, CheckBox)
'MessageBox.Show(sender)
If objCheckbox.CheckState = False Then
Hash.Item(objCheckbox.Text) = False
Else
Hash.Item(objCheckbox.Text) = True
End If
'MsgBox(Hash.Item(objCheckbox.Text))
End Sub
End Class
End Namespace