none
[Tanya] Tidak bisa mengambil informasi Tanggal pada DateTimePicker yang berada pada Form yang lain.

    Question

  • Mohon pencerahannya..

    Saya mempunyai 2 buah Form. Misalkan Form1 dan Form2.

    Pada Form1 terdapat sebuah control DateTimePicker dan Button.

    DateTimePicker yang terdapat pada Form1, saya sudah pilih tanggalnya menjadi Tanggal 25 April 2012.

    Lalu, saya klik Button1 untuk menampilkan Form2.

    Pada Form2, pada Event Form_Load, saya memasang coding seperti dibawah ini:

    Textbox1.Text = Form1.DateTimePicker1.Value.Today.ToString("yyyy-MM-dd")

    Yang saya tidak mengerti kenapa hasil yang tampil pada Textbox1.Text = 2012-05-03 (Tanggal hari ini).

    Padahal Pada DateTimePicker1 yang terdapat pada Form1, disitu Tanggalnya = 25 April 2012.

    Terima kasih untuk rekan2 yang akan membahas permasalahan ini.







    Thursday, May 03, 2012 4:23 AM

Answers

  • Ini hasil screen shot di pc saya

    setelah itu emang ada yang saya rubah pada kodenya, yaitu:

    Me.Textbox1.Text = Format(Form1.DateTimePicker1.Value, "yyyy/MMMM/dd")

    
    
    
    Thursday, May 03, 2012 6:56 PM

All replies

  • Harusnya Today gak digunakan. Langsung saja Form1.DateTimePicker1.Value.ToString.
    
    
    Thursday, May 03, 2012 12:44 PM
  • Mas Wahyu, walaupun pakai Form1.DateTimePicker1.Value.ToString tetap saja hasilnya Tanggal hari ini.
    Thursday, May 03, 2012 3:21 PM
  • Ini hasil screen shot di pc saya

    setelah itu emang ada yang saya rubah pada kodenya, yaitu:

    Me.Textbox1.Text = Format(Form1.DateTimePicker1.Value, "yyyy/MMMM/dd")

    
    
    
    Thursday, May 03, 2012 6:56 PM
  • Mas Wahyu, saya sudah copy-paste codingnya Mas Wahyu diatas.

    Tapi kenapa tidak bisa. hasil tanggal hari ini yang tampil di Textbox. Saya bingung dengan permasalahan ini.

    Ini ScreenShoot saya:



    Friday, May 04, 2012 8:09 AM
  • 

    Sejujurnya saya tidak tahu dimana letak kesalahan program yang dimiliki oleh om Franky Koe. Tapi saya ada permintaan buat om Franky Koe, yaitu:

    • Coba buat project yang baru, tentunya bertipe Windows Application.
    • Setelah itu pada jendela desain kode, cobaah copy-paste kode dibawah ini:
    Public Class Form1 : Inherits Form
        Dim vDTP As New DateTimePicker
        Dim WithEvents vTombol As New Button
        Private Sub eLoad(ByVal o As Object, ByVal e As EventArgs) Handles MyBase.Load
            With Me
                Try
                    .Controls.AddRange(New Control() {.vDTP, .vTombol})
    
                    .vDTP.Value = "25/april/2012"
                    .vDTP.Location = New Point(10, 10)
    
                    .vTombol.Text = "Panggil Form 2"
                    .vTombol.Width = .vDTP.Width
                    .vTombol.Location = New Point(10, .vDTP.Bottom)
                Catch ex As Exception
                End Try
            End With
        End Sub
        Private Sub eTombolClick(ByVal o As Object, ByVal e As EventArgs) Handles vTombol.Click
            Form2.Show()
        End Sub
        Function AmbilTanggalDariDateTimePicker() As String
            Return vDTP.Value.ToString("yyyy/MMMM/dd dddd")
        End Function
    End Class
    
    Public Class Form2 : Inherits Form
        Dim vTxt As New TextBox
        Private Sub eLoad(ByVal o As Object, ByVal e As EventArgs) Handles MyBase.Load
            With Me
                Try
                    .Controls.Add(.vTxt)
                    .vTxt.Width = 200
                    .vTxt.Text = Form1.AmbilTanggalDariDateTimePicker
                Catch ex As Exception
                End Try
            End With
        End Sub
    End Class
    

    Setelah selesai, coba Anda run programnya. Seandainya hasilnya masih meleset juga, berarti ada yang error pada system date time yang ada di pc Anda.

    Friday, May 04, 2012 10:35 AM
  • Mas Wahyu, kalau saya buat Project baru, dengan hanya ada dua buah Form. Hasilnya Oke. Tidak ada masalah.

    Masalah ini mungkin, karena Form1 dan Form2 merupakan Form MDI Child yang di-load pada MDI Container.

    Karena terdapat sebuah Form MDIParent.

    Coding Me.Textbox1.Text = Format(Form1.DateTimePicker1.Value, "yyyy/MMMM/dd") tidak bisa berfungsi pada MDI Container.

    Mohon pencerahannya.


    Friday, May 04, 2012 10:45 AM
  • Hmmm...rada bingung juga sih. Tapi coba deh dibikin function saja. Contohnya seperti pada kode yang saya sertakan, yaitu function AmbilTanggalDariDateTimePicker. Terus, ini mungkin masih tergolong baru buat Anda. Tapi mungkin sudah saatnya. Pada dasarnya form bisa dijadikan control, caranya seperti berikut ini:

    With Me
        Try
            Dim a As New Form2
            a.TopLevel = False
            a.Location = New Point(10, .vTombol.Bottom)
            a.Size = New Size(250, 100)
            a.Show()
            Me.Controls.Add(a)
        Catch ex As Exception
        End Try
    End With

    Kode diatas anda masukkan pada kode yang telah saya berikan ke Anda, tepatnya di eTombolClick yang ada di form1. Nantinya pas dijalankan akan seperti ini:

    Metode ini telah lama dikenal semenjak Visual Basic 2003. Kalo gak salah yang memperkenalkannya adalah Duncan Mac Canzie. Coba deh cari artikelnya di MSDN.

    Friday, May 04, 2012 11:18 AM
  • Mas Wahyu, untuk bisa merasakan kebingungan saya dengan hal ini, coba Mas buat Projek baru dengan 3 buah Form.

    - Form1 ini buat sebagai MDI Parent.

    - Form2 ini buat sebagai MDI Child.

    - Form3 ini buat sebagai MDI Child.

    Coba tempatkan DateTimePicker Control pada Form2, lalu Pada Form3, ambil tanggal dari DateTimePicker yang ada pada Form2.

    Bisa ngga dengan coding yang Mas berikan ini Me.Textbox1.Text = Format(Form2.DateTimePicker1.Value, "yyyy/MMMM/dd")

    Yang tidak saya mengerti, kenapa sepertinya Coding Me.Textbox1.Text = Format(Form2.DateTimePicker1.Value, "yyyy/MMMM/dd")

    tidak bisa bekerja sesuai dengan yang diinginkan pada MDI Container? Sedangkan kalau pada Project yang bukan MDI, bekerja dengan baik coding tersebut.

    Terima kasih.


    Friday, May 04, 2012 3:03 PM
  • Saya telah membuat program sesuai keinginan om Frangky Koe, Anda boleh meng-copy-paste kode yang dibawah ini:

    Public Class Form1 : Inherits Form
        Dim vPictBox As New PictureBox
        Dim WithEvents vTombolForm2 As New Button
        Private Sub eLoad(ByVal o As Object, ByVal e As EventArgs) Handles MyBase.Load
            With Me
                Try
                    .IsMdiContainer = True
                    .Controls.Add(.vPictBox)
    
                    .vPictBox.Controls.Add(.vTombolForm2)
                    .vPictBox.Dock = DockStyle.Top
    
                    .vTombolForm2.Text = "Panggil Form 2"
                    .vTombolForm2.Width = 200
                    .vTombolForm2.Location = New Point(10, 10)
    
                    .Text = "MDI Parent Form"
                    .Size = New Size(640, 480)
                Catch ex As Exception
                End Try
            End With
        End Sub
        Private Sub eTombolClick(ByVal o As Object, ByVal e As EventArgs) Handles vTombolForm2.Click
            Form2.Show()
        End Sub
    End Class
    
    Public Class Form2 : Inherits Form
        Dim vDTP As New DateTimePicker
        Dim WithEvents vTombolForm3 As New Button
        Private Sub eLoad(ByVal o As Object, ByVal e As EventArgs) Handles MyBase.Load
            With Me
                Try
                    .Controls.AddRange(New Control() {.vDTP, .vTombolForm3})
    
                    .vDTP.Value = "25/april/2012"
                    .vDTP.Location = New Point(10, 10)
    
                    .vTombolForm3.Text = "Panggil Form 3"
                    .vTombolForm3.Location = New Point(10, .vDTP.Bottom)
                    .vTombolForm3.Width = .vDTP.Width
    
                    .Text = "Form 2"
                    .MdiParent = Form1
                Catch ex As Exception
                End Try
            End With
        End Sub
        Private Sub eTombolClick(ByVal o As Object, ByVal e As EventArgs) Handles vTombolForm3.Click
            Form3.Show()
            Form3.Location = New Point(Me.Right, Me.Top)
        End Sub
        Function AmbilWaktuDateTimePicker() As String
            Return Format(vDTP.Value, "yyyy/MMMM/dd") & " - " & Format(vDTP.Value, "dddd")
        End Function
    End Class
    
    Public Class Form3 : Inherits Form
        Dim vTxt As New TextBox
        Private Sub eLoad(ByVal o As Object, ByVal e As EventArgs) Handles MyBase.Load
            With Me
                Try
                    .Controls.Add(.vTxt)
    
                    .vTxt.Location = New Point(10, 10)
                    .vTxt.Width = 200
                    .vTxt.Text = Form2.AmbilWaktuDateTimePicker
    
                    .Size = New Size(250, 100)
                    .Text = "Form 3"
    
                    .MdiParent = Form1
                Catch ex As Exception
                End Try
            End With
        End Sub
    End Class

    Setelah itu pada waktu di run akan seperti ini:

    Silahkan dicoba. Terima kasih.

    Saturday, May 05, 2012 3:40 AM
  • Mas Wahyu, terimakasih banyak telah berusaha menolong saya atas problem yang ada. Saya sudah mencoba dengan codingnya Mas Wahyu diatas untuk membuat Form MDI Parent dan MDI Child yang semuanya menggunakan coding. Memang hasilnya persis seperti yang saya inginkan. Masalah saya akhirnya ada jalan keluarnya. Walaupun ada pertanyaan yang sampai saat ini belum saya temukan jawabannya. Kenapa mengambil tanggal pada DTPicker pada Form lain, tidak bisa menggunakan coding yang lasimnya kita gunakan? Me.Textbox1.Text = Format(Form2.DateTimePicker1.Value, "yyyy/MMMM/dd") Sehingga harus diakalin semua Form terkait, harus dicreate menggunakan code program seperti yang dilakukan oleh Mas Wahyu?
    Saturday, May 05, 2012 7:50 AM
  • Tidak usah bingung om Frangky Koe. Sebetulnya kalau Anda berkeinginan untuk bisa memanggil/menggunakan DateTimePicker dari Form lain. Maka control DateTimePicker harus dirubah menjadi Friend atau Public. Contoh yang saya buat kan menggunakan Dim. Dimana dim bersifat private dan bukan public. Sebagai bukti bisakah Anda memanggil control DateTimePicker dari Form lain? Jawabannya pasti tidak bisa, hehehe.

    Dan sebetulnya pada VB .Net, kita tidak bisa memanggil Form lain dengan menyebut namanya. Tetapi dimulai dari versi 2005 (hingga sekarang), dikembalikan lagi seperti VB 6. Dimana form bisa dipanggil hanya dengan menyebut namanya. Jadi dimulai dari VB .Net 2000 hingga 2003. Yang namanya form selalu dipanggil dengan cara dideklarasikan terlebih dahulu.

    Biasakan untuk mem-private-kan control yang Anda miliki. Agar tidak semua orang bisa menggunakannya. Lain lagi halnya bila Anda memang ingin orang lain bisa menggunakan control yang Anda punya.

    Saturday, May 05, 2012 11:37 AM