20 มิถุนายน 2555

จัดการเรื่องการพิมพ์หน้าเว็บด้วย CSS

ลายท่านเคยใช้ Web Browser แล้วต้องสั่งพิมพ์หน้าเว็บนั้นออกทางเครื่องพิมพ์ เมื่อพิมพ์ออกมาจะปรากฏทุกอย่างบนหน้าเว็บนั้น ไม่ว่าจะเป็น เมนู โฆษณา ภาพกราฟฟิก และอื่นๆอีกจะปาถะ ซึ่งบางส่วนเราไม่ต้องการ ดังนั้นถ้าเราเป็นคนเขียนเว็บ เราจะทำอย่างไรเมื่อเวลาสั่งพิมพ์ แล้วให้พิมพ์เฉพาะข้อมูลที่ต้องการเท่านั้น เราสามารถทำได้โดยอาศัย CSS เข้ามาช่วยในการกำหนดรูปแบบของการพิมพ์ ไม่ว่าจะเป็น ฟอนต์ สีสัน หรือขอบเขตของข้อมูลที่ต้องการ เป็นต้น สำหรับบทความนี้จะนำเสนอเฉพาะเอกสาร HTML เท่านั้น (ส่วน ASP.NET ก็จะคล้ายกันแต่มีรายละเอียดเพิ่มเติมอีกนิดหน่อ จะยังไม่ขอกล่าวในตอนนี้)

ตัวอย่าง คำสั่ง HTML 5























ตัวอย่าง คำสั่ง CSS

ไฟล์ชื่อ stylesheet.css จะแสดงรายการของ Header ออกมาที่หน้าจอ

header {
        color:blue;
        background-color:yellow;
       }

ไฟล์ชื่อ printstylesheet.css จะไม่แสดงรายการของ Header ออกมาเมื่อทำการพิมพ์

header {
        visibility:hidden; 
        width:0px;
        height:0px;
       }

จากนั้น เมื่อทำการพิมพ์ผลออกทางเครื่องพิมพ์ จะไม่ปรากฎในส่วนที่ถูกกำหนดให้ visibility:hidden

26 พฤษภาคม 2555

VB.NET แสดงสถานะปุ่มเปลี่ยนภาษา Grave Accent ( ~ )

การเขียนคำสั่งเพื่อแสดงสถานะของภาษาบนแป้นพิมพ์ (keyboard) ที่ใช้อยู่ สามารถทำได้โดยอาศัยการตรวจสอบการกดปุ่ม Grave Accent ( ~ ) จาก Procedure ของฟอร์ม ชื่อ InputLanguageChanged ตามตัวอย่างด้านล่าง (Source Code from : http://songkwae.com/foxboard/display_topic_threads.asp?ForumID=3&TopicID=3815&PagePosition=1) ดังนี้

วิธีที่ 1 ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged

    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
    Label1.Text = InputLanguage.CurrentInputLanguage.Culture.DisplayName.ToString
End Sub
วิธีที่ 2 อาศัยเรียกใช้จาก user32 ให้ทำการ Import คลาสเข้ามาใช้งาน
Imports System.Runtime.InteropServices
จากนั้นสร้าง Function ชื่อ GetKeyBoardLayoutName
   _
  Private Shared Function GetKeyboardLayoutName _
         (ByVal sb As System.Text.StringBuilder) As Integer
     'ไม่ต้องใส่อะไร
    End Function
ที่ Procedure : InputLanguageChange
Private Sub Form1_InputLanguageChanged _
           (ByVal sender As Object, ByVal e As _
            System.Windows.Forms.InputLanguageChangedEventArgs) _
            Handles Me.InputLanguageChanged
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString

End Sub
ที่ Procedure : Load
Private Sub Form1_Load _
            (ByVal sender As System.Object, ByVal e As System.EventArgs) _
             Handles MyBase.Load
        Dim sb As New System.Text.StringBuilder(" "c, 256)
        Dim len As Integer
        len = GetKeyboardLayoutName(sb)
        Label1.Text = sb.ToString
End Sub
สำหรับวิธีที่ 2 การแสดงผลจะเป็นรหัส เช่น ' ไทย -- 0000041E ' English -- 00000409 หวังว่าคงเป็นประโยชน์.... สวัสดี คนไทยไม่ทิ้งกัน

03 พฤษภาคม 2555

VB.Net ค้นหาข้อมูล

ทความนี้นำเสนอการสร้างฟอร์มค้นหาข้อมูล โดยทำการสร้างฟอร์มขึ้นมาแล้วค้นข้อมูลจากตารางในฐานข้อมูล SQL Server จากนั้นนำข้อมูลที่ค้นได้มาแสดงในกริด เมื่อผู้ใช้ DoubleClick เลือกที่แถว ให้ทำการส่งค่ารหัสในแถวที่เลือกกลับไปยังฟอร์มหลัก

เริ่มทำฟอร์มสอบถามข้อมูล
ให้สร้างฟอร์มที่ Visual Studio ขึ้นมาใหม่ แล้วตั้งชื่อฟอร์มว่า frmInquiry จากนั้นให้สร้างคอนโทรลต่างๆ ตามภาพแล้วกำหนด property ดังนี้



ป้อนคำสั่งที่ frmInquiry.vb ดังนี้
Imports System.Data
Imports System.Data.SqlClient

Public Class frmInquiry
    ' ตัวแปรที่ใช้ใน Property [AssCode]
    Dim rAssCode As String = " "

    Private Sub frmInquiry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        queryData()
        'สลับสีของแถว 
        DataGridView1.RowsDefaultCellStyle.BackColor = Color.White
        DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Azure

        With DataGridView1
            .DefaultCellStyle.NullValue = ""
            .Columns(0).HeaderText = "รหัสสินทรัพย์"
            .Columns(0).Width = 100
            .Columns(1).HeaderText = "รายการ"
            .Columns(1).Width = 200
            .Columns(2).HeaderText = "หน่วยนับ"
            .Columns(2).Width = 80
        End With
    End Sub
    Private Sub txtSearch_TextChanged(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) Handles txtSearch.TextChanged
        queryData()
    End Sub
    Private Sub DataGridView1_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentDoubleClick
        Dim row As Integer = DataGridView1.CurrentCellAddress.Y
        AssCode = DataGridView1.Rows(row).Cells(0).Value   'Cell(0) คือ คอลัมแรกของกริดนับจากซ้ายมือ
        Me.Close()
    End Sub
    Sub queryData()
        'ให้ทำการแก้ไข Connection String ตามที่เราใช้งานอยู่
        Dim connString As String = "Data Source=.;Initial Catalog=ชื่อฐานข้อมูล;Persist Security Info=True;User ID=sa;Password=รหัสผ่าน"

        Dim myConn As SqlConnection = New SqlConnection
        myConn.ConnectionString = connString

        'ให้แก้ไขคำสั่ง SQL ตามที่ต้องการ
        Dim da As SqlDataAdapter = New SqlDataAdapter _
                       ("SELECT TOP 50 ASSCODE, NAME, UMCODE  FROM ABASSET WHERE ASSCODE+NAME LIKE '%" & txtSearch.Text.Trim & "%'  ORDER BY ASSCODE", myConn)
        Dim ds As DataSet = New DataSet
        da.Fill(ds, "ABASSET")
        myConn.Close()

        DataGridView1.DataSource = ds.Tables(0)
    End Sub
    '' หากมีการส่งคืนหลายค่า ก็สร้าง Property เพิ่ม
    Public Property [AssCode]() As String
        Get
            Return Me.rAssCode
        End Get
        Set(ByVal value As String)
            Me.rAssCode = value
        End Set
    End Property
End Class
ต่อมาเราจะมาทำฟอร์มหลัก สำหรับเรียกฟอร์มค้นหา

เริ่มทำฟอร์มหลัก

ที่ฟอร์ม Form1 ให้สร้างคอนโทรลต่างๆ ดังภาพ

จากนั้นทำการป้อนคำสั่งที่ form1.vb ดังนี้

Public Class Form1
    Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
        Dim fm As New frmInquiry()
        fm.ShowDialog()
        If fm.AssCode.ToString <> "" Then
            txtAssCode.Text = fm.AssCode.ToString  'อ้างถึง property ชื่อ [AssCode] ของฟอร์ม frmInquiry
        End If
        fm.Dispose()
        txtAssCode.Focus()
End Sub
End Class
ทำการเรียกฟอร์มขึ้นมาทำงาน โดยกดปุ่ม F5 เพื่อรันโปรเจกต์
เมื่อปร่กฎหน้าจอ Form1 ให้คลิกปุ่ม ... ที่ฟอร์ม แล้วทดสอบดู ตามตัวอย่างดังภาพ


24 เมษายน 2555

VB.Net Google Maps ตอนหาค่า Latitude และ Longitude

หลังจากที่ได้ทำการเขียนเรื่อง Google Maps ในตอนแรกแล้ว มีผู้อ่านบางท่านสนใจที่จะหาตำแหน่ง Latitude และ Longitude จากที่อยู่ ว่าทำได้หรือไม่ เผอิญมีตัวอย่างที่เว็บต่างประเทศเขาทำไว้น่าสนใจ เลยนำมาทำเป็นในรูปแบบไทย ๆ ให้ผู้สนใจได้ทำการศึกษาและนำไปต่อยอดตามต้องการ
(Source : http://www.vbdotnetheaven.com/uploadfile/scottlysle/geocode-an-address-using-visual-basic-and-google-maps/ )

1. หลังจากที่เราสร้างโปรเจกต์เรียบร้อย ที่หน้าจอ Form1 ให้ทำการเพิ่มคอนโทรลเข้าไปดังภาพ






















2. ให้คลิกเมาส์ 2 ครั้ง (double Click) ที่ปุ่ม Get GeoCode (Button1) แล้วเปลี่ยนคำสั่งในฟอร์มทั้งหมดให้เป็น ดังนี้

Imports System.IO
Imports System.Net
Imports System.Web
Imports System.Collections.Generic
Imports System.ComponentModel

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim ll As New LatLon()
            ll = GetLatLon(txtAddress.Text)
            txtLatLon.Text = ll.Latitude.ToString() & ", " & ll.Longitude.ToString()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "An error has occurred")
        End Try
    End Sub
    Public Function GetLatLon(ByVal addr As String) As LatLon
        Dim url As String = "http://maps.google.com/maps/geo?output=csv&" & _ 
                            "key=[YOUR KEYGOES HERE]&q=" & addr
        Dim request As System.Net.WebRequest = WebRequest.Create(url)
        Dim response As HttpWebResponse = request.GetResponse()
        If response.StatusCode = HttpStatusCode.OK Then
            Dim ms As New System.IO.MemoryStream()
            Dim responseStream As System.IO.Stream = response.GetResponseStream()
            Dim buffer(2048) As Byte
            Dim count As Integer = responseStream.Read(buffer, 0, buffer.Length)
            While count > 0
                ms.Write(buffer, 0, count)
                count = responseStream.Read(buffer, 0, buffer.Length)
            End While
            responseStream.Close()
            ms.Close()
            Dim responseBytes() As Byte = ms.ToArray()
            Dim encoding As New System.Text.ASCIIEncoding()
            Dim coords As String = encoding.GetString(responseBytes)
            Dim parts() As String = coords.Split(",")
            Return New LatLon(Convert.ToDouble(parts(2)), Convert.ToDouble(parts(3)))
        End If
        Return Nothing
    End Function

End Class

3. ไปที่เมนู Project เลือกรายการ Add Class...
จากนั้น ป้อนชื่อคลาส ->  LatLon.vb  แล้วคลิก Add
จากนั้น พิมพ์คำสั่งภายใต้คลาด LatLon ดังนี้

Public Class LatLon
    Public Property Latitude As Double
    Public Property Longitude As Double
    Public Sub New()
    End Sub
    Public Sub New(ByVal lat As Double, ByVal lon As Double)
        Me.Latitude = lat
        Me.Longitude = lon
    End Sub
End Class


หลังจากนั้นให้กดปุ่ม F5 เพื่อทำการทดสอบโปรแกรม จะปรากฏหน้าต่างให้เราป้อนที่อยู่ที่ต้องการ ดังภาพ

เราก็สามารถนำค่าของ Latitude และ Longitude ไปใช้งานได้ตามต้องการ

อะไรเอ่ย หาไม่ยาก ตอบ หายี่ห้อโทรศัพท์
แต่หากจะหาคนส่งภาพในสภา นี่สิหายากที่สุด

11 เมษายน 2555

VB.Net การสร้างรายงานตอนที่ 2

     การสร้างรายงานในตอนที่ 2 นี้จะนำเสนอวิธีการกรองข้อมูลตามช่วงข้อมูลที่กำหนด แล้วนำมาออกรายงาน เราจะได้เรียนรู้วิธีการสร้าง Quey ภายใต้ DataSet และการเรียกใช้ ตลอดจนการอ้างถึงรายงานจากภายนอกด้วยการเขียนโปรแกรม เพื่อนำรายงานมาแสดงในคอนโทรล ReportViewer
     หากยังไม่เคยดูการสร้างรายงาน ตอนที่ 1 กรุณากลับไปศึกษาให้เข้าใจก่อนแล้วกลับมาดูวีดีโอนี้อีกครั้ง




โค้ดคำสั่ง VB.Net

Imports Microsoft.Reporting.WinForms

Public Class Form2
      Private adapter As dsABACUSTableAdapters.ABAssetTableAdapter = New   _
                              dsABACUSTableAdapters.ABAssetTableAdapter()
      Private table As New dsABACUS.ABAssetDataTable()
      Private MyNewDataSource As New ReportDataSource("DataSet1",  _
                                                                 DirectCast(table, DataTable))
      Private Sub btnRun_Click(ByVal sender As System.Object,  _
                                                 ByVal e As System.EventArgs) _
                                                 Handles btnRun.Click
           adapter.FillByType(table, txtFrom.Text.ToString.Trim, txtTo.Text.ToString.Trim)
           Me.ReportViewer1.LocalReport.ReportPath = ".\Reports\rptABAsset.rdlc"
           Me.ReportViewer1.LocalReport.DataSources.Clear()
           Me.ReportViewer1.LocalReport.DataSources.Add(MyNewDataSource)
           Me.ReportViewer1.LocalReport.Refresh()
           Me.ReportViewer1.RefreshReport()
     End Sub
End Class

สวัสดี สงกรานต์ปีนี้ ไม่ต้องไปฟ้องครู "อังคณา" .... น่ะ

22 มีนาคม 2555

VB.Net การสร้างรายงาน ตอนที่ 1

บทความนี้ทำเป็นวีดีโอ นำเสนอวิธีการสร้างรายงาน โดยใช้ Visual Studio 2010 ไม่เจาะจงภาษาใดๆ เลย เพราะตัวรายงานที่สร้างยังไม่มีการเขียนโค้ดคำสั่ง ดังนั้นทุกท่านสามารถทำตามได้ทันที



สำหรับตอนต่อไป จะเรียนรู้วิธีการส่งค่าพารามิเตอร์ เพื่อกรองข้อมูลที่ต้องการ

สวัสดีประเทศไทย ช่วงนี้ร้อนจริงๆ

16 มีนาคม 2555

VB.Net Pass Value Between From ส่งค่าผ่านระหว่างฟอร์ม

เมื่อเราเขียนโปรแกรม แล้วมีฟอร์มหลายๆ ฟอร์ม หากต้องการส่งผ่านค่า จากฟอร์มหนึ่งไปยังอีกฟอร์มหนึ่ง สามารถทำได้ดังนี้

1. ให้สร้างฟอร์มขึ้นมาเป็นฟอร์มหลัก เช่น ต้องการส่งค่า TextBox จากฟอร์มที่สร้างขึ้นนี้ไปให้อีกฟอร์มหนึ่ง ให้กำหนดคอนโทรลดังภาพ
















2. ดับเบิ้ลคลิกที่ ปุ่ม Button1 (Send)  เพื่อเข้าไปป้อนคำสั่ง ให้ป้อนดังนี้

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _ 
                ByVal e As System.EventArgs) Handles Button1.Click
        Dim fm2 As Form2 = New Form2
        fm2.ValueToPassBetweenForms1 = Me.TextBox1.Text
        fm2.ShowDialog()
    End Sub
End Class

3. ให้สร้างฟอร์มขึ้นมาอีกหนึ่งฟอร์มเป็นฟอร์มสำหรับรับค่า แล้วกำหนด คอนโทรลดังภาพ

















4. ดับเบิ้ลคลิกที่ฟอร์มเพื่อเข้าไปป้อนคำสั่ง ให้ป้อนดังนี้

Public Class Form2
    Inherits Form

    Public Sub New()
        MyBase.New()
        InitializeComponent()

        AddHandler Load, AddressOf Me.Form2PassValue_Load

    End Sub

    Private Sub Form2PassValue_Load(ByVal sender As Object, _
                ByVal e As EventArgs)
        Me.Label1.Text = Me._valueToPassBetweenForms1
    End Sub

    Private _valueToPassBetweenForms1 As String

    Public Property ValueToPassBetweenForms1() As String
        Get
            Return Me._valueToPassBetweenForms1
        End Get
        Set(ByVal value As String)
            Me._valueToPassBetweenForms1 = value
        End Set
    End Property

    Private Sub Button1_Click(ByVal sender As System.Object, _ 
                ByVal e As System.EventArgs) Handles Button1.Click

        Me.Dispose()
    End Sub
End Class

จากนั้นทำการ กดปุ่ม F5 เพื่อสั่งรันฟอร์ม ทดสอบสิ่งที่ทำไว้

ผลัดกันส่งไปส่งมา พาชาติเจริญ

03 กุมภาพันธ์ 2555

VB.Net Google Maps

การทำแผนที่หาตำแหน่งตามต้องการด้วย VB.Net ก่อนอื่นเราต้องหาตำแหน่งให้ได้ก่อน
วิธีหนึ่งที่เราจะหาพิกัดในแผนที่ สามารถทำได้โดยเปิด Browser แล้วเข้าไปที่เว็บไซต์
http://maps.google.co.th/
จากนั้นทำการซูมแผนที่จนได้ตำแหน่งที่ต้องการ แล้วทำดังนี้
1. คลิกเมาส์ปุ่มขวา ณ. ตำแหน่งที่ต้องการทราบพิกัด แล้ว เลือกรายการนี่คืออะไร
2. จะปรากฏเลขพิกัด ลองติจูด, ละติจูด ปรากฏขึ้นตามภาพด้านล่าง






























สร้างฟอร์มแสดงแผนที่ ด้วย VB.Net
1. เปิดโปรแกรม Visual Studio 2010 แล้วสร้างโปรเจกต์ใหม่ โดย
    - คลิกเลือกเมนู File เลือกรายการ New Project...
    - ที่หน้าต่าง New Project เลือก Windows Form Application จาก Visual Basic -> Windows
    - ที่ช่อง New ในหน้าต่าง New Project ให้ตั้งชื่อตามต้องการ

2. ให้สร้างฟอร์มดังภาพ

























กำหนด Property ของคอนโทรลต่างๆ ดังนี้
Label1 : Text = Latitude
Label2 : Text = Longitude
Textbox1 : (Name) = txtLatidude
Textbox2 : (Name) = txtLongitude
Button1(Name) = btnSearch
                  Text = Search
WebBrowser1 : (Name) = WebBrowser1

ดับเบิ้ลคลิกที่ปุ่ม btnSearch แล้วเข้าไปเขียนโค้ดคำสั่ง ดังนี้

Imports System.Text

Public Class Form1
 Private Sub btnSearch_Click(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) _
          Handles btnSearch.Click
  Try
    Dim latitude As String = ""
    Dim longitude As String = ""
    Dim AddrToSearch As New StringBuilder()
    AddrToSearch.Append("http://maps.google.com/maps?output=embed&hl=th&q=")
    ' if there is latitude
    If txtLatitude.Text <> "" Then
       latitude = txtLatitude.Text
       AddrToSearch.Append(latitude & "%2C")
    End If
    ' if there is longitude
    If txtLongitude.Text <> "" Then
       longitude = txtLongitude.Text
       AddrToSearch.Append(longitude)
    End If
    ' pass the AddrToSearch value to web browser control
    WebBrowser1.Navigate(AddrToSearch.ToString())
  Catch ex As Exception
    MessageBox.Show(ex.Message.ToString(), _
                    "Problem encountered while retrieving google map")
  End Try
 End Sub
End Class

ทำการเรียกฟอร์มที่เขียนไว้ให้ทำงาน โดยกดปุ่ม F5 จะปรากฎหน้าต่างของโปรแกรมให้ทำการป้อนค่าของพิกัด โดยใส่ ลองติจูดและ ละติจูด ที่ได้จากการหาตำแหน่งในตอนแรก แล้วคลิกปุ่ม Search จะปรากฏแผนที่แสดงตำแหน่งดังภาพ



























เราสามารถนำไปประยุกต์ใช้งานได้หลากหลาย สามารถนำไปใช้กับเว็บ นำไปใช้กับอุปกรณ์ GPS และอื่นๆ อีกมากมาย

หากต้องการ หาตำแหน่ง พิกัด ลองติจูด, ละติจูด จาก ที่อยู่ สามารถดูได้จาก บทความตามลิงค์ด้านล่างนี้
http://kasem-mesak.blogspot.com/2012/04/vbnet-google-maps-latitude-longitude.html

3 กุมภาพันธ์ วันทหารผ่านศึก

27 มกราคม 2555

FLASH GAME การสร้างเกมภาพระบายสี Color Book

เนื้อหาในส่วนนี้จะเป็นวีดีโอสอนการเขียนเกมภาพระบายสีโดยใช้โปรแกรม Adobe Flash และ Action Script 3 จัดทำในลักษณะของวีดีโอ จะได้เรียนรู้วีธีการสร้างและวิธีการเขียน ไม่เก่งการเขียนโปรแกรมก็เรียนรู้ได้ ไม่เคยเขียน Action Script ก็ทำตามได้ สรุป ใครๆ ก็สามารถทำได้ถ้าได้ดูและทำตาม

วีดีโอสอนการเขียนเกมภาพวาดระบายสี


** ในวีดีโอ มีส่วนที่ต้องเพิ่มเติมแก้ไข เนื่องจากไม่ได้บอกไว้ ตรงเส้นกรอบ-การตั้งชื่อ ให้กำหนดตามภาพ


ด้านล่างนี้คือโค้ดคำสั่ง Action Script 3.0 ที่ใช้ในโปรแกรมที่นำเสนอข้างต้น
โดยการเขียนไว้ภายใต้เลเยอร์ action

var np:Number = 17;
var nc:Number = 10;
var color:Number = 0xffffff;
var cArray:Array = new Array(0xff0000,0x00ff00,0x0000ff,0xffff00,0x00ffff,
        0xff00ff,0x66ff66,0x666666,0x000000,0xffffff);
var colorchange:ColorTransform = new ColorTransform();
GameStart();
function GameStart() {
    btnNew.addEventListener(MouseEvent.CLICK, mcNew); 
    for (var ip:uint = 1; ip <= np; ip++) {
        colorchange.color = 0xffffff;
  //trace(this["p"+ip].name);
  this["p"+ip].transform.colorTransform = colorchange;
        this["p"+ip].addEventListener(MouseEvent.CLICK, mcPaint);
    }
    for (var ic:uint = 1; ic <= nc; ic++) {
        this["c"+ic].addEventListener(MouseEvent.CLICK,mcColor);
        colorchange.color = cArray[ic - 1];
        this["c"+ic].transform.colorTransform = colorchange;
    }
    colorchange.color = color;
    sc.transform.colorTransform = colorchange;
}
function mcNew(e:MouseEvent): void {
    for (var ip:uint = 1; ip <= np; ip++) {
        colorchange.color = 0xffffff;
  this["p"+ip].transform.colorTransform = colorchange;
   }
}
function mcColor(e:MouseEvent): void {
    var objName:String = e.target.name;
    color = cArray[uint(objName.substr(1,(objName.length)-1))-1];
    colorchange.color = color;
    sc.transform.colorTransform = colorchange;
}
function mcPaint(e:MouseEvent):void {
    colorchange.color = color;
    this[e.target.name].transform.colorTransform = colorchange;
}
เขียนเกมไม่ยากใช่ไหม

20 มกราคม 2555

VPN - การใช้งาน HAMACHI ติดตั้ง VPN

VPN (Virtual Private Network)  คือเทคโนโลยีการเชื่อมต่อเครือข่ายในลักษณะเป็นระบบเครือข่ายภายในองค์กร โดยเชื่อมเครือข่ายในแต่ละสาขาเข้าด้วยกัน โดยอาศัย Internet เป็นตัวกลาง ทำให้เราสามารถใช้แฟ้มข้อมูล ฐานข้อมูลร่วมกันได้ เป็นต้น

(Last Modify 5 Nov 2019)

การสร้างเครือข่าย VPN ก็ทำได้ไม่ยากสำหรับองค์กรที่มีเบี้ยน้อยหอยน้อย สามารถทำได้ง่ายๆ โดยใช้ซอฟต์แวร์ ชื่อ Hamachi ซึ่งเป็นผู้ผลิตเดียวกับตัว Logmein ที่เป็นซอฟต์แวร์รีโมท

สำหรับตัว Hamachi หากการเชื่อมต่อไม่เกิน 5 เครื่อง (4 Client + 1 Server) เราก็สามารถใช้งานได้ฟรี

เรามาเริ่มกันเลยดีกว่า
ก่อนอื่นต้องดาวน์โหลซอฟต์แวร์ ให้เปิดเว็บไซต์  https://www.vpn.net/

แล้วทำการดาวน์โหลดมาเก็บไว้ที่เครื่องเรา จะได้ไฟล์ชื่อ hamachi.msi
จากนั้นทำการติดตั้ง

การติดตั้ง Hamachi

การติดตั้ง Hamachi เราจะต้องทำการติดตั้งไว้ที่ฝั่งที่เป็น Server ก่อน และฝั่ง Client โดยใช้ไฟล์ติดตั้งตัวเดียวกัน


การติดตั้งของ Hamachi จะปรากฎหน้าจอดังภาพด้านล่าง


ทำการเลือกภาษาที่ต้องการ จากนั้นคลิกปุ่ม Next

ให้คลิกเครื่องหมายถูกหน้าข้อความ I have read and agree to the terms of the License Agreement
 
คลิกปุ่ม Next


คลิกปุ่ม Next ไปเรื่อย ๆ จนกระทั่งติดตั้งเสร็จ


แล้วคลิกปุ่ม Finish

การกำหนดเครื่องคอมพิวเตอร์หลัก (ฝั่ง Server)

หลังจากที่ได้ทำการติดตั้งโปรแกรม Hamachi แล้ว เครื่องที่เราต้องการให้เป็นเครื่องคอมพิวเตอร์หลัก (ที่เราจะทำให้เป็นเซิร์ฟเวอร์) ให้ทำการกำหนดค่าต่างๆ ดังนี้ (ทำแค่ครั้งแรกครั้งเดียว)
1. เปิดโปรแกรม Hamachi จะปรากฎหน้าต่างดังภาพ

 
2. ให้คลิกปุ่ม เปิด ตามลูกศรชี้ (ปุ่มที่อยู่ติดกับตัวเลข 0.0.0.0)
รอสักครู่จะปรากฎหน้าต่าง Register this client ดังภาพ

 
ที่ช่อง Client name ให้กำหนดชื่อ ตามที่ต้องการ ลงไป จากตัวอย่าง กำหนดเป็น SUPERMAN-PC
จากนั้นคลิกปุ่ม Create
รอสักครู่จะปรากฏหน้าต่างแสดงหมายเลขไอพี และชื่อเครื่องที่เรากำหนดไว้ ดังภาพ
(หากไม่ขึ้นให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต)


3. ทำการสร้างกลุ่มของ Network โดยคลิกที่ปุ่ม Create a new network ตามลูกศรในภาพ
จะปรากฏหน้าต่างให้กำหนด Network ID และ Password ดังนี้


4. ให้กำหนดชื่อ Network ID และกำหนดรหัสผ่าน สำหรับให้เครื่องลูกข่ายเข้ามาติดต่อ
จากนั้นคลิกปุ่ม Create เราก็จะได้ กลุ่ม Network แสดงดังภาพ


การกำหนดให้เครื่องเราทำตัวเป็นเครื่องคอมพิวเตอร์หลัก (Server) เป็นอันเสร็จสิ้น

การกำหนดคอมพิวเตอร์ลูกข่าย (ฝั่ง Client)

ให้ทำการติดตั้งโปรแกรม Hamachi ที่ฝั่งของคอมพิวเตอร์ลูกข่ายโดยใช้ไฟล์ติดตั้งเดียวกันกับฝั่ง Server

เมื่อเราติดตั้งเครื่องคอมพิวเตอร์หลักเรียบร้อย ที่เครื่องลูกข่ายทำการกำหนดค่าเหมือนกับการติดตั้งคอมพิวเตอร์หลัก แต่ทำเฉพาะ ข้อ 1 และ ข้อ 2

เมื่อทำเสร็จ จะปรากฏหน้าจอดังภาพ


ให้คลิกที่ปุ่ม Join an existing network จะปรากฏหน้าจอดังภาพ


ที่หน้าต่าง Join Network ให้กำหนดชื่อ Network ID (ชื่อนี้กำหนดไว้ตอนที่เราทำคอมพิวเตอร์หลัก)
และที่ช่อง Password ให้ใส่รหัสผ่านที่กำหนดไว้ตอนที่เราทำคอมพิวเตอร์หลักอีกเช่นกัน

เมื่อกำหนดเสร็จคลิกที่ปุ่ม Join จะปรากฏหน้าต่างดังภาพ (หากไม่ขึ้น ตรวจสอบ การเชื่อมต่อ internet หรือชื่อ Network ID หรือรหัสผ่านว่าถูกต้องหรือไม่)


หากปรากฏชื่อของเครื่องคอมพิวเตอร์หลัก แสดงว่าติดต่อสำเร็จ
เราสามารถใช้งาน VPN ได้แล้ว

การใช้งาน แชท ระหว่างเครื่อง เมื่อเราได้ทำการติดตั้งและติดต่อระหว่างเครื่องคอมพิวเตอร์หลัก กับเครื่องคอมพิวเตอร์ลูกข่ายเรียบร้อยแล้ว สิ่งที่เราสามารถทำได้อย่างหนึ่งคือการ แชท (chat) หรือการพูดคุยกันระหว่างเครื่อง ซึ่งสามารถทำได้ไม่ยาก โดยการคลิกเมาส์ปุ่มขวาที่เครื่องที่เราต้องการติดต่อ แล้วเลือกรายการ Chat ดังภาพ


การใช้งานฐานข้อมูลจากเครื่องคอมพิวเตอร์หลัก
สำหรับผู้เขียนได้ติดตั้งระบบฐานข้อมูล SQL Server ไว้ที่คอมพิเตอร์หลัก และได้ทำการเข้าถึงจากเครื่องคอมพิวเตอร์ลูกข่าย
การทำงานนั้นเราต้องทราบหมายเลข ไอพี (ที่ได้จาก hamachi) ของเครื่องคอมพิวเตอร์หลักที่ติดตั้ง SQL Server


จากภาพเป็นหมายเลขไอพีของเครื่องคอมพิวเตอร์หลัก ที่ได้ติดตั้ง SQL Server ไว้
ซึ่งเราจะนำหมายเลขนี้มาใช้ในการติดต่อกับฐานข้อมูลผ่านทางโปรแกรม
Microsoft SQL Server Management Studio ดังภาพ


หลังจากเราติดต่อเข้าใช้งาน SQL Server ได้แล้วก็ทำงานได้ทุกอย่าง เหมือนเราใช้งานภายใต้เน็ตเวิร์คเดียวกัน ดังภาพ


การใช้งานโปรแกรมที่ใช้ฐานข้อมูลในลักษณะ Client Server
ในกรณีที่เรามีสำนักงานสาขาอยู่ต่างที่กัน เราสามารถทำการเชื่อมต่อด้วย Hamachi แล้วทำงานเสมือนหนึ่งเราอยู่ ณ. เครือข่ายเดียวกัน

สำหรับตัวอย่างที่นำเสนอเป็นการเรียกโปรแกรมจากเครื่องลูกข่าย เพื่อติดต่อไปยังฐานข้อมูลของสำนักงานใหญ่ ผ่านทาง Hamachi

- เครื่องลูกข่ายได้ติดตั้งโปรแกรม hamachi, ติดตั้งซอฟต์แวร์ปฏิบัติงาน , ติดตั้งไดร์เวอร์สำหรับติดต่อ กับ SQL Server

เมื่อทำการเรียกโปรแกรม ก็จะเข้าไปดึงข้อมูลจากสำนักงานใหญ่ผ่านทาง Hamachi มาแสดง


จากภาพด้านบนเป็นการกำหนด Data Source ให้ไปเรียกข้อมูลที่เครื่องคอมพิวเตอร์หลัก



จากภาพด้านบน เป็นตัวอย่างการค้นหาเอกสารจากฐานข้อมูลได้ผลลัพธ์ออกมาจำนวน 5070 รายการ แล้วนำมาแสดงในโปรแกรม ใช้เวลาไม่ถึง 1 วินาทีในการเรียกข้อมูล (ความเร็วขึ้นอยู่กับความเร็วของ internet ที่ใช้งาน)

หวังว่า Hamachi คงช่วยตอบโจทย์ให้กับเหล่านักพัฒนาระบบทั้งหลายได้เป็นอย่างดี

17 มกราคม 2555

VB.Net Printing

ารพิมพ์รายงานต่างๆ ผ่านทาง VB.Net สามารถทำได้หลายวิธี เช่น ผ่านทาง Crystal Report หรือ เขียนโปรแกรมสั่งพิมพ์โดยใช้ VB.Net สำหรับบทความนี้จะแนะนำวิธีการเขียนคำสั่ง ซึ่งจะเป็นพื้นฐานในการควบคมการทำงานทางด้านการพิมพ์ในรูปแบบต่างๆ ตามใจปรารถนา ถึงแม้จะเข้าใจยากแต่เมื่อเรียนรู้จนเข้าใจก็จะคุ้มค่าแก่การศึกษา
สำหรับ .Net ได้จัดเตรียม ออปเจกต์จัดการเกี่ยวกับการพิมพ์ไว้พร้อมแล้ว คือ PrintDocument ซึ่งเก็บไว้ภายใต้ คลาส System.Drawing.Printing
เพื่อไม่ให้เป็นการเสียเวลา จะขอยกตัวอย่างการพิมพ์รายงาน โดยทำการคิวรีข้อมูลจากตารางภายใต้ฐานข้อมูล SQL Server แล้วพิมพ์ออกมาในรายงานตามต้องการ

ตัวอย่างการเขียนคำสั่งพิมพ์เอกสารด้วย VB.Net
1. เปิด โปรแกรม Visual Studio .Net

07 มกราคม 2555

SQL Server - Import Text File into SQL Server

นำเข้าข้อมูลเท็กซ์ไฟล์จากภายนอก ใส่ไว้ในตาราง SQL Server

หลายครั้งเรามีความจำเป็นที่จะต้องนำข้อมูลจากภายนอกมาเพิ่มใส่ในตารางบนฐานข้อมูลของ SQL Server สามารถทำได้ไม่ยาก ด้วยคำสั่ง BULK INSERT

เช่น เรามีข้อมูลเท็กซ์ไฟล์ชื่อ CUSTOMER.TXT ที่มีข้อมูลบรรจุอยู่ภายในดังนี้

10001,บริษัท นายก,254/1 ถนนใหญ่ ซอยเล็ก เขตประเทศไทย จังหวัดกรุงเทพฯ
10002,บริษัท ABC,55 ถนนเล็ก ซอยใหญ่ เขตบางคอแหลม จังหวัดกรุงเทพฯ
10003,บริษัท Zaดี,2555 ถนนปูน ซอยเล็ก เขตบางโคล่ จังหวัดกรุงเทพฯ

1.ให้สร้างตารางใน SQL Server ตามรูปแบบของข้อมูลข้างต้น ซึ่งประกอบด้วย รหัส,ชื่อบริษัท,ที่อยู่ ดังนี้

CREATE TABLE [dbo].[CUSTOMER](
[CUSTOMER_NO] [char] (5) NOT NULL ,
[COMPANY_NAME] [varchar](100) NOT NULL,
[ADDRESS] [varchar](100) NOT NULL )

2.ทำการเพิ่มข้อมูลเท็กซ์ไฟล์เข้าสู่ตาราง โดยทำผ่านทาง Microsoft Management Studio ผ่านทางหน้าต่าง New Query ดังนี้

BULK
INSERT [dbo].[CUSTOMER]
FROM 'C:\CUSTOMER.TXT'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

สำหรับคำสั่งทั้งหมด ดูตามตัวอย่างดังภาพ


เทศกาลตรุษจีน ขอให้เฮงๆ รวยๆ

06 มกราคม 2555

การสร้างภาพพาโนรามา

สอนเขียนโปรแกรมมาหลายตอน ช่วงนี้เลยย้อนมาสอนวิธีการทำภาพพาโนรามาจากภาพถ่ายธรรมดา พร้อมทั้งการทำแอนิเมต ด้วย Adobe Flash คลิกเข้าไปดูแล้วทำตามได้เลย แต่ต้องมี Adobe Photoshop กับ Adobe Flash ด้วยล่ะ

25 ธันวาคม 2554

VB.NET Save Image into SQL Server

บทความนี้ เป็นการนำเสนอวิธีการ การเก็บบันทึกรูปภาพเก็บไว้ในฐานข้อมูล SQL Server ด้วยภาษา Visual Basic.NET

สร้างฐานข้อมูลและตารางสำหรับเก็บข้อมูลรูปภาพ ดังนี้
(Create Database and Table)

- ให้ทำการสร้างฐานข้อมูล และตารางใน SQL Server ดังนี้

CREATE DATABASE myData
GO
CREATE TABLE [dbo].[tblImage](
[RowOrder] [int] IDENTITY(1,1) NOT NULL,
[ImageName] [varchar](100) NULL,
[Image] [image] NULL,
CONSTRAINT [PK_tblImage] PRIMARY KEY CLUSTERED
(
[RowOrder] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

สร้างฟอร์มบันทึกรูปภาพ
(Create WindowsForm)
1. เปิดโปรแกรม Visual Studio 2010 แล้วทำการสร้าง Project ขึ้นมา จากนั้นทำการสร้างฟอร์ม โดยมี Control ต่าง ๆ ดังภาพ

1.Label
(name) = Label1
Text =
2.PictureBox
(name) = PictureBox1
SizeMode = PictureBoxSizeMode.StretchImage
3.Load Picture
(name) = btnLoad
Text = Load Picture
4.Save
(name) = btnSave
Text = Save
5.OpenFileDialog
(name) = OpenFileDialog1
FileName =





2. ให้ทำการ Imports Class เข้ามาใช้งานดังนี้

Imports System.Data
Imports System.Data.SqlClient
Imports System.IO

3. ประกาศตัวแปรเพื่อใช้ในฟอร์มดังนี้ โดยประกาศไว้ต่อจากบรรทัด Public Class ชื่อฟอร์ม

Public Class Form1
    Dim bm As Bitmap
    Dim fs As FileStream
    Dim fsImage As Byte()
...

4. ให้ทำการเข้าไปเขียนคำสั่งภายใน subroutine ขื่อ btnLoad_Click ของปุ่ม btnLoad ดังนี้
(คำสั่งในปุ่มนี้ จะเป็นการเปิดไฟล์รูปภาพจากในฮาร์ดดิสก์โดยใช้ OpenFileDialog
แล้วนำมาแสดงในคอนโทรล PictureBox1 รวมถึงอ่านไฟล์รูปภาพมาเก็บไว้ใน fsImage เพื่อนำไปใช้ในตอนบันทึกที่ปุ่ม Save)

With OpenFileDialog1
   .CheckFileExists = True
   .ShowReadOnly = False
   .Filter = "All Files|*.*|Picture Files|*.bmp;*.gif;*.jpg;*.png"
   .FilterIndex = 2
   If .ShowDialog = DialogResult.OK Then
      fs = New FileStream(.FileName.ToString(), FileMode.Open)
      fsImage = New Byte(fs.Length) {}
      fs.Read(fsImage, 0, fs.Length)
      fs.Close()
      bm = Image.FromFile(.FileName.ToString())
      PictureBox1.Image = bm
      Label1.Text = System.IO.Path.GetFileName(.FileName)
  End If
End With

5. ที่ปุ่ม Save ให้ทำการเข้าไปเขียนคำสั่งภายใต้ Subroutine ชื่อ btnSave_Click ดังนี้

If System.IO.File.Exists(Me.OpenFileDialog1.FileName) = False Then
   MessageBox.Show("File Not Found", "Error")
   Exit Sub
Else
   Dim strConn As String = "Data Source=.;Initial Catalog=myData;" & _ 
                           "Integrated Security=SSPI;"
   'strConn ให้เปลี่ยนค่าตามเครื่อง Server ของ SQL Server ที่ติดต่อ
       Dim Conn As New SqlConnection(strConn)
   Dim SqlString As String
   SqlString = "INSERT INTO tblImage(ImageName,Image) " & _
               " VALUES(@ImgName, @Img)"
   Dim cmd As SqlCommand = New SqlCommand(SqlString, Conn)
   Dim ImgName As SqlParameter = New SqlParameter("@ImgName", _
                                 System.Data.SqlDbType.VarChar, 100)
   ImgName.Value = Label1.Text.ToString()
   cmd.Parameters.Add(ImgName)

   Dim Img As SqlParameter = New SqlParameter("@Img", _
                             System.Data.SqlDbType.Image)
   Img.Value = fsImage
   cmd.Parameters.Add(Img)
   Try
      Conn.Open()
      cmd.ExecuteNonQuery()
      Conn.Close()
      MessageBox.Show("Save Image Complete", "Success")
   Catch ex As Exception
      MessageBox.Show(ex.Message.ToString(), "Error")
      Exit Sub
   End Try
End If

จากนั้นทำการรันฟอร์มที่เราสร้างแล้วทดสอบเปิดไฟล์รูปภาพแล้วทำการบันทึก

สร้างฟอร์มแสดงรูปภาพ
1. ให้ทำการสร้างฟอร์มเพิ่มขึ้นอีกหนึ่งฟอร์ม โดยคลิกที่เมนู Project เลือก Add Windows Form...
จะขึ้นหน้าต่าง Add New Item.. ให้เลือก Windows Form แล้วกำหนดชื่อฟอร์มตามต้องการ (Form2.vb)

2. ที่ฟอร์มให้ทำการลากคอนโทรล DataGridView และ คอนโทรล PictureBox มาวางไว้ดังภาพ

PictureBox   
(name) = PictureBox1
SizeMode = PictureBoxSizeMode.StretchImage







จากนั้นเข้าไปเขียนคำสั่ง ดังนี้ (copy เอาไปแทนได้เลย)

Imports System.Data
Imports System.Data.SqlClient
Imports System.IO

Public Class Form2
    'strConn ให้เปลี่ยนค่าตามเครื่อง Server ของ SQL Server ที่ติดต่อ
    Private strConn As String = "Data Source=.;Initial Catalog=myData;" & _
                                       "Integrated Security=SSPI;"
    Private SqlString As String
    Private Conn As SqlConnection
    Private cmd As SqlCommand
    Private da As SqlDataAdapter
    Private ds As DataSet


    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            SqlString = "SELECT roworder,imagename FROM tblImage"
            Conn = New SqlConnection(strConn)
            Conn.Open()
            cmd = New SqlCommand(SqlString, Conn)
            da = New SqlDataAdapter(cmd)
            ds = New DataSet()
            da.Fill(ds, "tblImage")

            DataGridView1.DataSource = ds
            DataGridView1.DataMember = "tblImage"
            DataGridView1.ReadOnly = True

            DataGridView1.Columns(0).HeaderText = "Run No."
            DataGridView1.Columns(1).HeaderText = "Picture Name"

            'format GridView
            DataGridView1.GridColor = Color.Red
            DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None
            DataGridView1.BackgroundColor = Color.LightGray

            DataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red
            DataGridView1.DefaultCellStyle.SelectionForeColor = Color.Yellow

            DataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.[True]

            DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
            DataGridView1.AllowUserToResizeColumns = False

            DataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque
            DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
            '
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString(), "Error")
        Finally
            If Conn.State = ConnectionState.Open Then
                Conn.Close()
            End If
        End Try
    End Sub

    Private Sub DataGridView1_SelectionChanged(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) _
            Handles DataGridView1.SelectionChanged

        Try
            SqlString = "select image from tblImage where roworder = @roworder"
            Conn = New SqlConnection(strConn)
            cmd = New SqlCommand(SqlString, Conn)

            Dim rdr As SqlDataReader = Nothing
            Dim imgData As Byte() = Nothing
            Dim row As Integer = DataGridView1.CurrentCellAddress.Y
            Dim roworder As String = DataGridView1.Rows(row).Cells(0).Value

            cmd.Parameters.AddWithValue("@roworder", roworder)
            Conn.Open()

            rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)

            If rdr.Read() Then
                imgData = New Byte(rdr.GetBytes(0, 0, Nothing, 0, Integer.MaxValue) - 1) {}
                rdr.GetBytes(0, 0, imgData, 0, imgData.Length)
                Dim ms As New MemoryStream(imgData)
                PictureBox1.Image = Image.FromStream(ms)
            Else
                MessageBox.Show("No records found in the database.", "Warning")
            End If
        Catch ex As Exception
            PictureBox1.Image = Nothing
        Finally
            If Conn.State = ConnectionState.Open Then
                Conn.Close()
            End If
        End Try
    End Sub
End Class

เมื่อเราเรียกฟอร์มขึ้นมาทดสอบ จะปรากฎหน้าจอ คล้ายๆ ภาพตัวอย่างด้านล่าง











จากนี้ไปก็เป็นหน้าที่ของท่านผู้อ่านจะต้องนำไปไปประยุกต์ใช้งาน คงไม่ยากเกินความสามารถ

10 พฤศจิกายน 2554

Someone Like You (Piano Cover)

ฟังเพลง Someone Like You เล่นตอนน้ำท่วมจะเป็นอย่างไร ลองคลิกดู

เมื่อ Adobe ยุติการพัฒนา Flash บนอุปกรณ์ Mobile

วันที่ 9 พ.ย. 54 เป็นวันหนึ่งที่ Adobe Flash ได้ประกาศหยุดการพัฒนา Flash ที่ใช้กับ Mobile Web Browser ซึ่งอนาคตก็แน่นอนแล้วว่า มือถือทั้งหลาย หรือ อุปกรณ์ที่ใช้ OS Android (iPad, iPhone เปิดไม่ได้ตั้งแต่แรก) เมื่อเปิด Web Browser ก็คงไม่มี Flash สวย ๆ มาให้เราเห็นอีกต่อไป ซึ่งก็คงต้องปล่อยให้เป็นหน้าที่ของ HTML5 เป็นตัวชูโรงสำหรับอนาคตข้างหน้า
เหตุที่เป็นเช่นนี้ ก็เนื่องมาจากเอกสาร Flash กินทรัพยากรของเครื่องมากไป แล้ว Flash จะทำอย่างไรดี การพัฒนาที่ทาง Adobe บอกไว้ว่า Flash จะพัฒนาให้ใช้ได้บน Mobile ที่เป็น Mobile Application เท่านั้น เพราะถ้าทำ ให้ใช้ได้กับ Web ด้วยก็คงต้องทุ่มสรรพกำลังจนเกินเหตุ ได้ไม่คุ้มเสีย เลิกดีกว่า
สาวก Flash ที่พัฒนาบน Web ต่อไปก็คงต้องปรับตัว ในอนาคตเมื่อ Mobile Web Browser ไม่ support แล้วคนที่จ้างทำ Flash ลงหน้าเว็บ ฤาจะให้ใช้ Flash ทำเฉพาะ Web browser บน Desktop ก็กระไรอยู่ คงไม่มีใครมาจาก 2 ต่อ ทั้งบน web browser บน Windows และ Mobile ซึ่งใช้เครื่องมือคนละตัว ใครที่เขียน Web ด้วย Flash ก็คงต้องปรับไปใช้ HTML5 ในไม่ช้า แต่ทาง Adobe ก็ไม่ได้ทิ้ง Flash หันไปทางด้าน Mobile Application แทน โดยผ่านทาง Adobe Air ดังนั้น ใครใช้ Flash ใช้ Action Script ก็คงยังไม่หมดหนทางเสียทีเดียว ก็พัฒนาเป็น Mobile Application ถ้าท่านใดมี Adobe Flash 5 หรือ 5.5 ขึ้นไปก็สามารถเขียน Mobile Application ได้เลยไว้ว่าง ๆ เรามาเขียนกัน

โลกยังดำเนินต่อไป มีเกิดมีดับ มีรุ่งมีร่วง ช่วงนี้น้ำท่วม มีท่วมก็มีลด
ถึงแม้ว่า Flash จะไม่สามารถใช้กับ Mobile Web Browser แต่เราใช้กับงานอื่นได้อีกเยอะ
ช่วงหลัง ผู้เขียนมุ่งไปทาง ตาดูหูฟัง นั่งทำตาม เลยจัดทำเป็นวีดีโอช่วยเรียนรู้ ว่าง ๆ ก็เปิดดูได้ มี 2 เรื่อง
(จริง ๆ มีทำไว้มากกว่านี้ลองหาดู)
วีดีโอ แรก มาเขียนเกมเล่น ด้วย Flash กันดีกว่า


วีดีโอ ที่สอง มาทำโปรแกรมเปิดไฟล์วีดีโอ ไว้เผื่อทำวีดีโอช่วยสอนใส่แผ่นซีดี แจกจ่ายได้



บ้านใครน้ำท่วมก็ขอให้น้ำลดไว ๆ

24 สิงหาคม 2554

เรียนภาษาอังกฤษ

เว็บไซต์เรียนภาษาอังกฤษ
มีให้เราเรียนเยอะแยะมากมาย เรียนวันละนิด รับรองเก่งแน่ ๆ

http://www.lextutor.ca/

ด้านล้างก็เป็นแบบทดสอบ ดูซิว่าเราเก่งขนาดไหนแล้ว
http://www.er.uqam.ca/nobel/r21270/levels/

15 มิถุนายน 2554

ของดี มีอยู่ใน Visual Studio Gallery

สามารถเข้าไป ดาวน์โหลดได้ที่ http://visualstudiogallery.msdn.microsoft.com/

ที่ codeplex รวมไว้หลากหลาย เข้าได้ที่ http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog

upgrade Visual Studio 2010

เมื่อเราไป ดาวน์โหล Visual Studio 2010 รุ่นทดลอง มาใช้ได้สักพัก แล้วเกิดติดใจ ดังนั้นต้องไปซื้อ License มา เมื่อได้ product key มาแล้ว ต้องการจะ upgrade จากรุ่นทดลองเป็นรุ่นจริง สามารถทำได้ดังนี้
1. ทำการเปิดแฟ้ม setup.sdb ที่เก็บไว้ในโฟล์ดเดอร์ของโปรแกรม (C:\Program Files\Microsoft Visual Studio 10.0\setup.sdb) ด้วยโปรแกรม notepad
2. หาบรรทัด [Product Key] แล้วแก้ product key ที่อยู่ใต้ section นี้ เป็นตัวที่ได้ซื้อมา
3. ทำการบันทึกไฟล์ แต่ถ้าหากบันทึกไม่ได้ ก็บันทึกไว้ที่อื่น แล้วค่อยใช้ windows expoler ลากไปวางแทนไฟล์เดิมที่ในโฟล์ดเดอร์ของโปรแกรม
4. ที่โฟล์ดเดอร์ของโปรแกรม หาไฟล์ setup.exe เรียกไฟล์นี้ขึ้นมา ในนี้จะมีให้ใส่ product key ก็เอาตัวที่ได้ซื้อมาใส่ไปอีกครั้ง เป็นอันเสร็จ

06 พฤษภาคม 2554

app.config เก็บอะไรได้หลายอย่าง

ใน VB.NET App.Config เอาไว้ทำอะไร คงมีคำถามมากมาย ???
เอากันตรงตัวเลย App = Application + Config = Configuration
เว้ากันซื่อ ๆ ก็ เอาไว้กำหนดค่าต่างๆของแอพพลิเคชัน เพื่อเอาไว้ใช้งานในระบบงาน

เช่น การกำหนดค่าต่าง ๆ เช่น กำหนดค่าคงที่, กำหนด Connectionstring เป็นต้น

เราสามารถสร้างไฟล์ app.config ในโปรเจกต์ ได้โดย
1. เลือกเมนู Project
2. เลือก Add New Item...
3. ที่รายการ Common Items เลือก General แล้วเลือกรายการ Application Configuration File
ที่ช่อง Name จะมีชื่อ app.config ให้คลิก OK

เราจะได้ไฟล์ ชื่อ app.config ปรากฎอยู่ในหน้าต่าง Solution Explorer
ให้ทำการเปิดขึ้นมาดู แล้วเพิ่มโค้ด ภายใต้บล๊อกคำสั่ง <appSettings> ... </appSettings> ดังนี้

<?xml version="1.0" encoding="utf-8" ?>

 <configuration>

  <appSettings>

   <add key="name" value="Kasem"/>

   <add key="surname" value="Kamolchaipisit"/>

  </appSettings>


 </configuration>

หากเราต้องการเรียกใช้งานค่าจากไฟล์ app.config
ให้ทำการ Imports System.Configuration ก่อน เช่น


' ประกาศไว้ต้นโปรแกรม
Imports System.Configuration
' คำสั่งในโปรแกรม
' ...

' การเรียกใช้งาน
Dim appSet As New AppSettingsReader()
' หาต้องการดึงค่าใน app.config มาเก็บไว้ในตัวแปร หรือนำไปใช้ตามต้องการ เขียนคำสั่ง ดังนี้
Dim myName , mySurname As String 
MyName = appSet.GetValue("name", GetType(String))  

' name คือชื่อของ key ใน app.config
MySurname = appSet.GetValue("surname", GetType(String))

' surname คือชื่อของ key ใน app.config
Messagebox.Show(MyName & "  " & MySurName)  ' จะปรากฎชื่อ Kasem Kamolchaipisit



หลายคนที่เขียนโปรแกรมจะประกาศ Connection String ไว้ในฟอร์มที่ทำงานโดยตรง ซึ่งมีข้อเสีย ถ้าต้องการเปลี่ยนค่าของ Connection String ใหม่ ก็ต้องแก้ไขฟอร์มทุกฟอร์มใหม่ สำหรับ app.config ก็ให้เราสามารถกำหนดค่าของ Connection String ได้แล้วนำไปใช้ภายใต้ฟอร์มต่าง ๆ ดังนั้นหากต้องการแก้ไขค่า ก็สามารถทำได้ใน app.config ที่เดียวซึ่งก็จะทำให้ทุกฟอร์มสามารถเรียกใช้ได้ทันที่
สำหรับการประกาศ Connection String ภายใต้ไฟล์ app.config เราจะเขียนไว้ภายใต้บล๊อกคำสั่ง <connectionStrings>...</connectionStrings> เช่น

<connectionStrings>

  <add name="myConnect" connectionString=""Data Source=ชื่อเซิร์ฟเวอร์;Initial Catalog=ชื่อฐานข้อมูล;Integrated Security=True" providerName="System.Data.SqlClient" />

</connectionStrings>

จากนั้นที่ฟอร์มแต่ะลฟอร์ม เมื่อต้องการเชื่อมต่อฐานข้อมูลแล้วเรียกใช้งาน Connection String ก็ให้ทำการ Imports คลาส ดังนี้

Imports System.Configuration

จากนั้นเขียนคำสั่งเรียกใช้งาน connection string โดยเขียนไว้หลังจาก Public Class ชื่อ Class เช่น

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Configuration

Public Class Form1
Dim cs As String = ConfigurationSettings.AppSettings("myConnect")

Private Sub Form1_Load .....
' เขียนคำสั่งติดต่อตามต้องการ
End Sub
End Class

สวัสดี
"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.