Das geht, ist aber mit etwas Aufwand verbunden.
(Beispiel-Link am Ende...)
1)
Beim Öffnen der Maske ziehst Du Dir alle möglichen "Werte-Paare" zusammen,
z.B. über DbLookups oder WQO
Alternativ (so machen wir es), liegen die Möglichkeiten schon irgendwo zusammengepackt vor. z.B in einem Konfigurationsdokument.
Du hast dann eine Liste in der Art:
Oberkategorie_1=Unterkategorie_1_1~Unterkategorie_1_2~Unterkategorie_1_3~... :
Oberkategorie_2=Unterkategorie_2_1~Unterkategorie_2_2~Unterkategorie_2_3~...
z.B:
"Dänemark=Bornholm~Djursland~Falster~Färöer~Fünen~Jütland~Langeland":
"Deutschland=Allgäu~Bodensee~Eifel~Franken~Hamburg" :
...
2)
Aus den jeweiligen Oberkategorien füllst Du Deine 1. Dialogliste.
In diesem Fall wären das die Länder.
@Word( _ValueList; "="; 1);
Dieses Feld heißt im Beispiel "Line_1_Keyword"
3.)
Über eine Pass Thru HTML - computed value schreibst Du über @Formeln dynamisch ein Javascript-Array in Deine Webseite, welches genau die Unterkategorien enthält, beginnend bei [1].
arrModels[1] = "Bornholm;Djursland;Falster;Färöer;Fünen;Jütland;Langeland";
arrModels[2] = "Allgäu;Bodensee;Eifel;Franken;Hamburg" ;
Hier eine Beispiel-@Formel, die Dir aus Deiner Wertepaare-Liste das Javascript-Array schreibt:
_SecondCategory := @Word( _ValueList; "="; 2);
_Elem := @Elements( _SecondCategory);
_n := 0;
@NewLine +
"<script language=JavaScript>" + @NewLine + @NewLine +
"var arrModels = new Array(); " + @NewLine +
@Implode(
@Transform( _SecondCategory; "x"; @Do(
_n := _n + 1;
("arrModels[" + @Text(_n) + "] = \"" + @ReplaceSubstring( x ; " ~" : "~ " : "~"; ";") +
"\";"))
); @NewLine) +
@NewLine +
"</script>" + @NewLine
4.)
Du baust ein Feld in die Maske
In diesem Beispiel ""Line_1_Depand"
Text, editable, Default vaue: Line_1_Depand,
vollständig hidden in Notes und im Web
5.)
Du baust ein Feld in die Maske
In diesem Beispiel "Line_2_Keyword"
Text, editable,
vollständig sichtbar in Notes und im Web,
ABER mit dem HTML-Tag "type=hidden"
6.
Man benötigt weiterhin eine computed value, Pass thru HTML:
"<select name=\"Line_1_Depand\" class=\"searchfield\">" + @NewLine +
"<option value=\"all\">alle</option>" + @NewLine +
"<option value=\"\"></option>" + @NewLine +
"</select>"
7.
Die Maske darf NICHT die Eigenschaft haben: "generate HTML for all fields"
8.)
onchange="ChooseMake":
Im onChange Event des 1. Dialogs (= Line_1_Keyword)
(geht übrigens genau so gut mit Checkboxen und Radiobuttons)
rufst Du diese nette JS-Funktion auf:
function ChooseMake(boolHeadContained)
{
var arrModelList;
var objModelSelection;
var objMakeSelection;
var intOffSetForAll;
var i;
if (document.forms[0].Line_1_Depand == null) {
return;
}
objModelSelection = document.forms[0].Line_1_Depand;
objMakeSelection = document.forms[0].Line_1_Keyword;
objModelSelection.selectedIndex = 0;
objModelSelection.options.length = 1;
if (boolHeadContained)
intOffsetForAll = 1;
else
intOffsetForAll = 0;
if (objMakeSelection.selectedIndex >= intOffsetForAll){
arrModelList = (arrModels[objMakeSelection.selectedIndex + 1 -
intOffsetForAll]).split(';');
for (i = 0; i < arrModelList.length; i++){
objModelSelection.options.length = i+2;
objModelSelection.options[i+1].value = arrModelList
objModelSelection.options[i+1].text = arrModelList
}
}
if( document.forms[0].Line_2_Keyword.value != "" ) {
objModelSelection.value = document.forms[0].Line_2_Keyword.value
}
} // ChooseMake
9.)
Diese Funktion gehört dementsprechend dann in den JSHeader der Maske.
Das war's dann.
Kein ganz leichter Spaß, aber es funktioniert gut.
Das Ergebnis exakt dieser Methode siehst Du z.B unter:
http://www.privatevillas.de/fewo.htm
Und wenn Du nach dieser Aktion dringend Urlaub brauchst,
bist Du dort auch gleich richtig...
Viel Erfolg,
Gruß,
Uwe