Dialog mit zwei Eingabefeldern und zwei datenbankgestützten Popupmenüs.

Dialog mit zwei Eingabefeldern und zwei datenbankgestützten Popupmenüs. Die Felder können einzeln unsichtbar gemacht werden. Der Dialog wird dann automatisch neu gestaltet.

Name Typ Default Beschreibung
Return int   0 : Abbruch

sonst : Okay
str1 String oder char* - Starttext des ersten Eingabefeldes, bei Okay aktueller Inhalt des ersten Eingabefeldes
label1 String oder char* - Kurze Beschriftung des ersten Eingabefeldes
enabled1 int - Ist das erste Feld sichtbar (>0) oder soll es unsichtbar (0) sein?
str2 String oder char* - Starttext des zweiten Eingabefeldes, bei Okay aktueller Inhalt des zweiten Eingabefeldes
label2, String oder char* - Kurze Beschriftung des zweiten Eingabefeldes
enabled2, int - Ist das zweite Feld sichtbar (>0) oder soll es unsichtbar (0) sein?
dbc DBC - Datenbankverbindung, über die das Popup geladen wird
selectStmt String oder char* - Select zum Laden der Popupeinträge, liefert ID und Name, z.B select id, name, value from domain where id > 0
nullEntry String oder char* - Name des Popupeintrag für ID 0. Leerstring verhindert den Eintrag
mValue int* - Beim Aufbau wird versucht, den Eintrag mit dem übergebenen Wert im Popup auszuwählen (ID oder Index bei label3 mit '@INDEX'). Nach Dialog-Ende mit "Okay" enthält die Variable die ID (oder den Index) des ausgewählten Eintrages.
label3 char* - Kurze Beschriftung des Popupmenüs. Enthält der Name an beliebiger Stelle die Kennung '@INDEX' wird der Inhalt von mValue als Menü-Index (0-basiert) und nicht als ID ausgewertet. mValue == 2 ist dann also der dritte Eintrag im Popup, nicht der (erste) Eintrag mit der ID 2.
enabled3 int - Ist das Popup sichtbar (>0) oder soll es unsichtbar (0) sein?
title String oder char* "" Fenstertitel
okay String oder char* "OK" Beschriftung des OK-Buttons
cancel String oder char* "Abbrechen" Beschriftung des Abbrechen-Buttons
maxchars1 int 0 Maximale Länge der Eingabe im ersten Feldes. Die Variable str muss für die abschließende 0 mind. ein Byte größer sein als dieser Wert.

0 - beliebige viele Zeichen
maxchars2 int 0 Maximale Länge der Eingabe im zweiten Feld. Die Variable str muss für die abschließende 0 mind. ein Byte größer sein als dieser Wert.

0 - beliebige viele Zeichen
popupEntries IDTypeList 0 Liste von Einträgen für das Popup. Ist der Parameter ungleich 0, werden die Angaben in dbc, selectStmt und nullEntry ignoriert und das Popup wird mit den ID1/String-Werten dieser Liste gefüllt.
⇨ Zweites Popup-Menü.

Die Einträge werden bei Auswahländerungen im ersten Popup neu geladen (ab CS4). Dabei werden alle <ID> der Anweisung durch die aktuelle ID im ersten Popup ersetzt.
selectStmtPopup2 String oder char* 0 Anweisung zum Füllen des zweiten Popupmenüs. Die Anweisung muss jeweils eine Zahl und einen String liefern. Die Zahl ist die ID des Eintrages, der String der angezeigte Text.

nullentryPopup2 String oder char* 0 Nulleintrag für das zweite Popup. Ist die Angabe nicht leer, wird der Eintrag als erster in das Popup eingetragen.
valuePopup2 int* 0 Beim Aufbau des Dialoges wird versucht, den Popupentrag mit dieser ID auszuwählen.

Enthält labelPopup2 die Markierung @INDEX, wird der Wert als (0-basierter) Index im Menü verwendet. Am Ende des Dialoges enthält die Variable die ID des ausgewählten Eintrages des zweiten Popupmenüs.
labelPopup2 String oder char* - Kurze Beschriftung des Popupmenüs. Enthält der Name an beliebiger Stelle die Kennung '@INDEX' wird der Inhalt von valuePopup2 als Menü-Index (0-basiert) und nicht als ID ausgewertet. valuePopup2 == 2 ist dann also der dritte Eintrag im Popup, nicht der (erste) Eintrag mit der ID 2.
showPopup2 int 0 Soll das zweite Popup gezeigt werden?

0 : Nein
1 : Ja, Popup zeigen
entriesPopup2 IDTypeList 0 Zweites Popup mit Hilfe dieser Liste füllen. Ist die Angabe ungleich 0, werden selectStmtPopup2 und nullentryPopup2 ignoriert und das zweite Popup wird mit den ID1/String-Werten dieser Liste gefüllt.
Preconditions
#include "internal/types.h"

#include "internal/types.h"
int main () { String s1 = string::alloc("Text 1"); String s2 = string::alloc("Text 2"); int id = 3; // will be 'δ' from lli int ok; int enable1 = 1; int enable2 = 1; int enable3 = 1; IDTypeList lli = idtypelist::alloc ();
idtypelist::append (lli, 1, 0, 0, "α"); idtypelist::append (lli, 2, 0, 0, "β"); idtypelist::append (lli, 3, 0, 0, "γ"); idtypelist::append (lli, 4, 0, 0, "δ"); idtypelist::append (lli, 5, 0, 0, "ε");
ok = askstring2 (   s1, "This is label 1", enable1,   s2, "This is label 2", enable2,   0, 0, "",   &id, "Popupmenu-Label", enable3,   "My title", "-Okay-", "-Cancel-",   0, 0,   lli); if (!ok) return 1;
showmessage ("1: <%s>\r2: <%s>\r3: %d", s1, s2, id);
string::release(s1); string::release(s2); idtypelist::release (lli);
return 0; }

Das Skript ist ein gültiges Bibliotheken-Import-Skript (Panelstatement 124, ). Für den Importdialog werden zuerst alle Bibliotheken eines Ordners gesammelt und dann im Popup des Dialog angezeigt.

#include "internal/types.h"
int main () { char t1 [412]; char t2 [412]; int id = 0; int ok; char destPath[4000]; char path [4000]; char ext [256]; IDTypeList ids = idtypelist::alloc (); int i, ix = 0;
strcpy (t1, ""); strcpy (t2, ""); strcpy (destPath, "$DESKTOP/MyLibraries"); for (i = 0; i < file::count (destPath); i++) { strcpy (path, file::get_nth (destPath, i)); file::extender (ext, path); if (strcmp (ext, "indl") == 0) { idtypelist::append (ids, ix, 0, 0, path); ix = ix +1; } }
ok = askstring2 (   t1, "", 0, // Text1   t2, "", 0, // Text2   0, "", "", // Popup über DB   &id, "Bibliothken", 1,   "Bibliothek importieren", "", "",   -1, -1, // Beschränkung Text1 und Text2   ids); if (!ok) return 0;
strcpy (path, idtype::stringid (idtypelist::get (ids, id)));
library::open (path);
return 0; }

Zeige zwei Popupmenüs im Dialog. Das erste Menü enthält alle Templates, die Untertemplates haben. Im zweiten Popup werden jeweils die Untertemplates gezeigt.

#include "internal/types.h"
int main () { char t1 [412]; char t2 [412]; int id = 59; int id2 = 0; int ok; char mainTemplates [1024]; char subTemplates [1024];
strcpy (t1, "Text1"); strcpy (t2, "Text2"); strcpy (mainTemplates, "select id, name from pageitems where id > 0 and spreadid < 2"); strcpy (subTemplates, "select id, concat (name, ', Links') from pageitems where id = <ID>"); strcat (subTemplates, " union"); strcat (subTemplates, " select id, concat (name, ', Rechts') from pageitems where spreadid = 3 and leftid = <ID>"); strcat (subTemplates, " union"); strcat (subTemplates, " select id, concat (name, ', Fortsetzung-Links') from pageitems where rightid > 0"); strcat (subTemplates, " and rightid = (select id from pageitems where leftid > 0"); strcat (subTemplates, " and leftid = (select continueid from pageitems where id = <ID>))"); strcat (subTemplates, " select id, concat (name, ', Fortsetzung-Links') from pageitems where rightid > 0"); strcat (subTemplates, " and rightid = (select id from pageitems where leftid > 0"); strcat (subTemplates, " and leftid = (select continueid from pageitems where id = <ID>))"); strcat (subTemplates, " union"); strcat (subTemplates, " select id, concat (name, ', Fortsetzung-Rechts') from pageitems where leftid > 0"); strcat (subTemplates, " and leftid = (select continueid from pageitems where id = <ID>)");
ok = askstring2 (   t1, "Beschriftung Text1", 0, // Text1   t2, "Beschriftung Text2", 0, // Text2   0, mainTemplates, "", // Popup über DB laden   &id, "Templates", 1, // Popup1   "Templates importieren", // Dialog-Titel   "", "", // Buttons   -1, -1, // Längenbeschränkung Text1 und Text2   0, // Popup1 mit dieser Liste füllen   subTemplates, "", &id2, "Subtemplates", 1, 0); // Popup2 if (!ok) return 0;
showmessage ("Popup1 : %d\nPopup2 : %d", id, id2);
return 0; }

Ein Beispiel mit zwei zwei IDType-Listen zum Füllen der Popupmenüs finden Sie unter askpopup2.

 

Seit
1.0.16
Parameter maxchars1 seit Version 1.3.4 (R172)
Parameter maxchars2 seit Version 1.3.4 (R172)
Parameter ab einschließlich popupEntries seit Version 3.2.2 R2364, 19. März 2011 @INDEX seit Version 3.2.2 R2384, 11.04.2011

Verfügbarkeit
priint:comet InDesign® Plug-Ins, comet_pdf

Alphabetic index HTML hierarchy of classes or Java