(17.02.2010 12:15)STG schrieb: Hallo Bruno,
zum Beispiel brauche ich die Kanalauswahl für den Befehl
Call ChnPropSet
mit Kanalindex ohne Gruppe geht es super, kann ich aber den Befehl auch mit 2 Variablen, eine für Gruppennummer und eine für Kanalnummer verwenden?
Oder bei dem Befehl:
ChDX(iRow, iChn) --> so funktionierts. Aber wie mit Gruppe und Kanalnaummer?
Oder noch einen:
MsgBox (ChnLenght("[1]/[5]")) geht aber
MsgBox (ChnLenght(iVar1/iVar2) geht nicht.
Ich hoffe das man das irgendwie lösen kann...
Bisher komm ich mit Zwischenvariable und AbsolutIndex ohne Gruppe auch zum Ziel, aber schöner wäre es manchmal wenn ich direkt die Kanäle in den Gruppen ansprechen könnte.
Viele Grüße
STG!!
Hallo STG,
DIAdem war in der Vergangenheit nicht ganz einheitlich beim Zugriff auf die Kanäle. Ursprünglich konnte man nur über die Kanalnummern zugreifen, was eine genaue Kenntnis der Kalreihenfolge vorraussetzt. Ab DIAdem 9 kamen dann noch die Gruppen hinzu, jetzt ist nicht einmal die Reihenfolge der Kanäle im Datenportal mit der Nummerierung identisch.
Das macht die Benutzung einiger Funktionen kompliziert, wie Du festgestellt hast.
Wenn Du den Kanalindex wie bei "Chnpropset" oder "Chdx" benötigst, kannst Du Dir mit "Cno" helfen, um vom Gruppen-/Kanalnamen auf die Kanalnummer zu kommen.
"ChnLength" kann schon mit Kanalnummer oder Kanalnamen aufgerufen werden. Kanal- (Gruppen-) Namen können dabei in dem Format "[Gruppennummer]/[Kanalnummer]" oder "Gruppenname/Kanalname" eingegeneb werden. Das Ganze geht auch gemischt. Bei eindeutigen Kanalnamen kann auch die Gruppe weggelassen werden, oder "/Kanalname" greift auf die Defaultgruppe zu. Aber hier wird immer ein Text ("") übergeben! Daher funktioniert Dein Beispiel nicht, Du musst die Variablen in einen String umwandeln:
MsgBox (ChnLength("["&cstr(iVar1)&"]/["&cstr(iVar2)&"]"))
DIAdem hat aber, um das ganze Problem zu lösen, eine ganz neue Möglichkeit, um auf Daten zuzugreifen: die API.
Das ist eine objektorientierte Schnittstelle, mit der Du schnell auf alle Eigenschaften und Methoden des Datenportals (und nicht nur hier) zugreifen kannst. Das geht wahlweise über Name oder Index.
z.B. Kanallänge:
msgbox data.Root.ChannelGroups.Item(iVar1).Channels.Item(iVar2).Size
Gruß
Bruno
Diadem 2010