Sperren von Formularfeldern

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Sperren von Formularfeldern

Beitrag von rlub »

Hallo,
ich suche nach einer Möglichkeit, bestimmte Eingabefelder nach Dateneingabe oder durch extra Schaltfläche zu sperren (oder verstecken, deaktivieren o.ä.).
Ich möchte meiner PC-Liste die ensprechenden Betriebssysteme mit Seriennummern zuordnen.
Ausgangspunkt sind zwei Tabellen (Host-Liste, System-Liste). Im Formular habe ich ein Tabellen-Kontrollfeld mit der Hostliste und kann dort den entsprechenden PC auswählen. In einem Listenfeld wähle ich das entprechende System aus und durch eine Schaltfläche wird der Datensatz gespeichert und die Darstellung aktualisiert. Bis hierher geht's.
Dabei besteht aber die Möglichkeit der Falscheingabe, wenn ich nach der Systemauswahl wieder in das Tabellen-Kontrollfeld der Host-Liste gehe und dort den Datensatz wechsle(oder direkt in der Navigationsleiste weiterschalte). Dann wird nämlich die vorhergehende Datenzuordnung gespeichert auch wenn die vielleicht falsch war.
Ich suche also die Möglichkeit, nach der Auswahl des PC's im Tabellen-Kontrollfeld dieses Feld für die weitere Auswahl zu sperren so dass dort keine weitere Änderung mehr möglich ist und ich nur noch mit dem Listenfeld(Systemauswahl) oder Zusatzbutton(Speichern, Abbrechen usw.) weiterarbeiten kann.
Hoffentlich habe ich mich nicht zu umständlich ausgedrückt.

Gruss Ralf
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Sperren von Formularfeldern

Beitrag von sarotti »

Hi Ralf,

Da mußt Du wohl ein Makro bemühen. Das könnte dann wie folgt aussehen:

Code: Alles auswählen

Sub Feld_Sperren

oDoc = ThisComponent '=Dokument
    oDraw = oDoc.DrawPage '=Drawpages des Dokuments
    oForms = oDraw.Forms.getByIndex(0) '=Index eines Formulars im Dokument (oder "getByName()" )
    oElement=oForms.getByIndex(0) 'Feldindex (oder GetByName)
    oElement.Enabled=false 'Feld inaktiv setzen 
  msgBox "Element ist Inaktiv",0,"Feld inaktiv" 	'zum aktivieren:    oElement.Enabled=True 
end sub
Das Makro kannst Du dann als ein Ereignis an ein Formularfeld (Schaltfläche o.ä. hängen)

Gruss
sarotti
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Danke sarotti,
ich hatte schon befürchtet, dass ich mich etwas mit der Programmierung beschäftigen muß.
Da ich da erst am Anfang stehe, kann es eine Weile dauern, bis ich die Grundlagen verstanden habe.
Deshalb ist dein Code-Vorschlag ein guter Einstieg, um mich intensiver mit dem Thema zu beschäftigen.

Ich melde mich dann bei mein ersten Erfolgen.

Gruss Ralf
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Das ging einfacher als ich dachte.
Funktioniert so, wie ich wollte.
Ich glaube das wird mein Einstieg in die Makro-Programmierung.
Ich werde mir nur noch etwas Literatur besorgen(Befehlssyntax usw.).

Nochmals Danke

Gruss
Ralf
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Sperren von Formularfeldern

Beitrag von sarotti »

Hallo Ralf,

empfehle Dir das Buch "Makros in OpenOffice" von Thomas Krumbein sowie die Seiten, die Du unter http://www.pitonyak.org/AndrewMacro.odt oder http://www.dannenhoefer.de/faqstarbasic/index.html findest. Hat mir alles sehr geholfen! :)

Gruss sarotti
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Hallo,
ich möchte nochmal an das Thema anknüpfen.
Mitlerweile habe ich mich mit den grundlegenden Macrofunktionen beschäftigt (Dank an die Literaturhinweise)
Ich habe jetzt mehrere Formulare mit Kontrollfeldern und Unterformularen auf einer Seite.(Reiterkarten gibt es ja in Openoffice nicht?)
Mit Buttons kann ich dann bestimmte Bereiche mit Formularen und Elementen weg- oder zuschalten.
Beim Laden des Dokuments sieht das natürlich sehr unübersichtlich aus, da alle Felder aktiv sind.
Ich habe noch keine Möglichkeit gefunden, beim Start sofort bestimmte Bereiche auszublenden. Ein Makro kann ich eventuell so zuordnen, dass es bei "Dokument öffnen" aktiv wird, dieses kann ich dann aber nicht mit dem Dokument speichern sondern nur zentral in "OpenOffice.org". Dies hat zur Folge, dass sich das Dokument bei einer anderen Installation (anderer Rechner) auch anders verhält bzw. alle anderen Dokumente eine Fehlermeldung erhalten, da das Makro in's Leere läuft.

Kann man das noch anders lösen, da ich nicht für jede Aufgabe ein neues Formular öffnen möchte, sondern alles über Buttons steuern will?

Gruss Ralf
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Sperren von Formularfeldern

Beitrag von sarotti »

Hallo Ralf,

das mit dem Zuordnen eines Makros geht auf zwei Arten:

1. Dieses unmittelbar mit dem Dokument speichern (also nicht in "Meine Makros" des Users), dann kann dieses auch mit dem Dokument verteilt werden
2. Eine zentrale Library (Z.B. Netzwerk) anlegen auf die Dein Dokument zugreift. Diese müssen aber geladen werden bzw. am Einzelplatz auch als Library angemeldet sein (...Verwalten, Bibliotheken, Importieren)

Die Frage nach den Reitern in Formularen und dem selektiven Ausblenden von Bereichen ist wirklich ein Nachteil der OO Formulare. Entweder alles in einzelnen Formularen (wobei diese natürlich wieder beim Aufruf Daten z.B. Filter übergeben bekommen müssen) oder dieser Aufwand mit dem Ausblenden der Formularfelder...habe leider auch noch keine Bessere Lösung gefunden

Gruss
sarotti
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Hallo Sarotti

nochmal zu Punkt1:
Die Makros selbst sind ja bei mir schon mit dem Dokument selbst gespeichert.
Ich weiss nur nicht, wie eins dieser Makros gleich beim Laden des Formulars automatisch gestartet werden kann.
Der einzigen Punk, den ich gefunden habe ist unter:
Extras -> Makros -> Makros verwalten -> OpenOff.. (dort gehe ich auf das Makro, das mit dem Dokument gespeichert ist) -> Zuordnen
Dort kann ich ein Ereignis wählen (Dokument öffnen) und rechts ein Makro (nochmal?) auswählen.
Unten bei "Speichern in " gibt es aber nur die Auswahl "OpenOffice.org" so dass ich denke, die Zuordnung selbst wird wieder zentral und nicht im Dokument abgelegt.

Gruss Ralf
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Sperren von Formularfeldern

Beitrag von sarotti »

Hallo Ralf,

Ich weiss nur nicht, wie eins dieser Makros gleich beim Laden des Formulars automatisch gestartet werden kann.
...doch das geht - ist nur bei den Symbolleisten untergebracht (Sinn kann ich Dir nicht sagen).

Kleiner schwarzer Pfeil am rechten Ende einer Symbolleiste..., dann "Symbolleiste anpassen" und "Ereignisse" wählen. Anschließend wählst du "Dokument öffnen" und das ordnest das entsprechende Makro Deines geöffneten Dokumentes mit den Makros zu.....

....erklärt sich eigentlich von alleine :D

Gruss
sarotti
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Hallo Sarotti,

das entspricht dem Menüpunkt "Zuweisen" , den ich oben schon erwähnt hatte.
Ich kann zwar ein Makro wählen, dass mit dem Dokument gespeichert ist, die Zuweisung selbst wird aber in "OpenOffice.org" gespeichert.
Hat den Effekt, das es nur mit dem Rechner und dem Dokument funktioniert.
Mich stört dabei der Punkt unterhalb des Zuweisungsfensters "Speichern in". Ich bekomme zur Auswahl nur "OpenOffice.org" obwohl in der Hilfe die Möglichkeit beschrieben ist, die Ereignisverknüpfung mit dem Dokument zu speichern.
Gibts da vielleicht Unterschiede bei den Office-Versionen? (Ich habe 2.2.1)

Gruss Ralf
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Sperren von Formularfeldern

Beitrag von sarotti »

Hallo Ralf,

hmmm, habe das bereits mehrfach so gemacht. Auch mit OO 2.2.1 funktioniert das. Habe das gerade noch einmal probiert. Frage: Hast Du dieses "Ereigniss" auch mit der Datei gespeichert oder unter OpenOffice.org (Optionsfeld "Speichern in:" unten bei den Ereignissen - s. Anlage). Wichtig ist, dass Du die Datei mit dem Makro geöffnet haben mußt, ansonsten ist diese Möglichkeit nicht gegeben...

Ansonsten habe ich auch keine Idee...

Gruss
sarotti
Dateianhänge
Makro_mit_Dok_oeffnen.jpg
Makro_mit_Dok_oeffnen.jpg (37.2 KiB) 1842 mal betrachtet
rlub
Beiträge: 7
Registriert: Do, 12.07.2007 08:01

Re: Sperren von Formularfeldern

Beitrag von rlub »

Danke Sarotti,

ich bewundere langsam deine Ausdauer mir zu helfen.
Du hast aber genau den Punkt erkannt, den ich meine. Nur bei mir gibt es die Auswahl unter "Speichern in" nicht.
Ich werde aber noch alle möglichen Varianten ausprobieren. Da schrecke auch auch vor kompletter Neuinstallation nicht zurück.
Ist sicherlich nur ein einfacher Fehler meinerseits. Ich melde mich wenn ich was gefunden habe. Interessiert dann sicher auch andere.

Bis dann
Ralf
Antworten