Die Klasse stellt Methoden zur Bearbeitung interaktiver Elemente (Pushbuttons, Textedit-Felder, ...) zur Verfügung.
Die Klasse stellt Methoden zur Bearbeitung interaktiver Elemente (Pushbuttons, Textedit-Felder, ...) zur Verfügung.
Hier finden Sie drei Testdokumente:
comet_pdf -i \$DESKTOP/inter3.w2ml --interactive 1 -L
InDesign® unterstützt eine Reihe interaktiver Objekte, die in interaktiven PDF und Folios verwendet werden können. Folgende Objektarten werden unterstützt:
Wert | Konstante | Beschreibung |
0 | kMultistate | Objektstatus, nicht unterstützt von comet_pdf |
1 | kPushbutton | Button |
2 | kTextfield | Texteingabefeld |
3 | kCheckbox | Kontrollkästchen |
4 | kRadiobutton | Optionsfeld |
5 | kListboxfield | Listenfeld |
6 | kCombobox | Kombinationsfeld |
7 | kSignature | Unterschrift |
Illustrator® stellt keine interaktiven Objekte zur Verfügung. Die Funktionen des Moduls interactive haben deshalb in Illustrator® keine Bedeutung.
Beachten Sie bitte, dass comet_pdf mit der Option --interactive N gestartet werden muß, um ein interaktives PDF zu erzeugen. Fehlt die Option, werden die interaktiven Elemente des Dokumentes nicht ins PDF exportiert.
Als Status eines interaktiven Objekt wird das Erscheinungsbild bezeichnet,mit dem das Objekt angezeigt wird. Das Erscheinungsbild
ist davon abhängig sein, ob das Objekt ein- oder ausgeschaltet, ob sich die Maus darüber befindet oder ob die Maus geklickt wird. In jedem
Zustand kann das Objekt mglw. anders aussehen. Im Bild sehen Sie ein sog. Kontrollkästchen (die meisten nennen das Checkbox) in einigen
unterschiedlichen Darstellungen:
Nur Buttons, Checkboxen und Radiobuttons können einen Status haben. Die folgende Tabelle enthält alle dabei verfügbaren Stati:
Wert | Konstante | Verwendung | Bemerkungen |
-1 | kStateInvalid | - | Zustand fehlerhaft oder unbekannt |
0 | kStateNormal | Button | Normalzustand |
1 | kStateOver | Maus über dem Objekt | |
2 | kStateDown | Mausklick | |
3 | kStateNormalOn | Checkbox, Radiobutton | Normalzustand eingeschaltet |
4 | kStateNormalOff | Normalzustand ausgeschaltet | |
5 | kStateOverOn | Maus über dem eingeschalteten Objekt | |
6 | kStateOverOff | Maus über dem ausgeschalteten Objekt | |
7 | kStateDownOn | Mausklick eines eingeschalteten Objektes | |
8 | kStateDownOff | Mausklick eines abgeschalteten Objektes | |
0 | kStateFirst | - | Sinnvoll für Schleifen |
8 | kStateLast |
Interaktive Elemente können auf folgende Ereignisse reagieren:
Wert | Konstante | Bemerkungen |
-1 | kNoEvt | Kein Ereignis |
0 | kAnyEvt | beliebiges Ereignis |
1 | kMouseUpEvt | InDesign®-Standard |
2 | kMouseDownEvt | |
3 | kMouseEnterEvt | |
4 | kMouseExitEvt | |
5 | kOnFocusEvt | |
6 | kOnBlurEvt | |
7 | kOpenEvt | Siehe hier |
8 | kCloseEvt | |
9 | kVisibleEvt | |
10 | kInvisibleEvt | |
11 | kActivateEvt | |
12 | kCalculateEvt | |
13 | kFormatEvt | |
14 | kKeystrokeEvt | |
15 | kValidateEvt |
Interaktive Elemente können im exportierten interaktiven PDF verschiedene Optionen bekommen. Im unteren Teil der Palette Schaltflächen und Formulare (s.o) können diese Optionen eingestellt werden.
Eine ganze Reihe wichiger Optionen, die von PDF-Viewern wie Adobe Acrobat verwendet werden, können in InDesign® aber nicht eingestellt werden. Als Workaround legen wir diese Daten in Rahmen-Etiketten ab. comet_pdf kann diese Eigenschaften lesen und im Ziel-Dokument setzen. Um die Werte zu setzen, öffnen Sie die Palette Rahmen-Etiketten und wählen die gewünschte Formular-Fläche aus. Mit dem +-Button der Palette können Sie neue Eigenschaften festlegen. Die entsprechenden Beschreibungen finden sich am Ende der folgenden Tabelle.
Auf PDFs, von direkt aus InDesign® exportiert werden, haben diese Einstellungen keinen Einfluß.
Die folgende Tabelle zeigt alle von set_pdf_option und get_pdf_option unterstützten Optionen. Die als Workaround implmentierten Rahmen-Etiketten können zusätzlich mit Hilfe der Palette Rahmen-Etiketten (Spalte 4 der Tabelle) editiert werden.
Wert | Konstante | Typ | Bemerkung |
0 | kPDFPrintVisible | bool (0 | 1) |
Sichtbarkeit. Default ist überall sichtbar bis v4.2 R33133 0 : nicht im Druck sonst : überall sichtbar ab v4.2 R33134 0: nicht im Druck 1 : überall sichtbar 2 : hidden 3 : noview Leider behandelt InDesign® die Sichtbarkeit lediglich als bool-Wert und kann daher nur die Werte 0 und 1 unterstützen. Statt 2 oder 3 wird hier automatisch der Wert 0 (nicht im Druck) gesetzt. Um die Sichtbarkeit eines interaktiven Feldes im PDF von comet_pdf auf hidden oder no view zu setzen, muß der Wert direkt von comet_pdf gesetzt werden. |
1 | kPDFRequired | Muß-Feld der PDF-Datei | |
2 | kPDFPassword | Eingaben in diesen Feldern werden als Bullet-Punkte oder Sternchen dargestellt. | |
3 | kPDFReadonly | Nur lesbar | |
4 | kPDFMultiline | Mehrzeiliger Text | |
5 | kPDFScrollable | Wird der Text länger als das Edit, erscheint im PDF ein Scrollbalken. | |
6 | kPDFTaborder | int | Tab-Reihenfolge. In InDesign® setzen Sie die Tab-Reihenfolge über das Menü Objekt -> Interaktiv -> Aktivierungsreihenfolge. |
7 | kPDFArticleorder | int | nicht implementiert |
8 | kPDFFontsize | float | Merkwürdigerweise gibt es aber keine Standard-Möglichkeit, die Schrift selbst festzulegen (siehe kPDFFontname). |
9 | kPDFTooltip | String/char* | Beschreibung. Das wird der Hilfetext im PDF. |
10 | kPDFFieldValue | Schaltflächenwert | |
11 | kPDFCheckedByDefault | int | Standardmäßig ausgewählt |
12 | kPDFFontname | String/char* |
Schrift und Schriftfarbe. Die Schrift wird als kommagetrenntes Paar aus Schriftname und Stil angegeben (z.B. "Arial Narrow, Italic"). Wenn Sie eine Schrift angeben, muß auch eine Schriftgröße (kPDFFontsize) angegeben werden! Die Farbe wird als Name eines existierenden Farbfeldes angegeben. |
13 | kPDFFontcolor | ||
14 | kPDFListAllowMultiple | int |
nur bei Listenfeldern (listbox/i>) Mehrfachauswahl möglich? |
15 | kPDFListEditable | Nur bei Kombinationsfeldern (Combobox) Ist das Feld editierbar, oder, in anderen Worten : Können eigene Werte eingetragen werden? |
|
16 | kPDFListSort | nur bei Listenfeldern Liste vor der Anzeige sortieren? | |
17 | kPDFListValues | StringList | nur bei Listenfeldern Werte der Liste |
18 | kPDFDefaultValue | String/char* | Der Wert wird beim Öffnen des Dokumentes und nach dem Zurücksetzen der Formularfelder gezeigt. |
30 | kPDFFieldName | String/char* |
Name des Feldes. Die Namen müssen eindeutig sein. Nur Radio-Buttons, die zur gleichen Gruppe gehören sollen, bekommen den selben Namen. Der Name kann in Javascripten verwendet werden, um das Formularfeld zu adressieren. this.getField ('name'); |
Von Rahmen-Eitketten unterstützte Werte. Die 4. Spalte beschreibt Schlüssel und Wert der Etiketten. | |||
19 | kPDFUnionSelect | int |
priint_FormField_UnionSelect Ist der Wert gleich 1, werden Buttons mit dem gleichen Schaltflächenwert (kPDFFieldValue) gleichzeitig ausgewählt. |
20 | kPDRichText | int |
priint_FormField_RichText Textformatierung erlaubt. Die Angabe ist nur in Textfeldern erlaubt und als Textfarbe muss eine RGB-Farbe angegeben sein. |
21 | kPDFMaxChar | int |
priint_FormField_MaxChar Erlaubte Maximalzahl von Zeichen im Textfeld, 0 für beliebige Anzahl. |
22 | kPDFCalcOrder | int |
priint_FormField_CalcOrder >= 0 Berechnungsreihenfolge der Felder. Der Wert wird nur verwendet, wenn das Formfeld eine Berechnung macht (kCalculateEvt). Default ist 10 plus die maximale CalcOrder der Seite. |
23 | kPDFSpellCheck | int |
priint_FormField_SpellCheck Rechtschreibeprüfung im Textfeld aktivieren. |
24 | kPDFCaption | String/char* |
priint_FormField_Caption Beschriftung von Pushbuttons |
25 | kPDFCaptionRollover | String/char* |
priint_FormField_CaptionRollover Beschriftung von Pushbuttons bei Maus-Rollovers. Die Angabe wird von Acrobat ignoriert. |
26 | kPDFCaptionDown | String/char* |
priint_FormField_CaptionDown Beschriftung von Pushbuttons bei Mausklicks. Die Angabe wird von Acrobat ignoriert. |
27 | kPDFFileSelect | int |
priint_FormField_FileSelect Hier die offizielle Beschreibung von Adobe : Allows the user to enter a file path as the field’s value when a file is submitted along with the form. This option is available only when Scroll Long Text is the only selected option in the Options tab. Aber damit das funktioniert, müssen Sie Javascripte schreiben. Mehr Informationen dazu finden Sie im Internet, wir unterstützen diese Fähigkeit nicht weiter. |
28 | kPDFBorderStyle | String/char* |
priint_FormField_BorderStyle Aussehen des Rahmens von Pushbuttons, Checkboxen und Radiobuttons. Farbe und Stärke der Kante werden aus den Einstellungen des InDesign®-Objektes übernommen. Beachten Sie bitte, dass Formfelder nur ganzzahligen Rahmenstärken haben können. Bei anderen Einstellungen wird die Rahmenstärke entsprechend aufgerundet. Die Angaben dashed kann um zwei int-Zahlen erweitert werden : Die Länge der Striche und die Länge der Lücken in Punkten. Wir geben diese Info an das PDF weiter - aber Acrobat verwendet trotzdem immer 3, 3. |
29 | kPDFButtonStyle | String/char* |
priint_FormField_ButtonStyle Welches Zeichen wird bei aktivierten Checkboxen und Radionbuttons gezeigt? Als Zeichenfarbe wird die Farbe der Rahmenkante verwendet. |
Aktionen können verschiedene Aufgaben erledigen. Hier eine vollständige Liste aller Aufgaben, die Aktionen übernehmen können.
Wert | Konstante | Beschreibung | Bemerkungen |
1 | kGoToAnchor | Gehe zu Ziel | |
2 | kGoToFirstPage | Gehe zu erster Seite | |
3 | kGoToLastPage | Gehe zu letzter Seite | |
4 | kGoToNextPage | Gehe zu nächster Seite | |
5 | kGoToPreviousPage | Gehe zu voriger Seite | |
6 | kGoToURL | Gehe zu URL | |
7 | kShowHideFields | Schaltflächen einblenden/ausblenden | |
8 | kSound | Audio | |
9 | kMovie | Video | |
10 | kAnimation | Animation | Nur Liquid-HTML5 und SWF |
11 | kGoToPage | Gehe zu Seite | |
12 | kSwitchToMSOState | Gehe zu Status | |
13 | kSwitchToNextMSOState | Gehe zu nächster Ansicht | |
14 | kSwitchToPrevMSOState | Gehe zu voriger Ansicht | |
21 | kResetForm | Formular zurücksetzen | Nur PDF |
15 | kGoToNextView | Gehe zu nächster Ansicht | |
16 | kGoToPreviousView | Gehe zu voriger Ansicht | |
17 | kOpenFile | Datei öffnen | |
19 | kPrintForm | Formular drucken | |
20 | kSubmitForm | Formular senden | |
18 | kViewZoom | Ansichtszoom | |
22 | kExecJavascript | Javascript ausführen | siehe hier |
Es gibt in InDesign® offenbar keine Möglichkeit, PDFs auf Dokumentereignisse wie Neuberechnung der Felder oder ähnliches vorzubereiten. Das betrifft sowohl die Oberfläche als auch das SDK zur Entwicklung von Plugins. Damit Sie Javascript-Implementierungen auch in InDesign® anlegen können, haben wir das Rahmen-Etikett priint_FormField_Actions eingeführt: Öffnen Sie die dazu Palette Rahmen-Etiketten. Dort können Sie mit Hilfe des +-Buttons neue Schlüssel/Werte-Paare anlegen. Geben Sie dem neuen Eintrag den Schlüsselnamen priint_FormField_Actions. Im Wert-Feld tragen Sie die Aktion(en) inkl. des Javascripts ein.
Die Syntax zur Definition einer Aktion ist wie folgt:
event-id task-id "what ever you want"
Es sind beliebig viele Aktionen möglich. Die Aktionen werden in der Reihenfolge ihrer Definition ausgeführt. Hier finden Sie ein Doku der Acrobat JavaScript APIs von Adobe.
Bitte beachten Sie, dass die entsprechenden Funktionen unter InDesign® keine Wirkung haben.
Das Beispiel zeigt eine Alert-Box, wenn ein Button geklickt wurde.
1 := event kMouseUpEvt
22 := task kExecJavascript
priint_FormField_Actions
1 22 "app.alert ('Hallo Paul');"
Berechne den Wert eines Feldes als Summe der Werte anderer Felder.
12 := event kCalculateEvt
22 := task kExecJavascript
priint_FormField_Actions
12 22 "event.value = this.getField ('t1').value + this.getField ('t2').value + this.getField ('t3').value;"
Es werden zwei Aktionen definiert : Berechne die in einem Preis enthaltene Mehrwertsteuer von 19% und stelle das Ergebnis mit zwei Nachkommastellen dar.
12 := event kCalculateEvt
13 := event kFormatEvt
22 := task kExecJavascript
priint_FormField_Actions
12 22 "event.value = this.getField ('t6').value - this.getField ('t6').value / 1.19"
13 22 "event.value = Number (event.value).toFixed(2);"
Es gibt in InDesign® offenbar keine Möglichkeit, Formfelder mit einem Defaulteintrag zu versehen. Damit Sie die entsprechenden Einstellungen auch in InDesign® vornehmen können, haben wir das Rahmen-Etikett priint_FormField_DefaultValue einegführt: Öffnen Sie die dazu Palette Rahmen-Etiketten. Dort können Sie mit Hilfe des +-Buttons neue Schlüssel/Werte-Paare anlegen. Geben Sie dem neuen Eintrag den Schlüsselnamen priint_FormField_DefaultValue und tragenSie den gewünschten Default ein.
Achtung: Bei Kombinations- und Listenfeldern ist sehr wichtig, dass der Default (in genau der gegebenen Schreibweise) auch in den Listenwerten vorkommt. Nicht existierende Defaults von Listenwerten führen zum Abbruch von comet_pdf bei der PDF-Erstellung!
int interactive::is_multistate(ItemRef frameRef)
Hat ein Rahmen ein Multistate-Objekt?
Name | Typ | Default | Beschreibung |
Return | int | 0 : Nein 1 : Ja. Das Objekt ist entweder selbst ein Multistate oder Teil eines Multistates. |
|
frameRef | ItemRef | - | Gültige Rahmen- oder Objektreferenz |
int interactive::is_formfield(ItemRef frameRef)
Hat ein Rahmen ein interactives Objekt (das aber kein Multistate ist)?
Als Formfelder werden alle interaktiven Objekte bezeichnet, die KEIN Statusobjekt (Multistate) sind.
Name | Typ | Default | Beschreibung |
Return | int | 0 : Nein 1 : Ja. Das Objekt ist entweder selbst ein Formfeld oder Teil eines Formfeldes. |
|
frameRef | ItemRef | - | Gültige Rahmen- oder Objektreferenz |
static int interactive::create(
ItemRef resref,
ItemRef frameRef,
int type = 2,
char* name = 0,
int rmvAddits = 0)
Erzeuge ein neues interaktives Objekt aus einem existierenden Rahmen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
resref | ItemRef | - | Bei erfolgreicher Ausführung enthält die Variable das neu erzeugte Objekt 0 : Ergebnis ignorieren sonst : allokiertes ItemRef |
frameRef | ItemRef | - | Rahmen, der in ein interaktives Objekt konvertiert werden soll. 0 : Aktueller Skriptrahmen |
type | int | kTextfield | Objekttyp, siehe hier |
name | String/char* | 0 | Name des neuen Objektes
Die Namen interaktiver Felder müssen eindeutig sein!
Um eindeutige Namen zu erzeugen, können Sie beispielsweise die Rahmen-UID verwenden:
sprintf (name, "UID%d", item::getint (frameRef)); |
rmvAddits | int | 0 | In Radiobuttons und Checkboxen erzeugt InDesign® automatisch einen schwarzen Haken bzw. Punkt für den aktiven
Status. Sieht nur so B aus. Sollen wir das wieder rauslöschen? 0 : Nein 1 : Ja, weg damit Die Option wird unter comet_pdf ignoriert. |
Erzeuge ein Button aus dem aktuellen Rahmen (oder - unter comet_pdf - dem Rahmen mit der UID 227). Klickt man den Button, wird eine Nachricht gezeigt.
#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); ItemRef mso = item::alloc (); ItemRef action = item::alloc ();
if (system::version () == -1) item::define (fr, 0, 227); else item::define (fr, 0, item::getint (gFrame));
interactive::create (mso, fr, kPushbutton, "123"); interactive::set_pdf_option (fr, kPDFCaption, "My Button"); interactive::set_pdf_option (fr, kPDFCaptionRollover, "My Button Rollover"); interactive::set_pdf_option (fr, kPDFCaptionDown, "My Button Down");
if (system::version () == -1) { interactive::add_action (fr, kMouseUpEvt, kExecJavascript, action); interactive::set_task_data (fr, action, "app.alert('Hallo Paul');"); } else { // Take care to take the *mso* in this case! frame::set_script_tag (mso, "1 22 \"app.alert ('Hallo Paul');\"", "priint_FormField_Actions"); }
return 0;
static int interactive::create_multistate(
ItemRef resref,
ItemList states,
char* name = 0)
Erzeuge ein neues Objektstatus-Objekt aus einer Liste von Rahmen. Im Unterschied zu interactive::create kann mit dieser Funktion ein Statusobjekt mit mehreren Zuständen in einem Schritt erzeugt werden.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
resref | ItemRef | - | Bei erfolgreicher Ausführung enthält die Variable das neu erzeugte Objekt 0 : Ergebnis ignorieren sonst : allokiertes ItemRef |
states | ItemList | - | Liste der Rahmen, die die Zustände des Objektes bilden sollen |
name | String/char* | 0 | Name des neuen Objektes, darf 0 oder "" sein. |
Erzeuge aus den ausgewählten Rahmen ein neues Status-Objekt. Die Rahmen werden zuvor an der linken, oberen Ecke ihrer BoundingBox ausgerichtet.
int main () { ItemList frames = itemlist::selected (); ItemList states = itemlist::alloc (); ItemRef mso = item::alloc (); ItemRef fr = item::alloc (); int i; float l, t, r, b;
if (gRun > 1) return 0;
if (itemlist::length (frames) == 0) { showmessage ("Please select one or more frames and try again."); return 0; }
if (itemlist::length (frames) > 1) { itemlist::bbox (frames, &l, &t, &r, &b); for (i = 0; i < itemlist::length (frames); i++) { itemlist::get (frames, fr, i); frame::moveto (fr, l, t); } }
interactive::create_multistate (mso, frames, "myname");
return 0; }
static int interactive::resolve(
ItemRef frameRef,
int state = -1,
int doRmv = 0,
ItemList resultList = 0)
Auflösen eines interaktiven Objektes. Die folgende Tabelle beschreibt, wie die Status-Rahmen der interaktiven Objekte beim Auflösen des Objektes oder eines Status behandelt werden:
Einzelstatus - Status >= 0 | Alles - Status kStateInvalid | |||
Objekttyp | Ohne Löschen | Mit Löschen | Ohne Löschen | Mit Löschen |
Multistate | Gelöste Rahmen bleiben im Dokument stehen | Gelöste Rahmen werden gelöscht | Alle Rahmen des Multistates werden zu normalen Dokumentrahmen. Wirkt wie der Menübefehl Flyout Objektstatus -> Alle Status als Objekte freigeben. | Das interaktive Objekt und alle seine Status-Rahmen werden gelöscht. |
Buttons, Checkboxen, Radiobuttons | Nur die Rahmen des aktiven Status bleiben erhalten. Alles andere wird gelöscht. Wirkt wie das Button In Objekt konvertieren der Palette Schaltflächen und Formulare. | |||
Textfelder, Listenfelder, Comboboxen, Unterschriften | Keine Wirkung | Der Rahmen, der das interaktive Objekt gebildet hat, ist jetzt wieder ein normaler Rahmen. |
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
state | int | kStateInvalid | Was soll aufgelöst werden? Die Funktion unterscheidet zwischen verschienden Typen interaktiver Objekte, siehe dazu die obige Tabelle. Der Status kStateNormal von Buttons und kStateNormalOn und kStateNormalOff von Radiobuttons und Checkboxen können nicht einzeln aufgelöst werden. Unter comet_pdf hat der Parameter keine Wirkung. |
doRmv | int | 0 | Gelöste Rahmen löschen? 0 : Nein 1 : Ja über die Wirkung des Parameters siehe obige Tabelle. Unter comet_pdf hat der Parameter keine Wirkung. |
outItems | ItemList | 0 | Liste der gelösten und noch existierenden Rahmen. Die Liste darf 0 sein. Ist sie nicht 0, muss sie
mit itemlist::alloc erzeugt worden sein. Unter comet_pdf wird der Parameter ignoriert. |
static int interactive::get(
ItemRef frameRef,
ItemRef out_mso,
int* out_state)
Suche das interaktive Objekt eines Rahmens. Das können Statusobjekte, Buttons, Textedits, ... sein. Wird ein Objekt gefunden, kann mit item::get_class der Typ des interktiven Elementes ermittelt werden.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode 1244 : Der Rahmen hat kein interaktive Elternobjekt |
|
frameRef | ItemRef | - | Gültige Rahmenreferenz 0 : aktueller Skriptrahmen |
out_mso | ItemRef | - | Allokierter ItemRef für das gefundene interaktive Objekt |
out_state | int* | 0 | In welchem Status des interaktiven Objektes befindet sich frameRef? Der Wert ist nur bei fehlerfreier Ausführung der Funktion
definiert. In comet_pdf hat der Status immer den Wert -1. kStateInvalid frameRef ist selbst ein interaktives Objekt sonst : Status, in dem sich der Rahmen befindet, siehe hier |
int main () { ItemRef mso = item::alloc (); int state;
interactive::get (gFrame, mso, &state); showmessage ("MSO : %d\nState : %d\n", item::getint (mso), state);
return 0; }
static int interactive::set_pdf_option(
ItemRef frameRef,
int type,
int value)
PDF-Option eines interaktiven Objektes setzen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
typ | int | - | Welche Option soll geändert werden, siehe hier |
value | int, float, String/char* | - | Neuer Wert der Option. Der Datentyp des Werte ist vom Typ abhängig, siehe hier. Falsche Datentypen der Werte können zu Fehlern bei der Skriptverarbeitung führen! |
#include "internal/types.h"
int main () { ItemRef mso = item::alloc (); ItemRef fr = item::alloc (); int ival; char sval [512];
interactive::create (mso, gFrame, kTextfield, "Paul 1");
interactive::set_pdf_option (gFrame, kPDFTooltip, "Helpless, helpless, helpless"); interactive::get_pdf_option (gFrame, kPDFTooltip, sval, 511); wlog ("", "Tooltip (%s)\n", sval);
interactive::set_pdf_option (gFrame, kPDFCheckedByDefault, 1); interactive::get_pdf_option (gFrame, kPDFCheckedByDefault, &ival); wlog ("", "Checked by default (%d)\n", ival);
interactive::set_pdf_option (gFrame, kPDFFieldValue, "höpöhöpö"); interactive::get_pdf_option (gFrame, kPDFFieldValue, sval, 511); wlog ("", "Field value (%s)\n", sval);
interactive::set_pdf_option (gFrame, 12, "Geogrotesque,Regular"); interactive::get_pdf_option (gFrame, 12, sval, 511); wlog ("", "Font (%s)\n", sval);
interactive::set_pdf_option (gFrame, 13, "Seitenkopf"); interactive::get_pdf_option (gFrame, 13, sval, 511); wlog ("", "Color (%s)\n", sval);
return 0; }
static int interactive::get_pdf_option(
ItemRef frameRef,
int type,
int* value)
PDF-Option eines interaktiven Objektes erfragen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
typ | int | - | Welche Option soll erfragt werden, siehe hier |
value | int*, float*, String/char* | - | Aktueller Wert der Option. Der Datentyp des Werte ist vom Typ abhängig, siehe hier. Falsche Datentypen der Werte können zu Fehlern bei der Skriptverarbeitung führen! |
maxlen | int | -1 | Maximallänge, nur bei Werten vom Typ char* |
#include "internal/types.h"
int main () { ItemRef mso = item::alloc (); ItemRef fr = item::alloc (); int ival; char sval [512];
interactive::create (mso, gFrame, kTextfield, "Paul 1");
interactive::set_pdf_option (gFrame, kPDFTooltip, "Helpless, helpless, helpless"); interactive::get_pdf_option (gFrame, kPDFTooltip, sval, 511); wlog ("", "Tooltip (%s)\n", sval);
interactive::set_pdf_option (gFrame, kPDFCheckedByDefault, 1); interactive::get_pdf_option (gFrame, kPDFCheckedByDefault, &ival); wlog ("", "Checked by default (%d)\n", ival);
interactive::set_pdf_option (gFrame, kPDFFieldValue, "höpöhöpö"); interactive::get_pdf_option (gFrame, kPDFFieldValue, sval, 511); wlog ("", "Field value (%s)\n", sval);
interactive::set_pdf_option (gFrame, 12, "Geogrotesque"); interactive::get_pdf_option (gFrame, 12, sval, 511); wlog ("", "Font (%s)\n", sval);
interactive::set_pdf_option (gFrame, 13, "Seitenkopf"); interactive::get_pdf_option (gFrame, 13, sval, 511); wlog ("", "Color (%s)\n", sval);
return 0; }
static int interactive::get_frames(
ItemRef frameRef,
ItemList resultList,
int state = -1)
Ermittle alle Status-Objekte (Rahmen oder Gruppen) eines interaktiven Objektes. In welchem Status eines interaktiven Objektes sich ein bestimmter Rahmen befindet, erfahren Sie mit Hilfe der Funktion get.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
resultList | ItemList | - | Ergebnisliste. Die Liste muss mit itemlist::alloc initianlisiert worden sein. Bestehende Listeneinträge werden aus der Liste entfernt. |
state | int | kStateInvalid | Von welchem Status des Objektes sollen die Rahmen ermittelt werden? kStateInvalid : Alle sonst : siehe hier |
static int interactive::add_frame(
ItemRef frameRef,
ItemRef addThis,
int state = -1,
int replace = 0)
Hinzufügen eines Rahmens zu einem Status eines interaktiven Objektes.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen Achtung: Beim Ersetzen von Status-Rahmen kann mglw. genau dieser Rahmen gelöscht werden. Es wird daher empfohlen, die Funktion immer direkt mit der Referenz des interaktiven Objektes aufzurufen. Verwenden Sie dazu die Funktion interactive::get. |
addThis | ItemRef | - | Gültige Rahmen- oder Gruppenreferenz |
state | int | kStateInvalid | Zu welchem Status des Objektes soll der Rahmen hinzugefügt werden? Die Funktion unterscheidet zwischen verschienden Klassen interaktiver Objekte: Objektstatus (Multistate): -1 : Einen weiteren Status anlegen sonst : 0-basierter Index des Status. Ist der Index zu groß, wird ein neuer Status angefügt. Buttons, Radio-Buttons, Checkboxen: Gültiger Status, siehe hier. Andere: Statusrahmen können nicht geändert werden |
replace | int | 0 | Alte Rahmen im Zielstatus löschen? 0 : Nein 1 : Ja |
Konvertiere den aktuellen Rahmen in ein Statusobjekt, ändere dessen erstes in den Rahmen mit der UID 2024 und füge eine weiteren Status (Rahmen mit der UID 1828) hinzu:
#include "internal/types.h"
int main () { ItemRef red = item::alloc (); ItemRef green = item::alloc (); ItemRef iref = item::alloc ();
item::define (red, 0, 1828); item::define (green, 0, 2024);
interactive::create (iref, gFrame, kMultistate, "hallo paul", 1);
interactive::add_frame (iref, green, 0, 1); interactive::add_frame (iref, red, 2, 1);
return 0; }
Konvertiere den aktuellen Rahmen in eine Checkbox (ohne den Haken, den InDesign® sonst einfügt.) Ändere dann das Erscheinungsbild:
#include "internal/types.h"
int main ()
{ ItemRef red = item::alloc (); ItemRef green = item::alloc (); ItemRef iref = item::alloc ();
item::define (red, 0, 1828); item::define (green, 0, 2024);
res = interactive::create (iref, gFrame, kCheckbox, "hallo paul", 1);
res = interactive::add_frame (iref, green, kStateNormalOn, 1); res = interactive::add_frame (iref, red, kStateOverOn, 1); return 0; }
static int interactive::get_actions(
ItemRef frameRef,
int eventType,
ItemList actions)
Hole die Liste (aller) Aktionen eines interaktiven Objektes. Die Einträge der Liste können in den anderen Funktionen des Moduls verwendet werden.
Statusobjekte (Multistates) können keine Aktionen ausführen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
eventType | int | - | Das Ereignis, dessen Aktionen Sie wollen, siehe Tabelle Ereignisse. |
actions | ItemList | - | Allokierte Liste für die Ergebnisse oder 0. Bei Statusobjekten (Multiframes) und normalen Rahmen ist die Ergebnisliste leer. |
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc (); int e, i;
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kAnyEvt, actions); wlog ("", "%d actions in object %d\n", itemlist::length (actions),   item::getint (gFrame));
for (e = kMouseUpEvt; e < kValidateEvt; e++) { interactive::get_actions (gFrame, e, actions); wlog ("", " %d actions of type %d in object %d\n",   itemlist::length (actions),   e,   item::getint (gFrame)); }
interactive::get_actions (gFrame, kAnyEvt, actions); for (i = 0; i < itemlist::length (actions); i++) { itemlist::get (actions, action, i); wlog ("", "Action %d with UID %d is triggered by event %d\n", i, item::getint (action), interactive::get_event (gFrame, action)); }
return 0; }
static int interactive::count_actions(ItemRef frameRef = 0)
Wieviel Aktionen hat ein interaktives Objekt? Die Funktion gibt die Anzahl der Aktionen unabhängig vom Ereignis, das die Aktionen auslöst, zurück. Um die Anzahl der Aktionen für ein bestimmtes Ereignis zu ermittlen, verwenden Sie die Funktion get_actions für das gewünscht Ereignis und fragen dann nach der Länge der Ergebnisliste.
Name | Typ | Default | Beschreibung |
Return | int | Anzahl der Ereignisse. | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
static int interactive::get_nth_action(
ItemRef frameRef,
int index,
ItemRef outRef = 0)
Hole eine Aktion eines interaktiven Elementes. Die Aktion wird durch den Index in der Liste aller Aktionen des Objektes bestimmt.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
index | int | - | Index der Aktion in der Liste aller Aktionen des Objektes |
outRef | ItemRef | 0 | Variable für das Ergebnis 0 : ignorieren sonst : allokierter ItemRef für die Aktion |
#include "internal/types.h"
int main () { ItemRef action = item::alloc (); int a, A;
if (gRun > 1) return 0;
A = interactive::count_actions(gFrame); for (a = 0; a < A; a++) { interactive::get_nth_action (gFrame, a, action); wlog ("", "Action %d : triggered by %d, task %d\n", a, interactive::get_event (gFrame, action), interactive::get_task (gFrame, action)); }
return 0; }
static int interactive::add_action(
ItemRef frameRef,
int eventType,
int task,
ItemRef out_actionRef = 0)
Hinzufügen einer Aktion an ein interaktives Objekt. Die neue Aktion wird mit den InDesign®-Defaultparametern angelegt. Um die Parameter der Aktion zu setzen, verwenden Sie die Funktion set_task_data mit der Aktion out_actionRef.
Beachten Sie bitte, dass InDesign® Aktionen, die ein Ziel haben können (z.B. Filme oder Töne) immer als erstes verarbeitet und deshalb auch entsprechend weit oben in die Aktionenliste einfügt. Neu hinzugefügte Aktionen müssen daher also nicht zwangsläufig am Ende der Aktionenliste erscheinen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
eventType | int | - | Ereignis, das die Aktion auslösen soll, siehe hier |
task | int | - | Aufgabe der Aktion, die ausgeführt werden soll, siehe hier. Mit set_task_data können die Aktionsparamenter gesetzt werden. |
out_actionRef | ItemRef | 0 | ItemRef für die neu angelegte Aktion 0 : Rückgabe ignorieren sonst: Allokierter ItemRef |
#include "internal/types.h"
int main () { ItemRef action = item::alloc ();
if (gRun > 1) return 0;
interactive::add_action (gFrame, kMouseUpEvt, kOpenFile, action);
return 0; }
Die Funktion erzeugt erst eine "Formular senden"-Aktion, danach eine "Sound"-Aktion. In der Aktionenliste wird die Sound-Aktion aber immer vor der "Formular senden"-Aktion erscheinen.
#include "internal/types.h"
int main () { ItemRef action = item::alloc ();
if (gRun > 1) return 0;
interactive::add_action (gFrame, kMouseUpEvt, kSubmitForm, action); interactive::add_action (gFrame, kMouseUpEvt, kSound, action);
return 0; }
static int interactive::move_action(
ItemRef frameRef,
ItemRef actionRef,
int eventType,
int newPosition)
Verschiebe eine Aktion eines interaktiven Elementes.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | gültige Aktion des interaktiven Objektes von frameRef |
eventType | int | - | Welchem Ereignis soll die Aktion zugeordnet werden? Siehe hier. 0 : Ereignis beibehalten |
newPosition | int | - | Neue Position der Aktion in der Aktionenliste des Ereignisses. Ist der Index >= der Länge dieser Liste, wird die Aktion ans Ende verschoben. |
Die letzte MouseExit-Aktion soll als erste ausgeführt werden.
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc ();
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kMouseExitEvt, actions); if (itemlist::length (actions) > 0) { itemlist::get (actions, action, itemlist::length (actions)-1); interactive::move_action(0, action, 0, 0); }
return 0; }
static int interactive::remove_action(ItemRef frameRef, ItemRef actionRef)
Entferne eine Aktion eines interaktiven Elementes.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | gültige Aktion des interaktiven Objektes von frameRef |
Lösche die letzte MouseExit-Aktion.
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc ();
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kMouseExitEvt, actions); if (itemlist::length (actions) > 0) { itemlist::get (actions, action, itemlist::length (actions)-1); interactive::remove_action(0, action); }
return 0; }
static int interactive::get_event(ItemRef frameRef, ItemRef actionRef)
Welches Ereignis löst die Aktion eines interaktiven Objektes aus?
Name | Typ | Default | Beschreibung |
Return | int | siehe Tabelle Ereignisse. | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | Gültige Aktion des interaktiven Objektes von frameRef. |
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc (); int e, i;
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kAnyEvt, actions); wlog ("", "%d actions in object %d\n", itemlist::length (actions),   item::getint (gFrame));
for (e = kMouseUpEvt; e < kValidateEvt; e++) { interactive::get_actions (gFrame, e, actions); wlog ("", " %d actions of type %d in object %d\n",   itemlist::length (actions),   e,   item::getint (gFrame)); }
interactive::get_actions (gFrame, kAnyEvt, actions); for (i = 0; i < itemlist::length (actions); i++) { itemlist::get (actions, action, i); wlog ("", "Action %d with UID %d is triggered by event %d\n", i, item::getint (action), interactive::get_event (gFrame, action)); }
return 0; }
static int interactive::get_task(ItemRef frameRef, ItemRef actionRef)
Welche Aufgabe führt eine Aktion aus?
Name | Typ | Default | Beschreibung |
Return | int | Aufgabe der Aktion, siehe Tabelle Aufgaben von Aktionen. | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | Gültige Aktion des interaktiven Objektes von frameRef. |
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc (); int e, i;
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kAnyEvt, actions); wlog ("", "%d actions in object %d\n", itemlist::length (actions),   item::getint (gFrame));
for (e = kMouseUpEvt; e < kValidateEvt; e++) { interactive::get_actions (gFrame, e, actions); wlog ("", " %d actions of type %d in object %d\n",   itemlist::length (actions),   e,   item::getint (gFrame)); }
interactive::get_actions (gFrame, kAnyEvt, actions); for (i = 0; i < itemlist::length (actions); i++) { itemlist::get (actions, action, i); wlog ("", "Action %d with UID %d is triggered by event %d, task %d\n", i, item::getint (action), interactive::get_event (gFrame, action), interactive::get_task (gFrame, action)); }
return 0; }
static int interactive::get_task_data(
ItemRef frameRef,
ItemRef actionRef,
int* eventType = 0,
char* eventName = 0,
int* enabled = 0,
char* sval1 = 0,
char* sval2 = 0,
char* sval3 = 0,
char* sval4 = 0,
char* sval5 = 0,
int* ival1 = 0,
int* ival2 = 0,
int* ival3 = 0,
int* ival4 = 0,
int* ival5 = 0,
IDTypeList* lval = 0)
Ermittle die Parameter einer Aufgabe einer Aktion eines interaktiven Objektes.
Die Parameter sval1-5, ival1-5 und lval werden in Abhängigkeit von der Aufgabe der Aktion gefüllt. Die Variablen dürfen 0 sein. Die folgende Tabelle gibt an, welche Rückgabewerte für welchen Aktionstyp gefüllt werden können.
Aufgabe | Parameter | Beschreibung |
kGoToAnchor (1) : Gehe zu Ziel | sval1 | vollständiger Pfad der Zieldatei |
sval2 | Name des Ankers | |
sval3 | PDF-Name des Ankers | |
ival1 | Zoom | |
ival2 | UID des Ankers | |
kGoToFirstPage (2) : Gehe zu erster Seite | ival1 | Zoom |
kGoToLastPage (3) : Gehe zu letzter Seite | ||
kGoToNextPage (4) : Gehe zu nächster Seite | ||
kGoToPreviousPage (5) : Gehe zu voriger Seite | ||
kGoToURL (6) : Gehe zu URL | sval1 | URL der Zielseite |
kShowHideFields (7) : Schaltflächen einblenden/ausblenden | lval | Die Liste wird gefüllt mit Schaltflächen, die ein- und ausgeschaltet werden : id1 : UID des Buttons id2 : 0 (unsichtbar), 1 (sichtbar) |
kSound (8) : Audio | ival1 | Operation 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
ival2 | Sound-UID | |
ival3 | Lautstärke (0-100) | |
ival4 | Synchron? (0, 1) | |
ival5 | Automatisch wiederholen? (0, 1) | |
kMovie (9) : Video | ival1 | Operation 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
ival2 | Movie-UID | |
ival3 | NavigationPointID | |
kAnimation (10) : Animation | ival1 | Operation<> 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
ival2 | UID der Animation | |
ival3 | Automatisch wiederholen? (0, 1) | |
kGoToPage (11) : Gehe zu Seite | ival1 | 1-basierte Seitennummer |
ival2 | Zoom | |
kSwitchToMSOState (12) : Gehe zu Status kSwitchToNextMSOState (13) : Gehe zu nächstem Status kSwitchToPrevMSOState (14) : Gehe zu vorigem Status |
ival1 | UID des Status |
ival2 | 0-basierter Index des Status | |
ival3 | switchToPriorStateOnRollOff (0, 1) | |
ival4 | loopAtBeginningOrEnd (0, 1) | |
kGoToNextView (15) : Gehe zu nächster Ansicht kGoToPreviousView (16) : Gehe zu voriger Ansicht |
keine weiteren Parameter | |
kOpenFile (17) : Datei öffnen | sval1 | Vollständiger Pfad der Datei |
kViewZoom (18) : Ansichtszoom | ival1 | Zoom |
kPrintForm (19) : Formular drucken | keine weiteren Angaben nötig | |
kSubmitForm (20) : Formular senden | sval1 | Ziel-URL zum Senden |
kResetForm (21) : Formular zurücksetzen | keine weiteren Angaben nötig | |
kExecJavascript (22) : JavaScript ausführen | Siehe hier |
ID | Name |
0 | Zoom übernehmen |
1 | OriginalGröße |
2 | In Fenster einpassen |
3 | Breite einpassen |
4 | Sichtbaren Bereich einpassen |
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | Gültige Aktion des interaktiven Objektes von frameRef. |
eventType | int* | 0 | auslösendes Ereignis der Aufgabe 0 : ignorieren |
eventName | String/char* | 0 | Name der Aufgabe 0 : ignorieren |
enabled | int* | 0 | Ist die Aufgabe aktiv? 0 : nein 1 : ja |
sval1-5 | String/char* | 0 | siehe oben |
ival1-5 | int* | 0 | siehe oben |
lval | IDTypeList | 0 | siehe oben |
#include "internal/types.h"
int main () { ItemList actions = itemlist::alloc (); ItemRef action = item::alloc (); int i, etype, eenabled; char ename [512], sval1 [512];
if (gRun > 1) return 0;
interactive::get_actions (gFrame, kMouseUpEvt, actions); for (i = 0; i < itemlist::length (actions); i++) { itemlist::get (actions, action, i); if (interactive::get_task (gFrame, action) == kSubmitForm) { interactive::get_task_data (gFrame, action, &etype, ename, &eenabled, sval1); wlog ("", "Submit '%s' (%d, '%s', %d)\n", sval1, etype, ename, eenabled); } }
return 0; }
static int interactive::set_task_data(
ItemRef frameRef,
ItemRef actionRef,
...)
Ändern der Parameter einer Aufgabe eines interaktiven Objektes. Die Funktionsparameter sind jeweils abhängig von der Aufgabe der Aktion. Achten Sie bitte darauf, jeweils die in der Funktionsbeschreibung angegeben Parameter zu verwenden. Mit get_task können Sie die Aufgabe einer Aktion ermitteln.
Die Funktion kann die aktuelle Dokumentauswahl ändern.
Die Parameter des Aufrufes hängen von der Aufgabe der Aktion ab. Die folgende Tabelle beschreibt die Funktionsparameter in Abhängigkeit von der Aufgabe der Aktion:
Aufgabe | Parameter | Beschreibung |
kGoToAnchor (1) : Gehe zu Ziel | String/char* | vollständiger Pfad der Zieldatei |
int | UID des Ankers | |
int | Zoom | |
kGoToFirstPage (2) : Gehe zu erster Seite | int | Zoom |
kGoToLastPage (3) : Gehe zu letzter Seite | ||
kGoToNextPage (4) : Gehe zu nächster Seite | ||
kGoToPreviousPage (5) : Gehe zu voriger Seite | ||
kGoToURL (6) : Gehe zu URL | String/char* | URL der Zielseite |
kShowHideFields (7) : Schaltflächen einblenden/ausblenden | IDTypeList | Liste von Schaltflächen-UIDs und deren Sichtbarkeit id1 : UID des Buttons id2 : 0 (unsichtbar), 1 (sichtbar), 2 (unverändert lassen) |
kSound (8) : Audio | int | Operation 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
int | Sound-UID | |
int | Lautstärke (0-100) | |
int | Synchron? (0, 1) | |
int | Automatisch wiederholen? (0, 1) | |
kMovie (9) : Video | int | Operation 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
int | Movie-UID | |
int | NavigationPointID | |
kAnimation (10) : Animation | int | Operation 0 : Abspielen 1 : Stop 2 : Pause 3 : Rückspulen |
int | UID der Animation | |
int | Automatisch wiederholen? (0, 1) | |
kGoToPage (11) : Gehe zu Seite | int | 1-basierte Seitennummer |
int | Zoom | |
kSwitchToMSOState (12) : Gehe zu Status kSwitchToNextMSOState (13) : Gehe zu nächstem Status kSwitchToPrevMSOState (14) : Gehe zu vorigem Status |
int | UID des Status |
int | 0-basierter Index des Status | |
int | switchToPriorStateOnRollOff (0, 1) | |
int | loopAtBeginningOrEnd (0, 1) | |
kGoToNextView (15) : Gehe zu nächster Ansicht kGoToPreviousView (16) : Gehe zu voriger Ansicht |
keine weiteren Parameter | |
kOpenFile (17) : Datei öffnen | String/char* | Vollständiger Pfad der Datei |
kViewZoom (18) : Ansichtszoom | int | Zoom |
kPrintForm (19) : Formular drucken | keine weiteren Parameter | |
kSubmitForm (20) : Formular senden | String/char* | Ziel-URL für das Senden des Formulares |
kResetForm (21) : Formular zurücksetzen | keine weiteren Parameter | |
kExecJavascript (22) : JavaScript ausführen | String/char* | Javascript-Quelltext. Weitere Informationen finden Sie hier. |
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
frameRef | ItemRef | - | Gültige Rahmenreferenz. Ist frameRef kein interaktives Objekt, wird, wenn möglich, dessen interaktives Objekt verwendet. 0 : Aktueller Skriptrahmen |
actionRef | ItemRef | - | Gültige Aktion des interaktiven Objektes von frameRef. |
... | ... | - | Die weiteren Funktionparameter hängen von der Aufgabe der Aktion ab, siehe obige Tabelle. |
#include "internal/types.h"
int main () { ItemRef action = item::alloc (); int result;
if (gRun > 1) return 0;
result = interactive::add_action (gFrame, kMouseUpEvt, kSubmitForm, action); wlog ("", "add action : %d\n", result);
result = interactive::set_task_data (gFrame, action, "ftp://www.sawadee.th/hallo.pdf"); wlog ("", "set_task_data : %d\n", result);
return 0; }
Anlegen einer Javascript-Aktion. Beim Anklicken eines Buttons wird der aktuell ausgewählte Eintrag des Popup-Menüs (Combobox) C3 angezeigt. Die Zeilentrenner im Displaytext sind hier mit \\013 kodiert.
#include "internal/types.h" int main () { ItemRef fr = item::alloc (); ItemRef action = item::alloc (); char * js = "var field = this.getField('C3');\ var selectedIndex = field.currentValueIndices;\ var exportValue = field.getItemAt(selectedIndex);\ var displayValue = field.getItemAt(selectedIndex, false);\ app.alert ('Index : ' + selectedIndex + '\\013Exportvalue : \"' + exportValue + '\"\\013DisplayValue : ' + displayValue + '\"');\ ";
item::define (fr, 0, 221); interactive::add_action (fr, kMouseUpEvt, kExecJavascript, action); interactive::set_task_data (fr, action, js);
return 0; }
Alphabetic index HTML hierarchy of classes or Java