Subscribe:

Saturday, November 6, 2010

Function dan Procedure serta passing nilai Antar Form

Function merupakan suatu fungsi yang dibuat untuk memproses atau melakukan suatu proses didalamnya yang akhirnya mengembalikan nilai dari proses tersebut.
Procedure merupakan suatu fungsi didalamnya yang tidak mengembalikan nilai.
Function dan Procedure digunakan untuk mengelompokan suatu proses sehingga dapat mempermudahkan programmer untuk melacak kesalahan coding dan juga untuk mempercepat pembuatan coding tanpa harus mengulang coding yang sama.

Berikut contoh function dan procedure serta passing nilai antar form.

Setelah tombol Hitung diklik maka akan muncul form kedua yang berisi nilai yang dikirim dari form Utama ini.
Untuk grade sendiri dapat dikembangkan lagi.

Contoh Code:


Public Class frmUtama

    Sub ClearInput()
        txtNPM.Clear()
        txtNama.Clear()
        txtNTugas.Clear()
        txtNPartisipasi.Clear()
        txtNUTS.Clear()
        txtNUAS.Clear()
        txtNPM.Focus()
    End Sub

    Function ValidateInput() As Boolean
        If txtNPM.Text.Trim.Length <> 7 Then
            MessageBox.Show("NPM tidak valid")
            txtNPM.Focus()
            Return False
        ElseIf Not IsNumeric(txtNPM.Text.Trim) Then
            MessageBox.Show("NPM harus angka")
            txtNPM.Focus()
            Return False
        ElseIf txtNama.Text.Trim.Length < 3 Then
            MessageBox.Show("Masukkan nama yang benar")
            txtNama.Focus()
            Return False
        ElseIf Not IsNumeric(txtNTugas.Text) Then
            txtNTugas.Focus()
            Return False
        ElseIf Not IsNumeric(txtNPartisipasi.Text) Then
            txtNPartisipasi.Focus()
            Return False
        ElseIf Not IsNumeric(txtNUTS.Text) Then
            txtNUTS.Focus()
            Return False
        ElseIf Not IsNumeric(txtNUAS.Text) Then
            txtNUAS.Focus()
            Return False
        Else
            Return True
        End If
    End Function

    Function CalcNA(ByVal NTugas As Single, ByVal NPart As Single, _
                    ByVal NUTS As Single, ByVal NUAS As Single) _
                    As Single
        Dim sngNTugas, sngNPart, sngNUTS, sngNUAS As Single
        Dim sngResult As Single

        sngNTugas = NTugas * 0.1
        sngNPart = NPart * 0.05
        sngNUTS = NUTS * 0.4
        sngNUAS = NUAS * 0.45

        sngResult = sngNTugas + sngNPart + sngNUTS + sngNUAS
        Return sngResult
    End Function

    Private Sub frmUtama_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        ClearInput()
    End Sub

    Private Sub btnHitungNA_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnHitungNA.Click
        If ValidateInput() = False Then Exit Sub
        With frmResult
            .lblNPM.Text = txtNPM.Text
            .lblNama.Text = txtNama.Text
            .lblNAkhir.Text = CalcNA(txtNTugas.Text, _
                    txtNPartisipasi.Text, _
                    txtNUTS.Text, txtNUAS.Text)
            .Show()
        End With
        Me.Hide()
    End Sub

    Private Sub txtNama_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles txtNama.KeyPress
        'textbox nama hanya bisa input huruf
        If Not ((e.KeyChar >= "A" And e.KeyChar <= "z") _
            Or e.KeyChar = vbBack) Then
            e.Handled = True
        End If
    End Sub

    Private Sub HanyaInputAngkaDec(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles txtNTugas.KeyPress, txtNPartisipasi.KeyPress, _
            txtNUAS.KeyPress, txtNUTS.KeyPress

        Dim decSeperator As String
        Dim digitGrouping As String

        'untuk mengambil simbol pemisah desimal
        decSeperator = System.Globalization.CultureInfo _
                    .CurrentCulture.NumberFormat _
                    .CurrencyDecimalSeparator

        'untuk mengambil simbol pemisah ribuan
        digitGrouping = System.Globalization.CultureInfo _
                    .CurrentCulture.NumberFormat _
                    .CurrencyGroupSeparator

        If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") _
            Or e.KeyChar = vbBack Or e.KeyChar = decSeperator) Then
            e.Handled = True
        End If
    End Sub
End Class

Code pada form Result:
Public Class frmResult

    Private Sub btnBack_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnBack.Click
        frmUtama.Show()
        Me.Close()
    End Sub

    Private Sub frmResult_FormClosed(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        frmUtama.Close()
    End Sub

End Class

No comments: