Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
TemplateEditor - Controls im Formular gemeinsam anpassen
zurück: Bilder anzeigen im Block, umbenennen, usw. weiter: Einfaches Menue neu Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
06. März 2011, 03:44
Rufname:

TemplateEditor - Controls im Formular gemeinsam anpassen - TemplateEditor - Controls im Formular gemeinsam anpassen

Nach oben
       Version: (keine Angabe möglich)

Hallo zusammen,

wenn man Formulare erstellt, ist das Design der vielen Elemente, aus denen so ein Formular bestehen kann, oft eine der langwierigsten Dinge. Man muß jedes Element anklicken, die Darstellung verändern (für einige Elemente kann man auch mehr als eins gleichzeitig auswählen, aber dann stehen auch nicht immer alle Eigenschaften zur Verfügung) und schauen, ob es so "richtig" aussieht.

Man kann natürlich die Formularvorlagen verwenden oder seit Access 2007 auch die Designs dynamisch zuweisen, in gewissen Grenzen aber auch nur.
Oft will man, um zum Beispiel eine Corporate Identity zu bewahren, in vielen Formularen das gleiche Design anwenden und da helfen die Access-Methoden bisweilen nur bedingt weiter.

Man kann auch die Eigenschaften der Elemente der Formulare per VBA zuweisen, was aber auf die Dauer auch nicht wenig mühsam ist, wenn man es "von Hand" macht. Daher habe ich mir diesen kleinen Template-Editor gebastelt, der ein bißchen so funktioniert wie die Templates von Joomla oder die Access-Design, allerdings begrenzt auf die wichtigsten Formularelemente und ausschließlich auf deren Eigenschaften. Es werden also z.B. keine Formulareinstellungen wie Formularhintergrundfarbe etc. geändert.

Der Template-Editor besteht aus zwei Unterformularen: Links ist die Liste der Controls und ihrer jeweiligen Eigenschaften und Werte, die man diesen zuweisen möchte. Rechts wird ein beliebiges Access-Formular angezeigt, das man mit der Dropdownliste rechts oben ändern kann. Man kann also auch einfach ein Formular aus einer anderen Access-Datenbank importieren, dann steht es auch in dieser Liste und kann hier angezeigt werden.

Unter dieser Kombobox befindet sich eine zweite, mit der man dem Formular eine der erstellten Vorlagen zuweisen kann. Es werden alle Control-Einstellungen, die sich in der Vorlage befinden, auf das angezeigte Formular angewendet. Die Änderungen werden nicht gespeichert, man kann sie mit dem Button "Formular zurücksetzen" wieder entfernen. Am besten importiert man immer ein Formular in den Template-Editor (mit den üblichen Access-Methoden), statt den Template-Editor in die Zieldatenbank einzubauen, denn so kann das ursprüngliche Design des Originalformulars nicht versehentlich überschrieben werden.

Unterhalb der Komboboxen befinden sich zwei Checkboxen für "Platzierung berücksichtigen" und "Gruppen berücksichtigen". Mit "Platzierung" ist die Position des Controls innerhalb des Formulars gemeint. Ist diese Checkbox angehakt, dann wird unterschieden, ob sich das Control im Header, Footer oder Detailbereich befindet, ansonsten nicht. Die Gruppen sind eine weitere Erweiterung, die auch innerhalb dieser drei Bereiche noch eine weitere Unterteilung ermöglichen. Dabei kann jedes Control einer Gruppe zugeordnet werden, deren Formatierung gemeinsam geändert wird. Die Gruppierung kann beliebig mit der Platzierung kombiniert werden, wenn etwa die Platzierung nicht berücksichtigt wird, gelten die Gruppen in allen Sektionen.

Mit dem Button "Vorlage erneut anwenden" kann man die Änderung der Checkboxen im angezeigten Formular anwenden, ohne erneut die Kombobox auswählen zu müssen.

Dann gibt es noch einen Button "Template aus Formular erzeugen". Wenn man nicht jede kleine Einstellung aller Controls eines Formulars erst mühsam in die Templateliste eingeben möchte, dann kann man so für jedes Control des angezeigten Formulars automatisch alle relevanten Einstellungen erzeugen lassen. Dazu schließt man am besten den Template-Editor (das Formular) und öffnet das eigene Formular im Design-Modus. Jetzt kann man sich am grundlegenden Design austoben, wobei man am besten ein Formular erstellt, das von jedem Element nur ein Exemplar enthält, da der Templategenerator alle Controls eines Formulars durchgeht und in der Vorlage speichert. Will man die Platzierung verwenden, dann von jedem (gewünschten) Element in jedem Bereich, in dem das Template später angewendet werden soll, eins (wie im Demoformular "frmDemoGroupsPlaces", bei dem es in jedem der drei Bereiche nur Labels und Textboxen gibt, je zwei in jedem Bereich, da es in jedem Bereich hier zwei Gruppen gibt).

Um die Gruppen zu erzeugen, müssen die Elemente einer bestimmten Namenskonvention folgen. Die Control-Namen müssen mit "ctlGRP" beginnen, und der Gruppenname muß mit "_" abgeschlossen werden, also zum Beispiel "ctlGRPGruppe1_Text1". Der erzeugte Gruppenname ist dann "Gruppe1". Man hätte auch das Tag-Feld dazu verwenden können, aber oft braucht man dies für andere Zwecke, wohingegen der Name ohnehin eindeutig belegt sein muß.

Die Geschichte mit den Gruppen und Platzierungen kann man mit dem Beispielformular "frmDemoGroupsPlaces" und der Vorlage "GruppenPlatzierungen" und verschiedenen Kombinationen der beiden Checkboxen ausprobieren.

Beim Templategenerator ("Template aus Formular erzeugen") werden auch die beiden Checkboxen verwendet. Je nach Einstellung werden die Gruppennamen ausgelesen oder nicht und die Platzierung der Controls ermittelt oder nicht und in die Template-Datensätze geschrieben.

Auf der linken Seite gibt es ebenfalls eine Kombobox zur Auswahl der gewünschten Vorlage, diese enthält immer die bislang vorhandenen Templates in der Template-Tabelle. Um ein neues Template zu erzeugen, kann man entweder den Template-Generator verwenden, oder in diese Kombobox einen neuen Namen eingeben, dann erscheint unten eine leere Liste und man kann nun beginnen, die Einstellungen hier von Hand zu definieren.

Die Eigenschaften müssen von Hand als Text in der korrekten (VBA-)Schreibweise (also englisch) eingegeben werden, weswegen es meist einfacher ist, zu Beginn den Template-Generator zu verwenden, dann hat man schon alle wichtigen Einstellungen und braucht nur noch die zu löschen, die man nicht verändern will. Das kann man mit den Access-Filtern schnell erledigen: Z.B. auf alle Eigenschaften filtern, die mit "Grid" beginnen und dann alle Datensätze markieren (STRG-A) und löschen, Filter wieder herausnehmen usw.
Je kürzer die Liste, desto schneller geht die Zuweisung der Templates später.

Die Werte der einzelnen Eigenschaften werden ebenfalls als String eingegeben, bei True/False-Werten z.B. muß man auch diese Schreibweise verwenden, nicht "Wahr/Falsch", wie Access es automatisch einsetzt (wird im Code automatisch korrigiert). Der Vorteil, daß die Werte immer Strings sind, ist, daß man neben festen Werten auch Funktionen eingeben kann, da die Werte später per Eval-Funktion eingestellt werden. Damit kann man eine Farbe also zum Beispiel auch so definieren:
Code:
RGB(100,200,255)
Es darf bei der Eingabe von Funktionen kein "=" zu Beginn geschrieben werden, und die Schreibweise muß natürlich einen korrekten Wert ergeben. Das sollte man vorher in VBA im Direktfenster einfach ausprobieren, wenn man sich nicht sicher ist. Außerdem ist man auf die Funktionen von Eval beschränkt, das bedeutet, daß man zum Beispiel nicht auf VBA-Variablen zugreifen kann. Dagegen kann man aber ohne weiteres eigene VBA-Funktionen in Standardmodulen als Public definieren und diese dann als Eigenschaftswert eingeben. Ein Beispiel dafür ist im Modul "modCallbacks". Auf diese Weise kann man auch das Template später in der Anwendung noch dynamisch anpassen, etwa um die Hintergrundfarbe der Elemente an die Tageszeit anzupassen (macht keinen Sinn? Na, dann schaut mal das Display eines handelsüblichen Navigators an - Tag/Nachtdarstellung gibt es schon). Das ist nur eine Frage der Phantasie.

Man kann mit dem Template-Editor auch eine Art "Formularbaukasten" erstellen: Da eine Vorlage nicht zwangsläufig alle Elemente eines Formulars enthalten muß, nicht alle Sektionen und nicht alle Gruppen und auch nicht alle Eigenschaften eines Controls, kann man auch nur Teilbereiche eines Formulars mit einer Vorlage verändern. Wenn man etwa in einem eigenen Formular im Template-Editor nur die Rahmenfarbe aller Textboxen und deren Rahmenstärke verändern will, dann kann man eine Vorlage erstellen, die nur Textboxen enthält, ohne Gruppenname, ohne Sektion ("Überall"), und dort nur die Eigenschaften "BorderColor" und "BorderWidth" mit den gewünschten Werten. Weist man diese Teilvorlage dann dem Formular zu, werden eben nur diese beiden Eigenschaften geändert. Wenn man auf diese Weise mehrere Teilvorlagen erstellt hat, kann man ein Formular je nach Wunsch aus diesen Teilvorlagen schnell verändern.
Ist das Ergebnis dann so, wie es sein soll, erstellt man mit dem Template-Generator dann eine vollständige Vorlage, die man dann wiederum später in der Anwendung schnell allen Formularen zuweisen kann (die die gleiche Vorlage verwenden sollen).
Ebenso kann man natürlich auch das gleiche mit den Teilvorlagen machen.

Außerdem kann man die Templates auch dazu verwenden, um dem Benutzer einer Anwendung zu ermöglichen, eins von mehreren Anwendungs-Layouts zu wählen. Einfach nur eine Kombobox hinzufügen, mit der der Benutzer sein Lieblingslayout wählt, und dann die Einstellung setzen. Entweder macht man das in jedem Formular einzeln, oder in einem Benutzereinstellungsdialog, der für die ganze Anwendung gilt. Dann kann das Formular beim Öffnen das Template anhand der Benutzereinstellungen zuweisen.

Dazu muß man nur das Template-Klassenmodul, die Konstanten aus "modVariables" und den Code der rechten Kombobox zur Auswahl des Templates in die eigene Anwendung integrieren - und natürlich die Template-Tabelle mit den Datensätzen der gewünschten Vorlage(n).

Ebensogut könnte man das importierte Formular in der TemplateEditor-Datenbank auch wieder speichern, indem man z.B. per VBA das Formular im Design-Modus öffnet, dann das gewünschte Template zuweist und das Formular wieder speichert (habe ich noch nicht ausprobiert, sollte aber gehen). So kann man das Formulardesign fest speichern und dann wieder exportieren.

Die Eigenschaften im TemplateEditor wurden auf die wichtigsten Format-Eigenschaften der Controls begrenzt, man kann aber auch eine Reihe anderer Eigenschaften eines Controls auf diese Weise verändern, solange man dessen Eigenschaftennamen kennt. Den kann man ganz leicht herausfinden: In der deutschen Access-Version unterscheiden sich die Namen im Eigenschafteneditor von Access ja von denen in VBA, man kann einfach in die Bearbeitung einer Eigenschaftzeile klicken und F1 drücken, dann erhält man die passende VBA-Hilfe mit der englischen Bezeichnung. Oder man setzt einen Brechpunkt (Breakpoint..) in einer Formularausführung und läßt sich im Überwachungsfenster des VBA-Editors die "Properties"-Auflistung eines gewünschten Controls anzeigen.

Der Template-Editor ist mit Access 2007 geschrieben und getestet, konvertiert in Versionen für Access 2000 bis 2003, aber da muß dann jeder selbst testen (sollte aber funktionieren). Lediglich gibt es natürlich in Access 2007 eine Reihe Eigenschaften, die es in älteren Versionen nicht gab, wie zum Beispiel die ganzen "Grid..."-Einstellungen usw.

Viel Spaß damit und Happy Designing,

Christian

PS.: Die Idee ist natürlich auch nicht auf die hier vorhandenen Controls beschränkt, der Code läßt sich auch beliebig auf weitere erweitern, sollte nicht schwer sein. Der Code ist dokumentiert.



TemplateEditor.zip
 Beschreibung:
TemplateEditor in Versionen von Access 2000-2007

Download
 Dateiname:  TemplateEditor.zip
 Dateigröße:  263.76 KB
 Heruntergeladen:  136 mal

Willi Wipp
Moderator


Verfasst am:
09. Apr 2011, 07:29
Rufname:
Wohnort: Raum Wiesbaden

AW: TemplateEditor - Controls im Formular gemeinsam anpassen - AW: TemplateEditor - Controls im Formular gemeinsam anpassen

Nach oben
       Version: (keine Angabe möglich)

{Dieser Beitrag nimmt das Thema aus den unbeantworteten Themen heraus}
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
11. Apr 2011, 13:17
Rufname:


AW: TemplateEditor - Controls im Formular gemeinsam anpassen - AW: TemplateEditor - Controls im Formular gemeinsam anpassen

Nach oben
       Version: (keine Angabe möglich)

Hallo zusammen,

apropos Templates, hier noch ein kleiner Tip am Rande, über den ich neulich gestolpert bin und von dem ich bis vor kurzem nichts gewußt habe (manche tollen Features von Access sind wirklich gut versteckt):

Wenn man ein Formular/Report erstellt und z.B. eine Textbox hinzufügt, klickt man ja erst auf das Icon für die Textbox und dann in das Formular, um die Textbox hinzuzufügen und ändert dann irgendwann die Einstellungen wie Rahmenfarbe, Schriftart usw.

Was mir vorher noch nie aufgefallen ist: Wenn man nur auf das Icon klickt und die Textbox NICHT sofort einfügt, ändert sich das Eigenschaftenfenster auf "Default". Solange man die Textbox nun noch nicht in das Formular einfügt, kann man die Voreinstellungen für alle Textboxen im Eigenschaftenfenster festlegen. Sobald man fertig ist, fügt man die Textbox dann endlich ein und jede weitere Textbox, die jetzt eingefügt wird, bekommt automatisch die erstellten Default-Einstellungen!

Das ganze funktioniert natürlich auch mit anderen Controls. Die Defaults gelten jeweils für das aktuelle Formular/den Report und bleiben dauerhaft erhalten. Wenn man also das Formular zu einem späteren Zeitpunkt erneut im Design-Modus öffnet, kann man weiterhin mit den gleichen Default-Einstellungen Textboxen hinzufügen.

Gruß

Christian
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Problem beim Bericht oeffnen, wenn Parameter von Formular 11 Gast1 993 21. Jul 2005, 15:28
Nindigo Problem beim Bericht oeffnen, wenn Parameter von Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage über Formular einen Wert übergeben. 4 magnum 1280 29. Mai 2005, 14:55
jens05 Abfrage über Formular einen Wert übergeben.
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrageergebnis als neues Formular anzeigen 2 mila 3034 12. Apr 2005, 12:38
mila Abfrageergebnis als neues Formular anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragen im Formular aufrufen, automatisch bestätigen 3 Calvin22 1606 12. Apr 2005, 12:12
Willi Wipp Abfragen im Formular aufrufen, automatisch bestätigen
Keine neuen Beiträge Access Tabellen & Abfragen: kreuzabfrage ausführen nach vorgeschaltetem formular mit kom 4 Gast 887 21. Dez 2004, 15:17
Gast kreuzabfrage ausführen nach vorgeschaltetem formular mit kom
Keine neuen Beiträge Access Tabellen & Abfragen: Formeln vom Formular, werden in der Abfrage nicht angezeigt 4 maddes 895 23. Nov 2004, 12:38
Skogafoss Formeln vom Formular, werden in der Abfrage nicht angezeigt
Keine neuen Beiträge Access Tabellen & Abfragen: Aktionsabfrage in Formular -immer nur einen Datensatz ändern 6 blauvogel 1092 08. Okt 2004, 11:43
Skogafoss Aktionsabfrage in Formular -immer nur einen Datensatz ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Zeile der Dateneingabe (*) in einem Formular verschieben 2 Albertus 790 08. Okt 2004, 09:17
Albertus Zeile der Dateneingabe (*) in einem Formular verschieben
Keine neuen Beiträge Access Tabellen & Abfragen: Suchfunktion mit mehreren Kriterien aus Formular 5 Danny G. 2218 09. Sep 2004, 11:08
Danny G. Suchfunktion mit mehreren Kriterien aus Formular
Keine neuen Beiträge Access Tabellen & Abfragen: Mit Formular Abfrage machen? 9 Gast 2092 06. Sep 2004, 10:03
Nevyn Mit Formular Abfrage machen?
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle, Formular, Abfrage...und nun ? 3 Gags 790 29. Aug 2004, 22:05
lothi Tabelle, Formular, Abfrage...und nun ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragefeld nachträglich in Formular 3 Sebbl 1705 05. Aug 2004, 15:14
mabe38 Abfragefeld nachträglich in Formular
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript