Jumat, 22 Oktober 2010

Demo File => Contoh Source Code Praktek Bahasa Pemrograman IV

ok, sesuai dengan janji saya, berikut ini merupakan link untuk download source code dari program yang dibahas pada  pertemuan ke-3 praktek bahasa pemrograman IV di STMIK – Mikroskil Medan Lab 7 Jam 19.00 – 21.00 materi pemrograman file dengan vb.net

source code program bisa didownload dari link berikut ini (ditulis dengan menggunakan vb 2010)

semoga bermanfaat,

Rgds
Adi

Rabu, 20 Oktober 2010

Mengakses Method Suatu Form dari Form lain (SDI Form)

ok, melanjuti postingan blog yang sebelumnya, kalau dipostingan sebelumnya, kondisi Form1 dan Form2 adalah Form1 sebagai MDIContainer dan Form2 sebagai Child Form dari Form1. muncul pertanyaan, gimana jika Form1 dan Form2 sama-sama merupakan SDI Form (Form1 bukan merupakan MDI Container), jika tetap menggunakan pendekatan yang ada dipostingan sebelumnya, ternyata teknik yang diterapkan menjadi tidak sukses alias gagal. untuk menanggulanginya, bisa digunakan Delegate untuk membypass method yang akan diakses dari Form2. lengkap nya bisa dilihat pada bagian bawah ini:

clip_image002

clip_image004

Code Program.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Code Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        // delegate dan method yang akan diassign ke delegate
        public delegate void SetTextDelegate(string s);
        public void OnSetText(string s) { this.Text = s; }

        // delegate dan method yang akan diassign ke delegate
        public delegate string GetTextDelegate();
        public string OnGetText() { return "This Is Text From Form 1"; }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2();
            form.Show();
        }

    }
}

Code Form2.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        // mendelegasikan delegate yang sudah dicreate dari Form1
        Form1.SetTextDelegate setText =
                 new Form1.SetTextDelegate((Form1.ActiveForm as Form1).OnSetText);
        Form1.GetTextDelegate getText =
                 new Form1.GetTextDelegate((Form1.ActiveForm as Form1).OnGetText);

        private void button1_Click(object sender, EventArgs e)
        {
            // mengakses variable  delegate yang sudah dipersiapkan.
            setText("This Text is Set From Form 2");
            this.Text = getText();
        }
    }
}

sedangkan untuk VB.NET, karena defaultnya semua form ada instance staticnya, untuk mengakses method pada Form1 dari Form2 dapat dilakukan dengan lebih mudah, yaitu dengan memanggil static instance defaultnya, seperti yang ditunjukkan pada potongan code di bawah ini

Potongan Code Form2

Me.Text = Form1.GetText()
Form1.SetText(“Hello Form1 Set From Form2”)

Ok, Semoga Bermanfaat

Rgds
Adi

Mengakses Method Suatu Form dari Form lain

langsung saja, misalkan ada sebuah aplikasi dengan rancangan form seperti berikut ini:

Form1

image

Form2

image

pada rancangan di atas, Form1 bertindak sebagai sebuah MDIForm, sedangkan Form2 adalah Child Form dari Form1.

untuk agar Form2 sebagai Form Child dari Form1 bisa mengakses method yang disediakan di Form1, method dari Form1 tersebut harus dimarked sebagai public method. dan cara aksesnya dapat dilihat pada source code di bawah ini (C#).

Source Code Program.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Source Code Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // method dengan access public pada Form1
        public string GetText()
        {
            return "Hello Get From Form1";
        }

        // method dengan access public pada Form1
        public void SetText(string s)
        {
            this.Text = s;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2();
            form.MdiParent = this;
            form.Show();
        }
    }
}

Source Code Form2

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // mengakses method public dari Form1
            this.Text = (Form1.ActiveForm as Form1).GetText();
            (Form1.ActiveForm as Form1).SetText("Hello Form1 Set From Form2");
        }
    }
}

sedangkan untuk VB.NET, karena defaultnya semua form ada instance staticnya, untuk mengakses method pada Form1 dari Form2 dapat dilakukan dengan lebih mudah, yaitu dengan memanggil static instance defaultnya, seperti yang ditunjukkan pada potongan code di bawah ini

Potongan Code Form2

Me.Text = Form1.GetText()
Form1.SetText(“Hello Form1 Set From Form2”)

Ok, Semoga Bermanfaat

Rgds
Adi

Sabtu, 16 Oktober 2010

Aplikasi Sederhana Count Down Timer

berikut ini aplikasi sederhana untuk count down. bisa digunakan untuk melakukan count down untuk selang waktu tertentu.

bisa didownload exe nya di link berikut ini

http://rapidshare.com/files/425356509/Count_Down_Timer.exe

aplikasi ini membutuhkan .NET Framework 4.0.

bentuk screen shot aplikasi adalah sebagai berikut:

image

untuk menggunakan aplikasi ini, gunakan tombol2 pada keyboard:

1. tombol Up Key – untuk menambah waktu count down

2. tombol Down Key – untuk mengurangi waktu count down

3. tombol Enter – untuk memulai proses count down

4. tombol Esc – untuk menghentikan proses count down

5. tombol Del – untuk reset timer count down

6 Alt + F4 – menutup aplikasi

 

dan berikut ini source code aplikasi dalam C# dan VB:

C#

using System;
using System.Drawing;
using System.Media;
using System.Windows.Forms;

namespace Count_Down_Timer
{
    public partial class FrmCountDown : Form
    {

        double lama;
        bool play;
        DateTime selesai;
        DateTime mulai;
        System.Timers.Timer timer = new System.Timers.Timer();
        System.Timers.Timer timer2 = new System.Timers.Timer();

        public FrmCountDown()
        {
            InitializeComponent();
            lama = 0;
            this.TopMost = true;
            this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
            this.Top = 0;
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            timer2.Elapsed += new System.Timers.ElapsedEventHandler(timer2_Elapsed);
        }

        void timer2_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            this.lblTimer.Visible = !this.lblTimer.Visible;
        }

        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (selesai == mulai)
            {
                SystemSounds.Beep.Play();
                timer2.Start();
                play = false;
                timer.Stop();
            }
            else
            {
                selesai = selesai.AddMilliseconds(-100);
                TimeSpan selisih = selesai - mulai;
                if (selisih.Minutes < 5) this.lblTimer.ForeColor = Color.Red;
                this.lblTimer.Text = string.Format("{0}:{1}.{2}",
                    selisih.Minutes.ToString("00"),
                    selisih.Seconds.ToString("00"),
                    (selisih.Milliseconds / 100).ToString("0"));
            }
        }

        private void FrmCountDown_KeyDown(object sender, KeyEventArgs e)
        {
            if (play && e.KeyCode == Keys.Escape)
            {
                play = false;
                timer.Stop();
                lama = 0;
            }
            else if (!play && e.KeyCode == Keys.Up)
            {
                if (lama < 60) lama += 1;
                this.lblTimer.Text = string.Format("{0}:00.0", lama.ToString("00"));
            }
            else if (!play && e.KeyCode == Keys.Down)
            {
                if (lama > 0) lama -= 1;
                this.lblTimer.Text = string.Format("{0}:00.0", lama.ToString("00"));
            }
            else if (!play && e.KeyCode == Keys.Delete)
            {
                timer2.Stop();
                this.lblTimer.Visible = true;
                this.lblTimer.Text = "00:00.0";
                lama = 0;
                this.lblTimer.ForeColor = Color.Blue;
            }
            else if (e.KeyCode == Keys.Enter)
            {
                mulai = DateTime.Now;
                selesai = mulai.AddMinutes(lama);
                play = true;
                timer.Start();
            }
        }

    }
}

 

VB.NET

Public Class FrmCountDown

    Private lama As Double
    Private play As Boolean
    Private selesai As DateTime
    Private mulai As DateTime
    Private timer As New System.Timers.Timer()
    Private timer2 As New System.Timers.Timer()
   
    Public Sub New()
        InitializeComponent()
        lama = 0
        Me.TopMost = True
        Me.Left = Screen.PrimaryScreen.WorkingArea.Width - Me.Width
        Me.Top = 0
        AddHandler timer.Elapsed,
            Sub()
                If selesai = mulai Then
                    Media.SystemSounds.Beep.Play()
                    timer2.Start()
                    play = False
                    timer.Stop()
                Else
                    selesai = selesai.AddMilliseconds(-100)
                    Dim selisih As TimeSpan = selesai - mulai
                    If (selisih.Minutes < 5) Then Me.lblTimer.ForeColor = Color.Red
                    Me.Invoke(
                        Sub()
                            Me.lblTimer.Text = String.Format("{0}:{1}.{2}",
                                                 selisih.Minutes.ToString("00"),
                                                 selisih.Seconds.ToString("00"),
                                                 (selisih.Milliseconds / 100).ToString("0"))
                        End Sub, New Object() {})
                End If
            End Sub
        AddHandler timer2.Elapsed,
            Sub()
                Me.lblTimer.Visible = Not Me.lblTimer.Visible
            End Sub
    End Sub

    Private Sub FrmCountDown_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If play AndAlso e.KeyCode = Keys.Escape Then
            play = False
            timer.Stop()
            lama = 0
        ElseIf Not play AndAlso e.KeyCode = Keys.Up Then
            If lama < 60 Then lama += 1
            Me.lblTimer.Text = String.Format("{0}:00.0", lama.ToString("00"))
        ElseIf Not play AndAlso e.KeyCode = Keys.Down Then
            If lama > 0 Then lama -= 1
            Me.lblTimer.Text = String.Format("{0}:00.0", lama.ToString("00"))
        ElseIf Not play AndAlso e.KeyCode = Keys.Delete Then
            timer2.Stop()
            Me.lblTimer.Visible = True
            lama = 0
            Me.lblTimer.Text = "00:00.0"
            Me.lblTimer.ForeColor = Color.Blue
        ElseIf e.KeyCode = Keys.Enter Then
            mulai = DateTime.Now
            selesai = mulai.AddMinutes(lama)
            play = True
            timer.Start()
        End If
    End Sub

End Class

 

anda dapat mengembangkan aplikasi ini lebih lanjut lagi dan semoga bermanfaat,

 

Rgds
Adi

Mudahnya Membuat Code Snippet di VS 2010

kadang kala, kita sering dilibatkan dengan proses penulisan code yang sama secara berulang-ulang. untuk menghindari atau setidaknya mengurangi proses berulang tersebut, anda bisa memanfaatkan fasilitas snippet yang disediakan oleh Visual Studio (VS). snippet sesungguhnya adalah sebuah file xml dengan akhiran .snippet yang isinya adalah format struktur xml pembentuk snippet itu sendiri. dengan menggunakan snippet, kita bisa menggunakan shortcut untuk menghasilkan code-code yang perlu diketik berulang-ulang tersebut.

pada VS 2010, sudah disediakan sebuah extensions untuk memudahkan proses pembuatan snippet ini, anda cukup mendownload dan memasangnya ke dalam VS anda, seperti yang ditunjukkan oleh gambar-gambar berikut ini:

image

buka extension manager dari menu tools > extension manager

kemudian cari Snippet Designer

image

kemudian restart VS anda, setelah itu anda sudah bisa menggunakan snippet designer ini untuk membuat sebuah code snippet dengan mudah, seperti yang ditunjukkan oleh gambar-gambar berikut ini:

pilih / blok code program yang akan dijadikan code snippet. klik kanan pada code yang diblok tersebut, kemudian klik kanan, trus pilih export as snippet

image

image

ada beberapa properties yang bisa diisi, antara lain: shortcut yang merupakan key yang akan digunakan nantinya untuk menggunakan code snippet ini. Imports yang digunakan untuk mengimport namespace yang dibutuhkan. References yang digunakan untuk mengikutkan library file yang dibutuhkan.

dan langkah terakhir, simpan code snippet ini dengan akhiran .snippet

dan untuk menggunakannya, bisa dilakukan dengan:

ketik shortcut kemudian tekan tab, dalam contoh ini:

msge + <tab>

atau

ketik shortcut? kemudian tab + tab untuk melihat list code snippet yang ada, dalam contoh ini:

msge? + <tab> + <tab>

image

Nb. Teknik yang sama bisa digunakan untuk C# jg.

ok, semoga bermanfaat.

Rgds
Adi

Minggu, 10 Oktober 2010

Mengakses Method Form MDI dari Form Lain

Pada VB.NET, untuk mengakses kontrol atau method yang ada disebuah form lain, dapat dilakukan dengan mudah, karena sudah disediakannya static class dari tiap form yang bersangkutan. namun, hal ini tidak kita jumpai ketika kita bekerja dengan memanfaatkan bahasa C#. namun hal ini bukan berarti kita tidak bisa mengakses kontrol atau method dari form lain ketika bekerja dengan bahasa C#, tapi  dengan sedikit usaha, kontrol atau method tersebut tetap bisa kita akses jg dengan menggunakan bahasa C#. berikut ini contohnya:

image

image

Form1 adalah sebuah MDI Form, memiliki MenuStrip yang digunakan untuk memanggil object dari Form2. serta memiliki StatusStrip dengan kontrol ProgressBar di dalamnya. serta sebuah kontrol Timer.

image

Form2 adalah form yang akan difungsikan sebagai child form bagi Form1.

berikut ini code dari Form1:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var form = new Form2();
            form.MdiParent = this;
            form.Show();
        }

        int min, max;

        // method dgn akses public agar bisa dipanggil dari luar
        public void RunProgressStatusBar(int min, int max)
        {
            this.min = min;
            this.max = max;
            this.timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (min <= max)
            {
                this.lblAngka.Text = min.ToString();
                this.pBar.Value = min++;
            }
            else
                this.timer1.Stop();
        }
    }
}

 

dan, berikut ini code dari Form2:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int min = Convert.ToInt32(this.textBox1.Text);
            int max = Convert.ToInt32(this.textBox2.Text);
            // memanggil method RunProgressStatusBar kepunyaan MDI dari Child Form
            (Form1.ActiveForm as Form1).RunProgressStatusBar(min, max);
        }
    }
}

Rgds
Adi

Jumat, 08 Oktober 2010

Cek Status Tombol CapsLock, NumLock dan ScrollLock

pada VB.NET untuk melakukan pengecekan apakah tombol CapsLock, Numlock dan ScrollLock dalam posisi On atau Off bisa dilakukan dengan mudah dengan memanfaatkan namespace My yang sudah disediakan.

berikut ini contoh pengecekan tersebut dalam VB.NET:

Module Module1
    Sub Main()
        Console.WriteLine("CapsLock Is ON: {0}", My.Computer.Keyboard.CapsLock)
        Console.WriteLine("NumLock Is ON: {0}", My.Computer.Keyboard.NumLock)
        Console.WriteLine("ScrollLock Is ON: {0}", My.Computer.Keyboard.ScrollLock)
    End Sub
End Module

dalam C#, karena tidak disediakan, kita bisa menggunakan beberapa pendekatan yang berbeda untuk melakukan hal yang sama.

yang berikut ini bisa digunakan untuk console app dan win app dalam c#:

using System;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        // an unmanaged function that retrieves the states of each key
        [DllImport("user32.dll",
            CharSet = CharSet.Auto,
            ExactSpelling = true,
            CallingConvention = CallingConvention.Winapi)]
        public static extern short GetKeyState(int keyCode);

        static void Main(string[] args)
        {
            // get the state and store it as bool
            bool capsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;
            bool numLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0;
            bool scrollLock = (((ushort)GetKeyState(0x91)) & 0xffff) != 0;
            // show the status
            Console.WriteLine("CapsLock Is ON: {0}", capsLock);
            Console.WriteLine("NumLock Is ON: {0}", numLock);
            Console.WriteLine("ScrollLock Is ON: {0}", scrollLock);

            // managed code
            bool cekCapsLock = Console.CapsLock;
            bool cekNumLock = Console.NumberLock;
            Console.WriteLine("CapsLock Is ON: {0}", cekCapsLock);
            Console.WriteLine("NumLock Is ON: {0}", cekNumLock);
        }
    }
}

mulai dari .NET Framework versi 2.0, selain menggunakan cara di atas, bisa jg menggunakan class Control.IsKeyLocked seperti yang ditunjukkan pada code berikut ini:

Capslock

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            this.lblCapsLock.Text = "CAPS LOCK: " + Control.IsKeyLocked(Keys.CapsLock);
            this.lblNumLock.Text = "NUM LOCK: " + Control.IsKeyLocked(Keys.NumLock);
            this.lblScrollLock.Text = "SCROLL LOCK: " + Control.IsKeyLocked(Keys.Scroll);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.lblCapsLock.Text = "CAPS LOCK: " + Control.IsKeyLocked(Keys.CapsLock);
            this.lblNumLock.Text = "NUM LOCK: " + Control.IsKeyLocked(Keys.NumLock);
            this.lblScrollLock.Text = "SCROLL LOCK: " + Control.IsKeyLocked(Keys.Scroll);
        }
    }
}

Nb. teknik pengecekan seperti yang dilakukan oleh C# juga bisa diterapkan dengan sedikit penyesuaian penulisan code pada code di VB.NET

Rgds
Adi