Antworten auf deine Fragen:
Neues Thema erstellen

Dynamische Kombinationsfelder in Acrobat / InDesign erstellen

K

kaptajn slots

Guest

Hallo und einen Gruß in die Runde, dies ist mein erster Beitrag hier, ich hoffe ich bin im richtigen Forum gelandet.

Ich habe ein Zeugnisformular für eine Schule mit InDesign erstellt und weiterbearbeitet in Acrobat. In diesem Formular sollen nun je nach ausgewähltem Wahlpflichtfach die entsprechenden Untermenüs eingeblendet werden. Ich habe das mit Optionsfeldern auch hinbekommen, siehe dieses .

Ich möchte diese Funktionalität aber nicht über raumgreifende Optionsfelder erreichen, sondern mit einem Kombinationsfeld, so dass die Auswahl des Wahlpflichtfachs in einer Liste vorgenommen wird.
Nur bekomme ich das nicht hin. Man kann zwar auch in den Optionen fürs Kombinationsfeld Schaltflächen ein- und ausblenden, aber leider nicht speziell für die einzelnen Listenelemente.
: /

Hat jemand eine Idee, wie ich weiterkommen kann?
 

Design & Layout

helge07

Aktives Mitglied

Die Aufgabe lässt sich über einen Evet-Handler lösen, der als "Tatsten-Eingabeskript" im Kombinationsfeld eingehängt wird. : --> Kombobox-Eigenschaften --> Format --> Benutzerdefiniertes Tatsten-Eingabeskript

Eine Beispiel-Implementierung für einen vereinfachten Fall mit drei Auswahlmöglichkeiten
habe ich Dir hier bereitgestellt:

Hier der Code des Handlers:
---------------------------------------------------
if (!event.willCommit) {

var SF1 = this.getField("Button1");
var SF2 = this.getField("Button2");
var SF3 = this.getField("Button3");

var OF1 = this.getField("Optionsfeld1");
var OF2 = this.getField("Optionsfeld2");
var OF3 = this.getField("Optionsfeld3");

SF1.display=display.hidden;
SF2.display=display.hidden;
SF3.display=display.hidden;
OF1.display=display.hidden;
OF2.display=display.hidden;
OF3.display=display.hidden;

switch (event.change) {

case "Fach 1":
SF1.display=display.visible;
OF1.display=display.visible;

break;
case "Fach 2":

SF2.display=display.visible;
OF2.display=display.visible;
break;
case "Fach 3":
SF3.display=display.visible;
OF3.display=display.visible;
break;

}
}
 
K

kaptajn slots

Guest

Hallo Helge07,
vielen Dank für die kompetente und ausführliche Hilfe, mit einer so raschen Antwort habe ich nicht gerechnet!
Das sieht schon ziemlich genau so aus wie ich mir das vorgestellt habe und es bringt mich hoffentlich weiter. Ich werde jetzt versuchen das für meinen Bedarf anzupassen und werde mich in Kürze hier wieder melden, hoffentlich mit einer Erfolgsmeldung ...

:danke:
 
K

kaptajn slots

Guest

Jetzt bin ich schon ein ganzes Stück weitergekommen, es funktioniert aber leider noch nicht ganz. Die Kombinationsliste ist angelegt und die zum Listenpunkt passende Schaltfläche wird wie gewünscht angezeigt, siehe .
Leider klappt das mit den dazugehörigen Optionsboxen noch nicht:
Es werden immer 6 Optionsboxen angezeigt, für das Fach Informatik sollen beispielsweise aber nur 3 Optionsboxen angezeigt werden.
Ich hoffe es handelt sich um einen relativ einfachen Syntaxfehler, ich bin des Programmierens nicht sonderlich mächtig. Ich habe auch schon einige online-Validatoren ausprobiert, das hat mich aber ebenfalls nicht weitergebracht.
Es findet sich z. B. auch ein Umlaut in "FRANZÖSISCH" wieder, ausserdem einige Leerzeichen, vielleicht ist das schon Fehler genug?

Würde mich sehr freuen, wenn da jemand noch eine Idee zu hat...

Der für die Liste eingegebene Code lautet wie folgt:

if (!event.willCommit) {

var WPF1 = this.getField("s-spanisch");
var WPF2 = this.getField("s-franzoesisch");
var WPF3 = this.getField("s-sport");
var WPF4 = this.getField("s-bewegung");
var WPF5 = this.getField("s-food");
var WPF6 = this.getField("s-schultv");
var WPF7 = this.getField("s-informatik");
var WPF8 = this.getField("s-holzwerkstatt");
var WPF9 = this.getField("s-schulzoo");

var OPT1 = this.getField("opt-spanisch-1", "opt-spanisch-2", "opt-spanisch-3", "opt-spanisch-4", "opt-spanisch-5", "opt-spanisch-6");
var OPT2 = this.getField("opt-franzoesisch-1", "opt-franzoesisch-2", "opt-franzoesisch-3", "opt-franzoesisch-4", "opt-franzoesisch-5", "opt-franzoesisch-6");
var OPT3 = this.getField("opt-sport-1", "opt-sport-2", "opt-sport-3", "opt-sport-4");
var OPT4 = this.getField("opt-bewegung-1", "opt-bewegung-2", "opt-bewegung-3", "opt-bewegung-4", "opt-bewegung-5");
var OPT5 = this.getField("opt-food-1", "opt-food-2", "opt-food-3", "opt-food-4");
var OPT6 = this.getField("opt-schultv-1", "opt-schultv-2", "opt-schultv-3", "opt-schultv-4");
var OPT7 = this.getField("opt-informatik-1", "opt-informatik-2", "opt-informatik-3");
var OPT8 = this.getField("opt-holzwerkstatt-1", "opt-holzwerkstatt-2", "opt-holzwerkstatt-3", "opt-holzwerkstatt-4");
var OPT9 = this.getField("opt-schulzoo-1", "opt-schulzoo-2", "opt-schulzoo-3", "opt-schulzoo-4");


WPF1.display=display.hidden;
WPF2.display=display.hidden;
WPF3.display=display.hidden;
WPF4.display=display.hidden;
WPF5.display=display.hidden;
WPF6.display=display.hidden;
WPF7.display=display.hidden;
WPF8.display=display.hidden;
WPF9.display=display.hidden;

OPT1.display=display.hidden;
OPT2.display=display.hidden;
OPT3.display=display.hidden;
OPT4.display=display.hidden;
OPT5.display=display.hidden;
OPT6.display=display.hidden;
OPT7.display=display.hidden;
OPT8.display=display.hidden;
OPT9.display=display.hidden;



switch (event.change) {

case "SPANISCH":
WPF1.display=display.visible;
OPT1.display=display.visible;
break;

case "FRANZÖSISCH":
WPF2.display=display.visible;
OPT2.display=display.visible;
break;

case "SPORTWETTBEWERBE":
WPF3.display=display.visible;
OPT3.display=display.visible;
break;

case "BEWEGUNG UND GESUNDHEIT":
WPF4.display=display.visible;
OPT4.display=display.visible;
break;

case "FOOD & FUN":
WPF5.display=display.visible;
OPT5.display=display.visible;
break;

case "SCHUL-TV":
WPF6.display=display.visible;
OPT6.display=display.visible;
break;

case "INFORMATIK UND MEDIEN":
WPF7.display=display.visible;
OPT7.display=display.visible;
break;

case "HOLZWERKSTATT":
WPF8.display=display.visible;
OPT8.display=display.visible;
break;

case "SCHULZOO":
WPF9.display=display.visible;
OPT9.display=display.visible;
break;

}
}
 

helge07

Aktives Mitglied

Sorry, ich war 3 Tage unterwegs, daher kommt meine Antwort erst heute:

Deine Lösung ist schon fast korrekt. Folgendes habe ich daran geändert:

1. Da keine weitere Verarbeitung der gewählten Optionen erfolgt,
sondern diese nur ausgedruckt werden, genügen 6 Gruppen mit je 4 Optionsfeldern.
Von diesen werden dann nur immer so viele angezeigt, wie die Selektion
im Kombinationsfeld benötigt.

2. Mit getField() kann man nur je einen Objektnamen mit einer Variablen verknüpfen.

3. Die Deklarationen gehören an den Progamm-Anfang, nicht in den Block
if (!event.willCommit) { ....}

Der Code sieht dann wie folgt aus, das entsprechen geänderte Formular steht hier:



var WPF1 = this.getField("s-spanisch");
........
var WPF9 = this.getField("s-schulzoo");

var opt1 = this.getField("opt_1");
.........
var opt6 = this.getField("opt_6");

if (!event.willCommit) {
WPF1.display=display.hidden;
...................
WPF9.display=display.hidden;

opt1.display=display.hidden;
opt2.display=display.hidden;
opt3.display=display.hidden;
opt4.display=display.hidden;
opt5.display=display.hidden;
opt6.display=display.hidden;

switch (event.change) {
case "SPANISCH":
WPF1.display=display.visible;
opt1.display=display.visible;
opt2.display=display.visible;
opt3.display=display.visible;
opt4.display=display.visible;
opt5.display=display.visible;
opt6.display=display.visible;
break;
case "FRANZÖSISCH":
.......................
break;
case "SPORTWETTBEWERBE":
WPF3.display=display.visible;
opt1.display=display.visible;
opt2.display=display.visible;
opt3.display=display.visible;
opt4.display=display.visible;
break;
case "BEWEGUNG UND GESUNDHEIT":
......................
break;
case "FOOD & FUN":
.......................
break;
case "SCHUL-TV":
...........................
break;
case "INFORMATIK UND MEDIEN":
WPF7.display=display.visible;
OPT1.display=display.visible;
OPT2.display=display.visible;
OPT3.display=display.visible;
break;
case "HOLZWERKSTATT":
......................
break;
case "SCHULZOO":
.....................;
break;
}
}
 
K

kaptajn slots

Guest

Hallo Helge07 und vielen Dank für deine Hilfe, das bringt mich ganz weit nach vorn.

Ich habe noch eine Anzahl solcher Kombinationslisten zu erstellen, aber mit diesem Beispielmenü sollte das hoffentlich kein Problem mehr sein, da sie alle mehr oder weniger nach dem gleichen Schema aufgebaut sind.

Viele Grüße, you just made my day!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.634
Beiträge
1.538.447
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben