Seite 1 von 1

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 31.03.2010, 14:11
von Erasor
Hallo zusammen!

Leider bin ich bisher nicht fündig geworden...

Ich möchte ein pdf-Formular erzeugen, das ich an unsere Vertreter (In- und Ausland) verteilen kann, damit sie uns vollstädig ausgefüllte Angebotsanfragen zurückschicken.
Da nicht alle Vertreter Deutsch sprechen, soll das Formular sowohl in Deutsch als auch in Englisch zur Verfügung stehen. Bis hierher habe ich schon diverse Anleitungen und Lösungsvorschläge gefunden...

Aber meine Idee geht ein wenig weiter. Da wir sehr viele Informationen sammeln müssen und diese sich hin und wieder ändern, würde ich sowohl die Beschriftung der Felder wie auch die Inhalte der Comboboxen gern über eine Datenbank befüllen. Leider stoße ich dabei an meine Grenzen - könnt ihr mir helfen?

Aufbau der Datenbank, so wie ich mir das vorstelle:[indent]Tabelle Feldnamen  <-- Quelle für alle Feldnamen
FeldID;Deutsch;Englisch
1;Vertreter;representative
2;Kunde;customer
3;Land;country
[/indent][indent]Tabelle Land <-- Eintragsquelle für die Combobox Land
LandID;Deutsch;Englisch
1;Deutschland;Germany
2;Italien;Italy
3;Frankreich;France
[/indent]
Vielen Dank und liebe Grüße

Alex

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 01.04.2010, 19:16
von FileAffairs
Hallo Erasor,

auch wenn das prinzipiell möglich ist (via dynamische properties) bedeutet eine Datenbankanbindung auch, dass Du eine lokale ODBC Konfiguration auf den Arbeitsplatzrechnern benötigst. Kannst Du das sicherstellen?

Lieben Gruß
Maruan Sahyoun | fileaffairs.de

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 01.04.2010, 19:55
von Erasor
Oh - nein, das kann ich natürlich nicht garantieren.

Weißt du denn eine elegante Lösung für so viele Felder und Feldinhalte?

Danke und liebe Grüße

Erasor

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 01.04.2010, 20:10
von FileAffairs
Hallo Erasor,

eine Möglichkeit wäre einen XML Datensatz mit den Texten zu laden und dagegen zu scripten (entweder einen je Sprache oder auch einen mit allen Sprachen) oder per XLIF zu arbeiten http://blogs.adobe.com/formfeed/2010/02 ... xliff.html

Gruß
Maruan Sahyoun | fileaffairs.de

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 14.04.2010, 07:51
von Erasor
Hmmm - ich muss gestehen, dass ich duch das Beispiel nicht wirklich durchblicke. Ich habe aber auch noch eine andere Idee, die ich gern mal auf Herz und Nieren prüfen lassen würde...

Was wäre mit einer nur im Layoutmodus sichtbaren Tabelle, in der alle Informationen zu einem Feld in der Datei hinterlegt sind. Der Aufbau der Spalten wäre in der einfachsten Ausführung so etwas wie:
  • Feldname (hier steht der Name des Feldes)
  • Deutsch (hier steht die deutsche Beschreibung)
  • Englisch (hier steht die englische Beschreibung)
Als komplexe Version vielleicht so:
  • Feldname (hier steht der Name des Feldes)
  • Deutsch (hier steht die deutsche Beschreibung)
  • Englisch (hier steht die englische Beschreibung)
  • Quickinfo Deutsch
  • Quickinfo Englisch
  • Fehlermeldung Deutsch
  • Fehlermeldung Englisch
  • etc.
Leider bin ich in Java eine völlige Niete, habe aber eine ganze Zeit lang viel in Delphi programmiert. Vielleicht ist hier ja jemand, der folgenden pseudo-Code in funktionierendes Java umbauen kann:

Code: Alles auswählen

for i := 0 to AnzahlDerObjekteAufDemFormular -1 do begin
  vObjektname := Objekt[i].name;

  for j := 0 to AnzahlZeilenInDerTabelle -1 do begin
    if Tabelle.Zeile[i].Spalte1.value = vObjektname then begin
      if vSprache = "Deutsch" then begin
        Objekt[i].beschreibung := Tabelle.Zeile[i].Spalte2.value;
      end else begin
        Objekt[i].beschreibung := Tabelle.Zeile[i].Spalte3.value;
      end;
      break;
    end;
  end;
end;

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 21.04.2010, 08:18
von Erasor
Hallo zusammen,

hier noch eine Ergänzung. Ich habe ein Codefragment gefunden, mit dem ich durch die einzelnen Objekte auf dem Formular wandern kann:

Code: Alles auswählen

for (var i = 0; i < xfa.host.numPages; i++)
{
  var oFields = xfa.layout.pageContent(i; "field");
  var nodesLength = oFields.length;
  for (var j = 0; j < nodesLength; j++)
  {
    var oItem = oFields.item(j);
    oItem.caption = "neue Caption";
  }
}
Ich habe den Code noch nicht probiert, aber wenn man nun noch an der Stelle >>oItem.caption = "neue Caption";<< eine Schleife mit Zugriff auf oben genannte Tabelle einbaut, denke ich, wäre mein Problem gelöst. Könnt ihr mir helfen?

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 21.04.2010, 08:45
von walde

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 23.04.2010, 06:06
von Erasor
Hallo zusammen!

Walde, danke für die Beispiele! Aber ich hab mich nun so in diese Idee vertieft, dass sie mir leider nicht mehr weiter helfen.
DENN *trommelwirbel* ICH HABS HINBEKOMMEN! :)

Ich habe mein Formular mal etwas verkleinert und hier angehangen. Vielleicht hilfts ja jemandem...

Eine Frage habe ich jedoch noch:

Code: Alles auswählen

function ChangeFormLanguage(iLanguageID)
{
//    xfa.form.Anfrageformular.unsichtbar.presence = "visible";
    
    for (var i = 0; i < xfa.host.numPages; i++){
        var oFields = xfa.layout.pageContent(i);
        var nodesLength = oFields.length;
        for (var j = 0; j < nodesLength; j++){
            var oItem = oFields.item(j);
            if (oItem.parent.name == "Uebersetzungstabelle"){
                //Jetzt weiß ich, wie das Feld heißt, das ich suchen muss! Name muss wie oItem.name lauten
                for (var k = 0; k < xfa.host.numPages; k++){
                    var oFields2 = xfa.layout.pageContent(k);
                    var nodesLength2 = oFields2.length;
                    for (var l = 0; l < nodesLength2; l++){
                        var oItem2 = oFields2.item(l);
                        if (oItem2.name == oItem.name & oItem2.parent.name != "Uebersetzungstabelle"){
                            ChangeFieldCaption(oItem2, oItem2.name, iLanguageID);
                        }
                    }
                }
            }
        }
    }
    Dropdowns.Dropdownfuellen(iLanguageID);
    
//    xfa.form.Anfrageformular.unsichtbar.presence = "hidden";
}
Wenn ich in dieser Funktion die Kommentare bei den presence-Eigenschaften weg nehme, funktioniert mein Script nicht mehr... Habt ihr eine Idee, warum?

Grüße

Alex

mehrsprachliches Formular mit dynamischen Feldnamen und Comboboxen

Verfasst: 04.05.2010, 14:00
von Erasor
Ich habe inzwischen herausgefunden, dass ich über mein Script gar nicht auf ausgeblendete Objekt zugreifen kann. Ich tippe darauf, dass sie aus Performancegründen nur verfügbar sind, wenn sie auch auf dem Bildschirm zu sehen sind.
Einer meiner Lösungsversuche war, die Höhe jeder Zeile der Tabellen so niedrig zu machen, dass sie nicht mehr sichtbar ist - nur finde ich dafür keine passende Eigenschaft die auch etwas bewirkt...

Leider funktioniert das zeitweise Ein- und Ausblenden auch nicht...

Habt ihr vielleicht noch eine Idee?

Danke!

Erasor