Imports System.Xml
Public Class frmG2GdotNetTV
Inherits System.Windows.Forms.Form
' คำนวณหาค่าขอบของฟอร์ม
Private BorderWidth As Integer = (Me.Width - Me.ClientSize.Width) \ 2
' หาค่าความสูงของ TitleBar ... เพื่อใช้ประโยชน์ในการคำนวณหาระยะตำแหน่งของ Control ต่างๆบนฟอร์มได้
Private TitlebarHeight As Integer = Me.Height - Me.ClientSize.Height - 2 * BorderWidth
Private Sub frmG2GdotNetTV_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim XMLDoc As XmlDocument ' เอกสาร XML
Dim NodeList As XmlNodeList ' โหนดทั้งหมดที่มีอยู่ ก็คือ ทุกๆ Station นั่นเอง
' โหนดแต่ละตัว หรือ แต่ละ Station
' ตัวอย่างนี้ก็จะมี Element ดังนี้คือ ID, StationName, GroupName, Media
Dim NodeElement As XmlNode
' ตัวแปร Item เพื่อใช้งานกับ ListView
Dim LV As New ListViewItem
' สร้าง XML Document
XMLDoc = New XmlDocument()
' โหลด Xml เข้ามา
Dim StrAppPath As String = Environment.CurrentDirectory
XMLDoc.Load(StrAppPath & "\g2gnettv.xml")
' สถานีออนไลน์จาก Web Server ... ข้อมูลสถานี หรือ รายการต่างๆจะถูก Update ณ ที่เดียวกัน
'XMLDoc.Load("http://www.g2gnet.com/g2gnettv/g2gnettv.asp")
Me.StartPosition = FormStartPosition.CenterScreen
With lvwStation
.Clear()
.View = View.Details
.FullRowSelect = True ' แสดงแถบแสงในแถวที่ถูก Focus
.HideSelection = False ' ไม่ปิดแถบแสงในขณะที่ Listview ไม่ถูก Focus
.Columns.Add("ID", 0)
.Columns.Add("สถานี/รายการ", lvwStation.Width \ 2)
.Columns.Add("กลุ่มรายการ", lvwStation.Width \ 2 - 20)
' ซ่อนข้อมูล URL ไม่ให้ผู้ใช้งานได้เห็น ... แอบๆๆๆๆ
.Columns.Add("Media", 0)
End With
' กำหนดโหนด
NodeList = XMLDoc.SelectNodes("tvstation/channel/Station")
' วนรอบแต่ละโหนด - Station Node
For Each NodeElement In NodeList
' อ่าน ID Element
Dim ID As String = NodeElement.ChildNodes.Item(0).InnerText
' อ่าน StationName Element
Dim StationName As String = NodeElement.ChildNodes.Item(1).InnerText
' อ่าน GroupName Element
Dim GroupName As String = NodeElement.ChildNodes.Item(4).InnerText
' อ่าน Media Element - เป็นการเก็บค่า URL ครับ ... พี่น้อง
Dim Media As String = NodeElement.ChildNodes.Item(2).InnerText
' จับยัดเข้าใส่ ListView ทีละ Column
LV = lvwStation.Items.Add(ID) ' Index = 0
LV.SubItems.Add(StationName) ' Index = 1
LV.SubItems.Add(GroupName) ' Index = 2
LV.SubItems.Add(Media) ' Index = 3 ... ตัวนี้ต้องใช้ในการกำหนดค่า URL ให้กับ Windows Media Player
Next
Me.Text = "G2GdotNetTV On Line - www.g2gnet.com"
' ตั้งค่าให้กับ Windows Media Player
WMP.enableContextMenu = False ' ไม่ให้ผู้ใช้กดเมาส์ขวา เพื่อเลือกเมนู
WMP.stretchToFit = True ' ให้หน้าจอ Windows Media Player พอดีกับการปรับขนาดของฟอร์ม
End Sub
Private Sub lvwStation_KeyPress( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles lvwStation.KeyPress
' Chr(13) หรือ ก็คือการกด Enter นั่นเอง
If e.KeyChar = Chr(13) Then Call GetURL()
End Sub
Private Sub lvwStation_MouseDoubleClick( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles lvwStation.MouseDoubleClick
Call GetURL()
End Sub
' อ่านค่าจาก Column ที่ 4 (หรือ Index = 3) ซึ่งเป็นค่า URL ใน ListView
Private Sub GetURL()
Dim LV As ListViewItem
If Me.lvwStation.SelectedItems.Count > 0 Then
LV = Me.lvwStation.SelectedItems(0)
WMP.URL = LV.SubItems(3).Text
Me.Text = "G2GdotNetTV On Line - www.g2gnet.com [" & LV.SubItems(1).Text & "]"
End If
End Sub
Private Sub frmG2GdotNetTV_Resize( _
ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Me.Resize
' เอาแบบบ้านๆตามสไตล์ของ M$ Visual Basic 6.0 ล่ะกันน่ะครับ ... พี่น้อง ... 55555+
With grpStation
.Left = 0
.Top = Me.Height - grpStation.Height - TitlebarHeight - 8
.Width = Me.Width - 8
End With
With WMP
.Left = 0
.Top = 0
.Width = Me.Width
.Height = Me.Height - grpStation.Height - TitlebarHeight - 8
End With
With lvwStation
.Left = 5
.Top = 15
.Width = grpStation.Width - 10
.Height = grpStation.Height - 22
End With
End Sub
End Class
|