PDA

Vollständige Version anzeigen : dynamische Formulare


klaus
18.01.2008, 10:59
Hallo,

ich suche Informationen, wie man sinnvoll ein Aufnahmeformular aufbauen kann.
Es sollte so funktionieren, dass wenn eine Bedingung erfüllt ist, ein Teil des Formulars angezeigt wird, der wiederum eine Option enthält, dass dann einen anderen Formularteil anzeigt.
Es geht darum zu vermeiden, dass Eintragungen in einem großem Formular gemacht werden, wo sie nicht hingehören.
Wer kann mir da evtl. Tips geben.

MfG. Klaus

SHeyer
18.01.2008, 11:08
Das sollte per VBA mit If-Anweisungen zu realisieren sein.
Du kannst im Formular bei dem Ereignis "Beim Laden" die gewünschten Felder ausblenden lassen.

deinFeld.visible=false

dann kommen die If-Anweisungen ins Spiel, wenn 1.Feld=xyz (after update ereignis) dann 2. Feld einblenden, usw.

If deinFeld1=xyz then
deinFeld2.visible=true
end if

klaus
18.01.2008, 14:43
danke für den Hinweis,
diese Idee hatte ich auch schon.
Aber würde dass nicht dazu führen, dass wenn die Frage 1 mit ja beantwortet wird und dann erst bei Frage 4 wieder weitergemacht wird, im Formular ein z.T. großer leerer Raum entsteht, weil die hier befindlichen Felder ausgeblendet sind.
Wenn ich evtl. für jede Frage ein Unterformular anlege, denke ich würde die Eingabe zwar über diesen Weg gut möglich, aber wie stelle ich dann eine Änderung eines bestehenden Datensatz dar?
Ich habe soetwas noch nie gemacht und würde mir gerne erst darüber im klaren ehe ich Arbeit investiere.

MfG. Klaus

achtelpetit
18.01.2008, 16:03
Den leeren Raum (soferne es nur ums nette Aussehen geht) kannst Du vermeiden, wenn Du statt mit "visible" mit "enabled" arbeitest.
Wenn aber solche Abhängigkeiten bestehen würde ich eher mit verschiedenen Formularen arbeiten, aber ich weiß ja nicht worum es überhaupt geht. (Wink mit dem Zaunpfahl)

Thomas2705
18.01.2008, 16:06
Alle Eigenschaften der Formulare und Textfelder lassen sich im code definieren z.B:

text.Height= Wert1
text.left=Wert2
text.top=Wert10

usw.

Damit das Geschreibe der Positionen ein Ende nimmt und nicht zu unübersichtlich wird ist es vielleicht sinnvoll die Fragen zu gruppieren und in Unterformulare zu verpacken die dann individuell positioniert s.o. werden.

Thomas

Thomas2705
18.01.2008, 16:08
Was ist "enabled"?

achtelpetit
18.01.2008, 16:14
enabled = aktiviert
Element ist sichtbar aber hat keine Funktion

klaus
18.01.2008, 17:02
Um es genauer zu beschreiben.
Es soll eine DB zur Auswertung von tatsächlichen Gegebenheiten über ein Formblatt erfolgen (Laptop vor Ort).
Die Grunddaten sollen im 1. Blatt eines Registers aufgenommen werden. Daran schließt sich die Aufnahme von Entwicklungsstufen an die auf den 4 folgenden Registern angelegt werden sollen. Auf dem 5 Register dann eine Zusammenstelltung der Endwerte der 4 Stufen.
In Seite 1 sollen dann je 1 Kontrollkästchen je Entwicklungstufe angelegt sein.
Dabei werden dann die Kästen angekreuzt die als vorhanden erkannt werden.
Dadurch sollen dann die jeweiligen Registerblätter benutzbar werden, die anderen zwar sichtbar, aber nicht benutzbar. Wenn ich jetzt die erste Stufe bearbeite, wird am Anfang zunächst die Frage gestellt, ob ein bestimmter Punkt bearbeitet ist. Wenn ja, gehe zum, Punkt 4 des Fragebogens, wenn nein zum Punkt 2.
Dies soll deshalb geschehen, weil es sich um eine Qualitätsrevision mit evtl. persönlichen Folgen handelt, weshalb Fehleingaben möglichst ausgeschlossen werden sollen.
Andererseits soll die Eingabe auch ansprechend aussehen.

MfG. Klaus

achtelpetit
18.01.2008, 17:15
Wenn "enabled" hier nicht eingesetzt werden soll, könnte man letztlich das ganze Formular dynamisch aufbauen.
Also jedes Steuerelement per VBA and Ort und Stelle rücken und dann sichtbar machen. Wenn das viele Elemente sind, ist das auch viel Arbeit.

lalo
18.01.2008, 18:23
Hallo,

wenn Du unbedingt die Registerblätter die nicht benutzt werden dürfen sichtbar haben willst, dann kommst Du um "Deinobject.enabled = false" nicht herum.
Mach doch das ganze Reisterblatt unsichtbar ! Das geht mit "DasBlattNrx.visible = false".

Wenn Du auf dem 1. Registerblatt ankreuzen willst, was man machen darf / muss, dann müssen zu diesem Zeitpunkt die anderen Registerblätter aber "kaltgestellt" sein und erst beim Ankreuzen darf die Freischaltung erfolgen.

Gruß Bernd

hcscherzer
18.01.2008, 19:02
enabled = aktiviert
Element ist sichtbar aber hat keine Funktion
Das ist aber etwas verwirrend dargestellt. Zur Klarstellung:
Die Eigenschaft .Enabled bewirkt, ob ein Steuerelement den Fokus erhalten (angeklickt werden) kann.
Die Eigenschaft .Locked bewirkt, ob sich die Daten in dem Steuerelement ändern lassen.
Die Eigenschaft .Visible bewirkt, ob ein Steuerelement sichtbar ist oder nicht.

.Locked und .Enabled machen in den allermeisten Fällen nur Sinn, wenn sie gegensätzlich 'gepolt' sind.