Ardışık isimlere sahip kompenentlere for-next ile ulaşma
Salih bey,
TextBox1, TextBox2 …. şeklinde giden 50 tane komponentim var. bir for next döngüsüyle içlerine veri yazdırmak istiyorum. VBA daki controls fonksiyonu Wintr de çalışmıyor. örneğin şöyle bir kod:
For i = 1 To 50
Controls(“TextBox” & i) = “Teşekkürler WinTr”
Next i
Scada programında tüm nesneler Tag sistemi üzerinden çalışır. Her Textbox Value özelliği için bir Internal Tag tanımlamalı ve Script içersinde bu Tag’a değer yazmalısınız. Script ile Textbox veya diğer nesneler ancak bu şekilde iletişim kurabilir.
Not: Internal Tag’ların kullanımı ücretsiz ve limitsizdir.
Was this answer helpful?
LikeDislikeSalih bey öncelikle yardımlarınızdan dolayı teşekkür ediyorum. Benim 100 civarında internal tag ım olacak. karekod okuyucudan gelen 160 basamaklı bir metni 2 şer ikişer bölüp bu taglara atayacağım. tag isimlerinin sonundaki 1,2,3 şeklindeki numaraları değişken olarak tanımlayabilmem gerekiyor ki for next döngüsüne alıp veri yazabileyim, bu gösterimin VBA ile kolay yolu varmı acaba?
Was this answer helpful?
LikeDislikeScript içersin de çok değişik yöntemler ile yapılabilir. Biraz araştırdım tam istediğiniz gibi olmasa da aşağıdaki yöntemi kullanabilirsiniz.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public Tag_1 As UInt16
Public Tag_2 As UInt16
Public Tag_3 As UInt16
Public Sub Load
Dim Arr As New System.Collections.ArrayList
Dim i As Integer
For i = 0 To 2
Arr.Add(i)
Next
Tag_1 = Arr(0)
Tag_2 = Arr(1)
Tag_3 = Arr(2)
End Sub
End Class
End Namespace
Bu satır’a dikkat: Arr.Add(i) i yerine yazılacak değer gelmelidir.
Was this answer helpful?
LikeDislikeHazır konu açılmışken söylemek lazım, Script içersin de Tag değerlerini sadece okuma için kullanılabilen iki adet ArrayList mevcuttur. Fakat bunlar yazma işlemi için kullanılamaz.
Public TagNameTable() As String
Public TagValueTable() As String
Bu Arrayler ile Tag değerinin okunması için aşağıdaki kod kullanılabilir.
Dim i as integer
i = TagNameTable.IndexOf(“Tag_1”)
if i > -1 Then Value = TagValueTable(i)
Açıklama:
Tag_1 isminin nerede olduğunu indexof komutu ile sorup öğreniyor ve i değişkenine yazıyoruz. Eğer Tag_1 isim tablomuz içinde yoksa i değişkenine -1 yazılır. Eğer i -1 ise işlem yapılamaz, bu nedenle son satırda -1’den büyükse şartı vardır. TagValueTable(i) şeklinde yazarak Tag_1 değerini öğreniyoruz.
Was this answer helpful?
LikeDislikeScada sayfalarında bulunan nesnele script ile erişim sağlandı. Daha fazla bilgi için bu linke tıklayınız. https://www.wintr.com.tr/2015/01/scada-sayfa-nesnelerine-script-ile-erisim/
Was this answer helpful?
LikeDislike