PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eforms: Textfeld mit festgelegter Anzahl an Zeichen



Soldberg
27-12-2013, 15:12
Hallo,

ich versuche gerade ein Formular mit dem Paket eforms zu erstellen. Nun möchte ich Textfelder, in die Zahlen mit einer gewissen Anzahl an Stellen eingetragen werden. Das kann ich mit dem Parameter \MaxLen festlegen. Nun möchte ich dem Benutzer dies durch eine gestrichelte Linie auch anzeigen. Beispielsweise ein Feld _ _ _ _ _ für eine Zahl mit 5 Stellen. 5 einzelne Textboxen halte ich hier für ungeeignet, da der Benutzer dann 5 mal mit Tab das Feld wechseln muss. Stattdessen hätte ich gerne eine Textbox eben mit 5 Unterstrichen. Alternativ: 5 Textboxen, sobald eine voll ist wechselt das aktive Feld zur nächsten Box.

Hier der Code wie weit ich bisher gekommen bin:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[pdftex]{eforms}
\usepackage{calc}
\usepackage{color}
\newcounter{nameCount}
\setcounter{nameCount}{0}
\newcommand{\FieldFixedNrDigits}[1]{\textField[\S{U} \textSize{12}\MaxLen{#1}]{Feld \thenameCount}{{0.1in} * #1}{12bp} \addtocounter{nameCount}{1}}

\begin{document}
Testformular

Nr1: \FieldFixedNrDigits{4}
Nr2: \FieldFixedNrDigits{6}
Nr3: \FieldFixedNrDigits{8}
\end{document}

Hat vielleicht jemand eine Idee wie ich das hinbekommen könnte?

Viele Grüße
Soldberg

Soldberg
29-12-2013, 13:44
Falls diese Problemstellung irgendwann nochmal jemanden interessiert, unten ein Lösungsansatz, wenn auch kein besonders schöner.

Zunächst versuche ich die Länge der Textbox zu berechnen als ein fester Wert plus weiteres Offset pro Zeichen das man eingeben kann. Das gefällt mir nicht sonderlich :( Die im \textfield angegebene Breite, bei mir "{0.1in} * #1", scheint aber nicht zu passen, genauso wenig war ich mit \widthof erfolgreich. Nachdem die Box schon gezeichnet wurde gehe ich mit hspace zurück an den Anfang der Box, um dann mit rule die Unterstriche zu zeichnen.

Die Striche für die Zahlen sind länger als das Eingabefeld, sonst hat man aber denke ich zu wenig Platz falls man das Formular ausdrucken und von Hand ausfüllen will. Ob der Platz so reicht um es von Hand auszufüllen, muss ich noch testen.


\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[pdftex]{eforms}
\usepackage{calc}
\usepackage{color}
\usepackage{forloop}

\newcounter{nameCount}
\setcounter{nameCount}{0}
\newcounter{iter}
\newcounter{iterMax}
\newlength\boxLength

\newlength{\somelength}

\newcommand{\FieldFixedNrDigits}[1]{\textField[\S{D} \BC{1 1 1} \textSize{12}\MaxLen{#1}]{Feld \thenameCount}{{0.1in} * #1}{12bp} \addtocounter{nameCount}{1}
\setcounter{iterMax}{#1}
\addtocounter{iterMax}{1}
\setlength\boxLength{0.3in}
\forloop{iter}{1}{\value{iter} < \theiterMax}%
{%
\addtolength\boxLength{0.15in}
}
\hspace*{-\the\boxLength}
\forloop{iter}{1}{\value{iter} < \theiterMax}%
{%
\rule[-1.5mm]{0.08in}{1pt}
}
}

\begin{document}
Testformular

Nr1: \FieldFixedNrDigits{4}
Nr2: \FieldFixedNrDigits{6}
Nr3: \FieldFixedNrDigits{8}

\end{document}