Ferry Kurniawan

Every Accomplishment Start With The Decision to Try
See also: Other Geeks@INDC

February 2010 - Posts

Menampilkan Gambar di Grid Control Aplikasi Windows Mobile

Bagi kebanyakan developer desktop ataupun aplikasi windows mobile, grid kontrol digunakan untuk menampilkan data di form. Terkadang grid kontrol yang disediakan oleh Visual Studio .net tersebut memiliki keterbatasan, atas dasar itulah suatu Perusahaan yang bernama Resco membuat beberapa kontrol yang dapat digunakan di Aplikasi Windows Mobile. Salah satu kontrolnya ialah SmartGrid yang mempunyai fitur lebih daripada grid kontrol biasanya, untuk mendownloadnya anda dapat menuju ke sini dan untuk tutorialnya dapat anda lihat disini.

Untuk permulaan pembahasan kontrol-kontrol yang disediakan oleh Resco kami akan mengulas sedikit kontrol SmartGrid yang dapat menampilkan Gambar, CheckBox dlll. Berikut ini langkahnya :

1. Buat Smart Device Project di VS 2008. Pilih Bahasa sesuai yang anda kuasai, (disini kami menggunakan Visual Basic)

2. Tambahkan sebuah Database SQL Mobile dgn cara Klik Kanan –> Add New Item –> Database File. Simpan dgn nama DB.sdf

DB

3. Buat Tabel Baru di Database tersebut (DB.sdf) dgn nama “Penjualan” yang mempunyai kolom Kode (nvarchar(10))Nama (nvarchar(50))  dan Jumlah (Numeric).

Tabel

4. Isi beberapa data dengan cara klik kanan –> Show Table Data kemudian diketikkan datanya.

 

Data

5. Tambahkan Kontrol SmartGrid, ImageList dan Button ke dalam Form1.vb

Form

6. Klik Kontrol ImageList kemudian Tambahkan Collection Images-nya di Jendela Properties, disini kami tambahkan 2  buah gambar (Smile.png dan Sad.png)

ImgList

 

 

ImgListColl

7. Klik kontrol SmartGrid kemudian Tambahkan Collection Column di Jendela Properties, tambahkan 3 buah kolom (Kode, Nama, Jumlah) Untuk kolom Kode & Nama anda cukup mensetting  Name, Data Member dan Header Text nya saja. Untuk  kolom Jumlah disamping properti diatas setting juga CustomizeCells =True dan ImageList = ImageList1.

Grid GridColl

8. Klik Kontrol SmartGrid kembali kemudian Tambahkan Collection Styles di Jendela Properties, tambahkan dua buah Styles yang pertama Green dan yang kedua Red. Yang anda setting ialah properti BackColor dan ImagePosition-nya.

GridStyles GridStylesColl

9. Tambahkan code dibawah ini, code ini untuk menampilkan data ke dalam SmartGrid dimana pada kolom jumlah nya dilakukan pengecekan jika nilainya > 100 maka warnanya akan hijau dan ada gambar Smile.png di samping kirinya, dan jika tidak warnanya merah dan ada gambar Sad.png.

Imports System.Data
Public Class Form1
    Private Sub btnTampil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTampil.Click
        SmartGrid1.DbConnector.ConnectionString = "Data Source = \Program Files\SmartGrid\DB.sdf"
        SmartGrid1.DbConnector.CommandText = "SELECT * FROM PENJUALAN"
        SmartGrid1.LoadData(False)
    End Sub
    Private Sub SmartGrid1_CustomizeCell(ByVal sender As Object, ByVal e As Resco.Controls.SmartGrid.CustomizeCellEventArgs) Handles SmartGrid1.CustomizeCell
        If e.Cell.Header = False Then
            If e.Cell.Column.DataMember = "Jumlah" Then
                e.Cell.Text = FormatNumber(e.Cell.Data)
                If e.Cell.Data > 100 Then
                    e.Cell.Style = Me.SmartGrid1.Styles("Green")
                    e.Cell.Image = Me.ImageList1.Images(0)
                Else
                    e.Cell.Style = Me.SmartGrid1.Styles("Red")
                    e.Cell.Image = Me.ImageList1.Images(1)
                End If
            End If
        End If
    End Sub
End Class

 

 

 

 

 

 

10. Jalankan Project tersebut kemudian tekan tombol Tampil. Maka akan tampil grid seperti berikut ini.

Hasil

11. Selamat mencoba & Semoga Bermanfaat. Terima Kasih :)

Share this post: | | | |
Writing & Reading Registry di Aplikasi Windows Mobile

Pengertian Registry yang saya kutip dari wikipedia ialah merupakan sebuah basis data yang disusun secara hierarkis yang mengandung informasi mengenai konfigurasi sebuah sistem, mulai dari konfigurasi perangkat keras, perangkat lunak, asosiasi ekstensi berkas dengan aplikasinya hingga preferensi pengguna. Registry merupakan pengganti berkas-berkas konfigurasi *.INI yang digunakan dalam sistem Windows 16-bit (Windows 3.x dan Windows for Workgroups). Registry, pertama kali diperkenalkan di dalam sistem Windows 16-bit sebagai penampung informasi mengenai pemetaan/asosiasi ekstensi berkas dengan aplikasinya, dan kemudian dikembangkan menjadi basis data dengan cakupan yang luas pada sistem-sistem operasi keluarga Windows NT. Registry juga kemudian digunakan pada sistem operasi kelas rumahan: Windows 95, Windows 98 dan Windows ME, tapi memang implementasi yang cukup bagus dari registry terdapat di dalam keluarga sistem operasi Windows NT. Bagaimana jikalau Registry tersebut ada di Windows Mobile?

Untuk itulah contoh kali ini kita akan membuat aplikasi sederhana untuk menulis & membaca registry di Aplikasi Windows Mobile.

1. Buka Visual Studio 2008 anda, kemudian buat Project Smart Device baru.

2. Tambahkan 4 Buah Control seperti berikut ini. Beri nama btnWrite, btnRead, Label1, txtValue

1

3. Tambahkan sebuah class seperti berikut , beri nama clsRegistry.vb , class ini berfungsi untuk menulis & membaca registry , class ini mengimport class  System.Runtime.InteropServices.DllImport("Coredll.dll")

 
Public Class clsRegistry
    Public Enum tagReturnValues
        NoError = 0
    End Enum
    Public Enum tagRegistryRootKeys
        HkeyCurrentUser = &H80000001
        HkeyLocalMachine = &H80000002
        HkeyClassesRoot = &H80000000
    End Enum
    Public Enum RegistryDataType
        [String] = 1
        Number = 4
    End Enum
    Public Const KeyAllAccess = &H3F
    Public Const RegDword = 4
    Public Const RegOptionNonVolatile = 0
    Public Const RegSz = 1
 
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegCreateKeyExW")> _
    Private Shared Function RegCreateKeyEx( _
        ByVal hkey As Int32, _
        ByVal lpSubKey As String, _
        ByVal Reserved As Int32, _
        ByVal lpClass As String, _
        ByVal dwOptions As Int32, _
        ByVal samDesired As Int32, _
        ByVal lpSecurityAttributes As Int32, _
        ByRef phkResult As Int32, _
        ByRef lpdwDisposition As Int32 _
        ) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegCloseKey")> _
    Private Shared Function RegCloseKey(ByVal hKey As Int32) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegDeleteKeyW")> _
    Private Shared Function RegDeleteKey( _
      ByVal hkey As Int32, _
      ByVal lpSubKey As String _
      ) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegOpenKeyExW")> _
    Private Shared Function RegOpenKeyEx( _
      ByVal hkey As Int32, _
      ByVal lpSubKey As String, _
      ByVal ulOptions As Int32, _
      ByVal samDesired As Int32, _
      ByRef phkResult As Int32 _
      ) As Int32
    End Function
 
    'WINADVAPI LONG APIENTRYRegQueryValueExW (IN HKEY hKey,IN LPCWSTR lpValueName,
    'IN LPDWORD lpReserved,OUT LPDWORD lpType,IN OUT LPBYTE lpData,IN OUT LPDWORD lpcbData);
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegQueryValueExW")> _
    Private Shared Function RegQueryValueEx( _
     ByVal hKey As Int32, _
     ByVal lpValueName As String, _
     ByVal lpReserved As Int32, _
     ByRef lpType As RegistryDataType, _
     ByVal lpData As String, _
     ByRef lpcbData As Int32 _
     ) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegQueryValueExW")> _
    Private Shared Function RegQueryValueLong( _
      ByVal hkey As Int32, _
      ByVal lpValueName As String, _
      ByVal lpReserved As Int32, _
      ByRef lpType As Int32, _
      ByRef lpData As Int32, _
      ByRef lpcbData As Int32 _
      ) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegQueryValueExW")> _
    Private Shared Function RegQueryValueString( _
      ByVal hkey As Int32, _
      ByVal lpValueName As String, _
      ByVal lpReserved As Int32, _
      ByRef lpType As Int32, _
      ByVal lpData As System.Text.StringBuilder, _
      ByRef lpcbData As Int32 _
      ) As Int32
    End Function
 
    'WINADVAPI LONG APIENTRY RegSetValueExW (IN HKEY hKey, IN LPCWSTR lpValueName, 
    'IN DWORD Reserved, IN DWORD dwType, IN CONST BYTE* lpData, IN DWORD cbData);
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegSetValueExW")> _
    Private Shared Function RegSetValueExLong( _
      ByVal hkey As Int32, _
      ByVal lpValueName As String, _
      ByVal Reserved As Int32, _
      ByRef dwType As Int32, _
      ByRef lpValue As Int32, _
      ByVal cbData As Int32 _
      ) As Int32
    End Function
 
    <System.Runtime.InteropServices.DllImport("Coredll.dll", EntryPoint:="RegSetValueExW")> _
    Private Shared Function RegSetValueExString( _
      ByVal hkey As Int32, _
      ByVal lpValueName As String, _
      ByVal Reserved As Int32, _
      ByVal dwType As Int32, _
      ByVal lpValue As String, _
      ByVal cbData As Int32 _
      ) As Int32
    End Function
 
 
    Public Function CreateNewKey(ByVal rootSection As tagRegistryRootKeys, ByVal sNewKeyName As String) As Boolean
        Dim hNewKey As Int32
        Dim lRet As Int32
 
        lRet = RegCreateKeyEx(rootSection, _
          sNewKeyName, 0, _
          String.Empty, _
          RegOptionNonVolatile, _
          KeyAllAccess, _
          0, _
          hNewKey, lRet)
 
        RegCloseKey(hNewKey)
        Return lRet <> 0
    End Function
    Public Function QueryValue(ByVal lSection As Int32, ByVal sKeyName As String, ByVal sValueName As String) As Object
        Dim lRet As Int32
        Dim hkey As Int32
        Dim vValue As Object
 
        Try
            If RegOpenKeyEx(lSection, sKeyName, 0, KeyAllAccess, hkey) = 0 Then
                lRet = QueryValueEx(hkey, sValueName, vValue)
            End If
        Catch ex As Exception
            Throw ex
        Finally
            RegCloseKey(hkey)
        End Try
 
        Return CType(vValue, Object)
    End Function
    Public Function QueryStringValue(ByVal lSection As Int32, ByVal sKeyName As String, ByVal sValueName As String) As String
        Dim lRet As Int32
        Dim hkey As Int32
        Dim vValue As Object
 
        If RegOpenKeyEx(lSection, sKeyName, 0, KeyAllAccess, hkey) = 0 Then
            lRet = QueryValueEx(hkey, sValueName, vValue)
            RegCloseKey(hkey)
        End If
 
        Return CType(vValue, String)
    End Function
    Public Function QueryLongValue(ByVal lSection As Int32, ByVal sKeyName As String, ByVal sValueName As String) As Long
        Dim lRet As Int32
        Dim hkey As Int32
        Dim vValue As Object
 
        If RegOpenKeyEx(lSection, sKeyName, 0, KeyAllAccess, hkey) = 0 Then
            lRet = QueryValueEx(hkey, sValueName, vValue)
            RegCloseKey(hkey)
        End If
 
        Return CType(vValue, Int32)
    End Function
    Public Sub SetKeyValue(ByVal lSection As Int32, ByVal sKeyName As String, ByVal sValueName As String, ByVal vValueSetting As Object, ByVal lValueType As Int32)
        Dim lRet As Int32
        Dim hkey As Int32
 
        If RegOpenKeyEx(lSection, sKeyName, 0, KeyAllAccess, hkey) = 0 Then
            lRet = SetValueEx(hkey, sValueName, lValueType, vValueSetting)
            RegCloseKey(hkey)
        End If
    End Sub
    Public Sub DeleteKey(ByVal lSection As tagRegistryRootKeys, ByVal keyValue As String)
        RegDeleteKey(lSection, keyValue)
    End Sub
 
    Private Function SetValueEx(ByVal hkey As Int32, ByVal sValueName As String, ByVal lType As RegistryDataType, ByVal vValue As Object) As Int32
        Dim lValue As Int32
        Dim sValue As String
 
        Select Case lType
            Case RegistryDataType.String
                sValue = vValue & Chr(0)
                Return RegSetValueExString(hkey, sValueName, 0, lType, sValue, Len(sValue) * 2)
            Case RegistryDataType.Number
                lValue = vValue
                Return RegSetValueExLong(hkey, sValueName, 0, lType, lValue, 4)
        End Select
    End Function
    Private Function QueryValueEx(ByVal lhKey As Int32, ByVal szValueName As String, ByRef vValue As Object) As Int32
        Dim lenData As Int32
        Dim intRet As Int32
        Dim lType As RegistryDataType
        Dim lValue As Int32
        Dim sValue As System.Text.StringBuilder
 
        intRet = RegQueryValueEx(lhKey, szValueName, 0, lType, 0, lenData)
 
        Select Case lType
            Case RegistryDataType.String
                sValue = New System.Text.StringBuilder(lenData)
                intRet = RegQueryValueString(lhKey, szValueName, 0, lType, sValue, lenData)
                If intRet = tagReturnValues.NoError Then
                    vValue = sValue.ToString
                Else
                    vValue = String.Empty
                End If
 
            Case RegistryDataType.Number
                intRet = RegQueryValueLong(lhKey, szValueName, 0, lType, lValue, lenData)
                If intRet = tagReturnValues.NoError Then
                    vValue = lValue
                End If
 
            Case Else
                intRet = -1
 
        End Select
 
        Return intRet
    End Function
End Class

4. Buka form1 kemudian tambahkan code seperti dibawah ini.

Public Class Form1
 
    Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
        Dim Regis As clsRegistry = New clsRegistry
        Regis.CreateNewKey(Regis.tagRegistryRootKeys.HkeyLocalMachine, "SOFTWARE\GeeksIndonesia\Mobile")
        Regis.SetKeyValue(Regis.tagRegistryRootKeys.HkeyLocalMachine, "SOFTWARE\GeeksIndonesia\Mobile", "Project", "R / W Registry WM", 1)
        Regis = Nothing
    End Sub
    Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
        Dim Regis As clsRegistry = New clsRegistry
        txtValue.Text = ""
        Dim Nilai As String = Regis.QueryStringValue(Regis.tagRegistryRootKeys.HkeyLocalMachine, "SOFTWARE\GeeksIndonesia\Mobile", "Project")
        Nilai = Regis.QueryStringValue(Regis.tagRegistryRootKeys.HkeyLocalMachine, "SOFTWARE\GeeksIndonesia\Mobile", "Project")
        txtValue.Text = Nilai
        Regis = Nothing
    End Sub
End Class

 

 

 

5. Jalankan project tersebut (F5) , tekan tombol Write New Registry maka akan terbentuk sebuah key baru seperti berikut ini.

2

6. Tekan tombol Read Value Registry maka nilai dari Registry yang kita tambahkan tadi akan tampil di txtValue seperti berikut ini.

3

7. Selamat Mencoba & Semoga Bermanfaat :) , Terima Kasih

Share this post: | | | |
Video Tutorial : Mengakses Web Service dengan Aplikasi Windows Mobile

Web Services adalah salah satu bentuk implementasi dari arsitektur model aplikasi N-Tier yang berorientasi kepada layanan. Web Services tidak mempunyai tampilan, karena Web Services termasuk dalam Business- Service tier. Artinya didalam Web Services hanya tersedia fungsi-fungsi yang nantinya dapat digunakan oleh aplikasi lainnya Web Services menggunakan XML sebagai format dokumen dalam melakukan pertukaran datanya.

webservice

Berikut ini adalah video tutorial Mengakses Web Service melalui Aplikasi Windows Mobile. Selamat menyaksikan :)

Jika Video tidak tampil anda dapat menuju ke halaman ini

 

 

Mengakses Web Service melalui Aplikasi Windows Mobile
Share this post: | | | |