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.

  1. 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.
  2. 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