WinCC K7Grid - Spaltenbreite anpassen

bishop9191

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe ein Problem. Ich lese über ein VBS-Skript werte aus einer .csv-Datei in ein Siemens Step7 Grid Control ein. Nun ist das Problem, dass alle Spalten gleich breit sind.
Wie kann ich die einzelnen Spalten verschieden breit stellen? In den Eigenschaften finde ich leider keine Option.

Hier mal das Skript:

Code:
Sub OnOpen()                                              
Dim SDAT
Dim EDAT
Dim DTSTART
Dim T
Dim M
Dim J
Dim DataList
Dim Lauf
Dim Line
Dim Y
Dim F
Dim Temp
Dim Breite
 
Set DataList = ScreenItems("Daten")

DataList.NumCols = 18
DataList.Width = 1260

DataList.CellValue(0,1) = "Datum"
DataList.CellValue(0,2) = "Wert1"
DataList.CellValue(0,3) = "Wert2"
DataList.CellValue(0,4) = "Wert3"
DataList.CellValue(0,5) = "Wert4"
DataList.CellValue(0,6) = "Wert5"
DataList.CellValue(0,7) = "Wert6"
DataList.CellValue(0,8) = "Wert7"
DataList.CellValue(0,9) = "Wert8"
DataList.CellValue(0,10) = "Wert9"
DataList.CellValue(0,11) = "Wert10"
DataList.CellValue(0,12) = "Wert11"
DataList.CellValue(0,13) = "Wert12"
DataList.CellValue(0,14) = "Wert13"
DataList.CellValue(0,15) = "Wert14"
DataList.CellValue(0,16) = "Wert15"
DataList.CellValue(0,17) = "Wert16"
DataList.CellValue(0,18) = "Wert17"
 
' ############## Laden der Daten ################
'Laden Datalist
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, fs
Dim filename
Dim i
Dim ExData1
'----- Pfadangabe der Dateien holen
filename = "C:\Daten_Test\Werte.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(filename) = False Then   'Datei nicht vorhanden
                Msgbox "Daten- Datei nicht vorhanden !"
                Exit Sub
End If
Set fs = fso.OpenTextFile(filename,ForReading,False,0)
i=1
While fs.AtEndOfStream <> True
                line = fs.ReadLine
                'pos = InStr(1,line,"Datensatz;")
                'If pos <> 0 Then
                'line = "A1;B2;C3;D4;E5;F6"
                               ExData1 = Split(line, ";")
                               'HMIRuntime.Trace i & ": " & ExData1(0) & ExData1(1) & ExData1(2) & vbCrLf
                               For y = 1 To 15
                                               DataList.CellValue(i, y) = ExData1(y-1)
                               Next
                                               
                               'DataList.AddItem(ExData1(Filter))
                               'DataList.AddItem(line)
                               i = i + 1
                               DataList.NumRows = i
                'End If
Wend
fs.close

End Sub

Vielleicht wisst ihr ja eine Lösung!
Grüße
 
Das K7-Grid ist wie du geschrieben hast nunmal ein Step7-Element. Offene Doku dazu gibt es nicht. Auch muss Step7 muss installiert sein wegen der Lizensierung, könnte also für die Zukunft Probleme machen.

Hier mal was ich über das Control weiß.
Beispiel für das Übertragen der Daten aus einem Recordset.
Code:
With List
	.LockUpdate True
	.NumRows = 0
	.NumCols = 2
	.CellValue(0,0)="Art.ID"	'Nicht sichtbar
 	.CellValue(0,1)="Art.Code"
  	.CellValue(0,2)="Art.Bezeichnung"							
	.InsertRows 1,Rs.RecordCount
End With


For i = 1 To  Rs.RecordCount	
	List.CellValue(i,0)=  Rs.Fields(0).Value
	List.CellValue(i,1)=  Rs.Fields(1).Value
	List.CellValue(i,2)=  Rs.Fields(2).Value
	Rs.MoveNext	
Next


With List		'-- Resize the Columns (optimize)
 	.GetColumn(0).ResizeColWidthsToFit 			
 	.GetColumn(1).ResizeColWidthsToFit 	
 	.GetColumn(2).ResizeColWidthsToFit 			
	.LockUpdate False
 End With
Das Resize geht auf jeden Fall.
Für das manuelle Setzen könntest du List.GetColumn(0).Width = Value probieren...

Kennt eigentlich wer ein GridControl das zuverlässig mit TIA-WinCC-Advanced geht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, das hat mir sehr geholfen!

Jetzt müsste ich meine Tabelle noch nach dem Datum (Spalte 1) sortieren. Zurzeit wird das aktuellste Datum unten angezeigt. Ich will es aber oben an erster Stelle angezeigt haben.
Das geht doch bestimmt mit der Funktion "List.SortData" oder? Aber wie genau?
 
Zurück
Oben