Web Server ile Rapor oluşturma.
Web server ile erişilen scada sayfalarında bazı özellikler kısıtlanır. Bunun nedeni bilgisayar performansını iyi kullanmak için web ile açılan scada sayfalarının cpu’nun diğer çekirdeğinde çalıştırılmasıdır. Web browser ile izlenen scada sayfasında rapor oluştururken iki problem karşımıza çıkar. 1. Datetimepicker ile tarih saat girişinin zorluğu. 2. Datagridview üzerinde scrool yapamamak.
- Web üzerinden Datetimepicker tıklandığında açılan pencereye text formatında tarih ve saat bilgisini girmeliyiz. Bu konuda yapılacak fazla birşey yok.
- Rapor oluşturulduğunda Datagridview’deki bilgilerin bir kısmı hemen gözükür. Altda kalan bilgileri görmek için scrool (kaydırma) işlemi script ile yapmalıyız.
Bu konu için hazırladığımız örnek projeyi buradan indirebilirsiniz.
İki adet script ile datagrid’i yukarı ve aşağı scrool yapmalıyız. Örnek script aşağıdadır. Bu script’de dikkat edilmesi gereken bazı şeyleri açıklayalım.
Script ile sayfalar içersindeki nesnelere direkt olarak erişilebilir. Fakat erişmek istediğimiz DataGridView rapor oluşturulurken silinip yeniden yapılıyor. Bu nedenle sayfa açılırken oluşturulan datagrid’den farklı bir nesne var. Bu sorunu aşmak için ilk önce sayfaya erişiyoruz.
Dim MyScreen as object = ScadaScreen.Name(“Screen_1″,”Web”) bu komut ile web’de açık olan Screen_1’e erişiyoruz.
Datagridview nesnesini bu sayfa içersindeki nesnelerde arıyıp bulmalıyız. Aşağıdaki komut bu amaçla yazılmıştır.
For each tmp as object in MyScreen.Controls
if tmp.name = “” then
For each tmp2 as object in tmp.Controls
if tmp2.name = “DataGridView_1” then
DataGrid = tmp2
Goto Ok
End if
next
end if
Next
Nesne erişimi tamamlandıktan sonra datagridview scrool işlemi için aşağıdaki kodu çalıştırıyoruz.
Ok: if DataGrid.RowCount > 0 Then
SelectedIndex += 10
if SelectedIndex >= DataGrid.RowCount Then SelectedIndex = DataGrid.RowCount – 1
DataGrid.ClearSelection()
DataGrid.Rows(SelectedIndex).Selected = True
DataGrid.FirstDisplayedScrollingRowIndex = SelectedIndex
End If
Script’in tamamı aşağıdadır. Bu scriptin benzer yukarı kaydırma işlemi içinde yapılmalıdır.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public ScadaScreen As Object
Public SelectedIndex As Int16
Public Sub Load
Try
Dim DataGrid as DatagridView
Dim MyScreen as object = ScadaScreen.Name(“Screen_1″,”Web”)
if MyScreen Is Nothing then exit sub
For each tmp as object in MyScreen.Controls
if tmp.name = “” then
For each tmp2 as object in tmp.Controls
if tmp2.name = “DataGridView_1” then
DataGrid = tmp2
Goto Ok
End if
next
end if
Next
Exit Sub
Ok: if DataGrid.RowCount > 0 Then
SelectedIndex += 10
if SelectedIndex >= DataGrid.RowCount Then SelectedIndex = DataGrid.RowCount – 1
DataGrid.ClearSelection()
DataGrid.Rows(SelectedIndex).Selected = True
DataGrid.FirstDisplayedScrollingRowIndex = SelectedIndex
End If
Catch ex As Exception
MessageBox.Show(Ex.ToString, “Down Script: ” & Ex.Message)
End Try
End Sub
End Class
End Namespace
Son Yorumlar