DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Call Diadem Dialogs

Is it possible to call a DIAdem - dialog from my own dialog?
Means, can i call the properties-dialog  of a FreeText-object of a layout, if I have access to the FreeText-object?
It should be like simulate a double click on the object...
 
Is there is a solution for this prob???
 
Thanks!
0 Kudos
Message 1 of 8
(5,029 Views)
Hello f-zoid,
yes it is possible! the help for diadem 8.1 says:
"Die prinzipielle Vorgehensweise zum Setzen der Parameter ist die folgende:
Objekt öffnen
   Objekt-Inhalt ändern
   Unter-Objekt öffnen
    Unter-Objekt-Inhalt ändern
   Unter-Objekt schließen
  Objekt schließen
Anmerkung:
Wird während des Teach-In-Modus ein Dialog geöffnet, der die per Autosequenz zu manipulierenden Parameter enthält, und anschließend die Tastenkombination Strg-A betätigt, so werden die aktuellen Parametrierungen dieses Dialoges in der Autosequenz registriert (bei inaktivem Teach-In-Modus in der Zwischenablage). Hierbei wird automatisch die Objekthierarchie berücksichtigt, d.h., alle Anweisungen zum Öffnen und Schließen eines Objektes werden ebenfalls generiert und protokolliert.
Die Neuanlage von Objekten (Kurven, Kurvendarstellungen) wird nicht mitgeschrieben und muss mit den entsprechenden Befehlen (GraphObjNew, ViewObjNew,...)  manuell in die Autosequenz eingefügt werden."
 
the var for free-text is
Call DlgOpen("DlgText")
 
perhaps it's easier to use this:
          Call GRAPHObjOpen("Text1")
            TXTTXT    = "der Text"
          Call GRAPHObjClose("Text1")
greets Andreas

Volkswagen AG
Wolfsburg - Germany
Message 2 of 8
(5,024 Views)
the var for free-text is
Call DlgOpen("DlgText")
 
works, but how you did know the name of this dialog... which other can I use?
Next problem is, how can I marker a object on my sheet by a script???
 
At the moment I list all my objects in a combobox. I can choose a object and open it. if it is open i can call the DlgText like you said, but I get a error-message because he tries ReportObj(0). I think the zero is because I have no selected objects. So I like to know if it is possible to marker a report-object?
0 Kudos
Message 3 of 8
(4,999 Views)

Hallo

Bei den Dialogen, die Offiziel freigeben sind, steht der Hilfeaufruf in der Hilfe. Das sind beispielsweise alle Dialoge zur Mathematik. Im REPORT ist das mit den Dialogen etwas komplizierter. Die Variablen die in dem Dialog gesetzt werden, hängen von dem selectierten Objekt ab und erwarten einige Voreinstellungen. Daher sind diese Dialognamen auch nicht dokumentiert. Zur Version 10 haben sich die internen Aufrufe (und deren Design) auch geändert. Daher warne ich davor diese Dialoge in einem Script selbst aufzurufen. Besser wäre es mit GraphObjOpen und GraphobjClose diese im Script zu bearbeieten und für die wenigen Einstellungen die Sie vielleicht interaktiv machen wollen eigene Dialoge zu erstellen. In der Hilfe zu DIAdem 10 ist ausführlich beschrieben wie man mit den Objekten in Report arbeitet, auch hier in der KB gibt es viele Beträge dazu.

Ich hoffe Ihnen geholfen zu haben.

Winfried

0 Kudos
Message 4 of 8
(4,991 Views)
Hallo winner...
 
Ich versteh ja die Problematik, doch ist folgendes Szenario mein Anliegen:
Ich habe einen Bericht in mehreren Layouts geteilt, damit ich einzelne Layouts aufrufen kann und dies noch änden kann (z.b. mit individuellen Kommentaren versehen).
Nun hab ich es so gemacht, das der User eins neues UserInterface bedienen kann, somit kann ich Ihm auch nur die Sachen erlauben, die er machen muss und gleichzeitig die Einarbeitung in den Umgang mit DIAdem abnehmen.
Das heisst aber, das ich nicht aus meinem Dialog raus will, also auch nicht beim Bearbeiten der Layouts. Nun bin ich an dem Punkt, das der User aus einem Menü die Objekte eines Sheets auswählen kann und auch deren Unterobject ( Axis -> Curves). Nun weiss ich absolut nicht weiter, es gibt 2 gedachte Lösungen, die mich beide vor Problemen stellen:
 
1. Ich möchte aus meinem Menü ein Object auswählen und es bearbeiten, also füge ich ein Button "Bearbeiten" ein und öffne damit den zugehörigen Dialog...
zb bei ObjectType = FreeText -> DlgOpen("DlgText"). Das ist eigentlich der einfachste Weg, da ich den Dialog nicht selber entwickeln muss.
Probleme:
- Wie heisst der Dialog bei einem Achsensystem, bei einer Tabelle..etc
- Ich krieg beim Öffnen des Dialoges einen Fehler, da versucht wird das ReportObj(0) zu öffnen, denke das liegt daran, das ich im Report nix makiert habe, also somit die SelObj() Funktion behindere...aber das ist nur ne Vermutung
Idealer Weg wäre also:
Ich wähle aus meinem Menü ein Object, klicke "Bearbeiten" und der EventClick simuliert mir das Anklicken eines Objectes (also das markieren) und anschliessend den Doppelklick auf diesem Object (also das bearbeiten)
 
2. Natürlich kann ich mir auch selber jeden Dialog nach bauen, aber dann stoss ich auf Probleme, die sicherlich auch durch meine Unwissenheit zu erklären sind. Zum Beispiel möchte ich die Schriftart ändern und weiss nicht, wo ich die vorhanden Schriften auslesen kann...hab es aus der Regedit kopiert und dann in eine Liste eingebaut, doch leider unterscheiden sich die Namen von den Namen in DIAdem teilweise...hat Diadem ne vordefinierte FontComboBox?
Ähnliches gilt für die Farben...hab es mit ChooseColor()-Dialog versucht, dann müsst ich aber den LongInteger-Wert wieder auf RGB(x,x,x) umrechnen, oder???
Das sind nur zwei Bsp, wo es dann dran harkt...
Aber vlt gibs da ja auch ne schlau Lösung...
 
Also die Frage, was mach ich und wie komm ich am Besten aus meinem Dialog an Die Objecte...Wenn noch Fragen offen sind beantwort ich die gerne. Bin froh über jeglichen Tipp!!!!
 
mfg Michael
0 Kudos
Message 5 of 8
(4,964 Views)

Hallo Michael

 

Ich weiß eigentlich nicht so genau was Sie machen wollen. Sie wollen einerseits die DIAdem-Oberfläche anpassen, andererseits aber alle Funktionen dem Benutzer geben.

Die Programmdialoge in Ihrem Script aufzurufen geht nicht, wenn Sie nicht alle Vorbereitungen, die diese Dialoge zuvor machen selbst programmieren wollen. Und kompatibel zu zukünftigen Versionen sind sie dann auch nicht mehr. Dokumentiert sind die Aufrufe auch nicht.

Vielleicht können Sie einfach über InteractionOn und InteractionOff einfach Ihr Script verlassen und die Standardumgebung in REPORT nutzen. (Ich weiß nicht welche Version Sie verwenden, aber in DIAdem 10 ist diese Oberfläche deutlich aufgeräumt worden und viele häufig genutzte Funktionen wie Farbe, Font und Fontgröße sind direkt über die Befehlsleiste zugreifbar)

Falls Sie nur einzelne Funktionen nur zur Verfügung stellen wollen, müssen Sie eigene Dialoge bauen. Leider gibt es kein Font-Control im Dialogeditor. (Das wäre ein Wunsch, den man an die Entwicklung weiterleiten sollte.) Vielleicht reicht aber auch eine beschränkte feste Liste an Fonts, die jeder auf seinem Rechner installiert hat, die Sie einem Listenfeld zuweisen.

Leider haben Sie mit den Color-Control auch Recht. Aber vielleicht reichen dort ja auch ein paar Farben. (Vielleicht wird dem Kunden auch mal ein Color-Control zur Verfügung gestellt).

 

Es tut mir leid, dass ich Ihnen nicht wirklich weiter helfen kann.

 

Winfried

0 Kudos
Message 6 of 8
(4,934 Views)

hallo...

also, ich nutze die 10.0er version. Ich habe mir einen Dialog gebaut, um den Endnutzer nur noch die Möglichkeiten an die Hand zu geben, die er auch wirklich braucht, da DIAdem nun mal sehr mächtig ist und wir nicht alles ausnutzen wollen.

Sie schrieben: Die Programmdialoge in Ihrem Script aufzurufen geht nicht, wenn Sie nicht alle Vorbereitungen, die diese Dialoge zuvor machen selbst programmieren wollen

Die Einstellungen würd ich sogar machen wollen, doch leider weiss ich nicht wie, da es ja nicht dokumentiert ist.

Nun wäre es schön gewesen, wenn es eine font-lib oder ähnlich gegeben hätte (wo liesst diadem denn die fonts aus). Selbiges gilt eben mit Color. Aber gut, bin momentan dann auch soweit, das ich mit interactionOn arbeite, was aber wiederrum unbefriedigend ist, da ich nun nicht mehr kontrollieren kann, was der User wirklich macht. Soll heissen, der User kann im Datenportal Änderungen vornehmen, oder auch in anderen Modulen arbeiten...

Ausserdem muss ich dann jedem Benutzer zeigen wie er Interaction abstellt und wohl erklären, warum die Interaktion-Lösung gewählt wurde...Als Begründung anzuführen, das es keine Font-Combos gibt, oder das die Farb-Umrechnung nötig wäre ist da eher unbefriedigend...zumal es sich momentan um eine TestVersion handelt und die Benutzung ein Entscheidungsfaktor zum Kauf sein wird.

Aber ich werd wohl erstmal weiter in diese Richtung arbeiten...

Danke für die klaren Aussagen, somit weiss ich woran ich bin...

0 Kudos
Message 7 of 8
(4,925 Views)

Hallo Michael

In der Anfang Dezember verfügbaren Version 10.1 wird es ein Ereignis geben, das den Wechsel der Module überwacht. (OnPanelChanged) Hinter dieses Ereignis könnte man eine Funktion legen, die verhindert, dass das das Modul gewechselt wird (bzw. automatisch wieder nach REPORT wechselt). Veränderungen im Datenportal wie das Löschen oder Verschieben von Kanälen sind dann allerdings immer noch möglich.

Sie können aber mit DataChanged zumindest überprüfen, ob die Daten geändert wurden (falls Sie die Daten nicht zuvor in irgendwelchen Operationen geändert haben) oder Sie könnten die Daten nur anmelden, statt sie explizit zu laden. Ohne den Wechsel in den NAVIGATOR kann er die geänderten Daten dann zumindest nicht speichern.

Wenn Sie dem Anwender sowieso nicht soviele Freiheitsgrade geben wollen, sollten Sie Sie überlegen, ob Sie nicht nur eine Reihe vordefinierter Layout verwenden wollen. In einen Dialog könnten Sie dann eine Vorschau (als Bitmap) anzeigen.

Winfried

0 Kudos
Message 8 of 8
(4,919 Views)