10-03-2013 06:17 AM - edited 10-03-2013 06:18 AM
Hallo zusammen,
in der DIAdem-Hilfe wird die folgende Vorgehensweise zum öffnen von REPORT-Einstellungsdialogen aus einem Script beschrieben:
...
Call GraphObjOpen("New_2DAxis1") 'Opens the axis object Call SUDDlgShow("Main", ResourceDrv & "D2Axis") Call GraphObjClose("New_2DAxis1") 'Closes the axis object Call PicUpdate() 'Updates the report
Wie macht man das mit der neuen objektorientierten Script-Schnittstelle, oder muss man hier immer noch das lästige "GraphObjOpen" und "GraphObjClose" benutzen?
In der Hilfe habe ich leider nichts gefunden.
Gruss
Elmar
10-04-2013 03:47 AM
Hallo ElmarS,
um ein vorhandenes Report Blatt zu verwenden kannst du folgenden Befehl verwenden
Set oCtrl = Report.Sheets("Blatt 1").Objects("2D-Axis1")
für eine neues Blatt
Set oCtrl = Report.Sheets("Blatt 1").Objects.Add(eReportObject2DAxisSystem, "2D-Axis1")
Um die ganzen Eigenschaften eines Graphen zu bekommen würde ich dir den Aufzeichnungsmodus empfehlen, dort kannst du die Eigenschafts Aufrufe
eines Graphen mit Strg-Umschalt-C in dein Script laden, so erhälts du alle Einstellungsmöglichkeiten.
z.B.
'------------------- ColorLegend ------------------------------
'Set oColorLegend = Report.Sheets("Blatt 1").Objects("2D-Axis1").ColorLegend
Set oColorLegend = o2DAxisSystem.ColorLegend
'o2DAxisSystem.ColorLegend.Visible = false' ColorLegend ColorLegend not enabled
'------------------- CurveLegend ------------------------------
'Set oCurveLegend = Report.Sheets("Blatt 1").Objects("2D-Axis1").CurveLegend
Set oCurveLegend = o2DAxisSystem.CurveLegend
'o2DAxisSystem.CurveLegend.Visible = false' CurveLegend CurveLegend not enabled
Ich hoffe ich konnte dir damit deine Frage beantworten
MFG
10-07-2013 01:23 AM - edited 10-07-2013 01:36 AM
Hallo Riepld,
danke für Deine Antwort. Wie man die Report-Objekte per Script ändert weiss ich. Ich möchte aber den Einstellungsdialog des Axensystems mit der Kuvenauswahl aus dem Script heraus öffnen um dann interaktiv verschiedene Einstellungen vorzunehmen.
Den Dialog kann man mit dem Befehl:
Call SUDDlgShow("Main", ResourceDrv & "D2Axis")
aus dem geöffneten Achsen-Objekt heraus öffnen. Es bringt aber gewisse Probleme mit sich weil das Achsen-Objekt auch erst wieder mit Call GraphObjClose geschlossen werden muss bevor man bestimmte Einstellungen ändert.
Deswegen meine Frage: Gibt es mit der neuen objektorientierten Report Script-Schnittstelle einen besseren, "objektorientierten" Weg um diese Dialoge zu öffnen?
Gruss
Elmar
10-07-2013 03:08 AM
Hallo Elmar,
Ab der DIAdem Version 2012 wird, wie von Riepld beschrieben, nicht mehr über GraphObjOpen und GraphObjClose die Objekte bearbeitet, sondern über Report. ... .
Diese beiden Vorgehensweisen werden ausschließlich über das Script Modul verwendet.
Sie könne jeden Dialog von DIAdem auch selber aufrufen. Allerdigs würde ich Ihnen empfehlen, die entsprechenden Eigenschaften über das Script direkt zu setzen und nicht den vorgefertigten Dialog aufrufen.
Dafür empfehlen sich besonders Anwenderdialoge, da Sie auch da zusätzliche Scripte hinterlegen können.
Nachdem Sie Eigenschaften einen neune Wert zugeweisen haben müssen Sie noch den Befehl Report.Refresh() aufrufen um die Anzeige zu aktualisiern.
Mit freundlichen Grüßen
Philipp K.
AE | NI Germany
10-07-2013 04:16 AM
Hallo zusammen,
meine Frage scheint nicht ganz eindeutig zu sein?!
Ich kenne die objektorientierte Report Script-Schnittstelle (Report. ...) sehr gut und benutze diese auch intensiv. Bei einer Anwendung möchte ich aus einem Anwenderdialog heraus, den vorgefertigten DIAdem-Dialog "Kurven- und Achsendefinition" aufrufen. Wie kann ich diesem Dialog das entsprechende Achsenobjekt übergeben (z.B. Report.Sheets("Blatt 1").Objects("2D-Axis1"))?
Für mich macht es wenig Sinn hier den halben Dialog nach zu programmieren.
In der Hilfe zu DIadem 2012 SP1a wird es leider immer noch auf die alte Art (mit GraphObjOpen ...) beschrieben ->
http://zone.ni.com/reference/en-XX/help/370858K-01/procauto/procauto/procauto_report_dialog/
Grüsse
Elmar
10-07-2013 05:39 AM
Hallo Elmar,
Wenn man sich den Befehl SUDDlgShow("Main", ResourceDrv & "D2Axis") wird hier kein Objekt oder sonstige Informationen an den Dialog weitergegegben. Wie der Dialog an diese Information kommt, kann ich nicht sagen.
Die Dialoge im Ordner ResourceDrv (C:\PROGRAM FILES (X86)\NATIONAL INSTRUMENTS\DIADEM 2012\Resource\ ) sind alle geschützt.
Ich würde erwarten, dass man in der neuen Schnittstelle das entsprechende Objekt mit übergibt:
dim oTemp
set oTemp = Report.Sheets("Blatt 1").Objects("2D-Axis1")
Call SudDlgShow("Main", ResourceDrv & "D2Axis",oTemp)
Das funktioniert aber nicht.
Wie der Dialog an das geöffnete Objekt herankommt kann ich nicht sagen. Daher bleibt Ihnen an der Stelle die Wahl zwischen dem Weg aus der Hilfe und über einen eigenen Dialog, in dem Sie nur die Parameter ändern, die Sie auch wirklich brauchen.
Mit freundlihcen Grüßen
Philipp K.
AE | NI Germany
10-15-2013 09:05 AM
Hallo Philipp,
danke für die Antwort. Schade, dass das noch nicht so funktioniert wie man es erwarten würde. Ich hoffe das wird in der nächsten DIAdem-Version noch behoben.
Grüsse
Elmar