🙏 Helfen Sie mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Feld in Abhängigkeit von Wert in anderem Feld einfärben
Feld in Abhängigkeit von Wert in anderem Feld einfärben
Hallo,
für eine Multiple-Choice Anwendung möchte ich das Feld mit der "richtigen" Antwort einfärben. Welches von 4 Feldern die richtige Antwort enthält steht in einem 5ten Feld als Integer.
Hat jemand eine Idee bzw. kann mir eine bestehende Lösung nennen?
Vielen Dank,
Ro
für eine Multiple-Choice Anwendung möchte ich das Feld mit der "richtigen" Antwort einfärben. Welches von 4 Feldern die richtige Antwort enthält steht in einem 5ten Feld als Integer.
Hat jemand eine Idee bzw. kann mir eine bestehende Lösung nennen?
Vielen Dank,
Ro
Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben
Hallo Ro,
Du kannst bei Feldern über die Eigenschaft BorderColor bzw. BackgroundColor die Farbe mittels Makro beeinflussen. Das soll ja vermutlich passieren, wenn auf eins der Auswahlfelder geklickt wird. Bedeutet, dass Du an jedes Feld ein Makro bindest. Das Integer-Feld hat eine Ziffer mit der korreten Lösung. Das Zielfeld muss einen Namen mit dieser Ziffer haben. So weit ich das in Erinnerung habe gehen Zahlen allein bei Namen nicht.
Habe ich jetzt nicht getestet. Schau gegebenenfalls noch einmal nach, wie die Farben benannt werden müssen.
Gruß
Robert
Du kannst bei Feldern über die Eigenschaft BorderColor bzw. BackgroundColor die Farbe mittels Makro beeinflussen. Das soll ja vermutlich passieren, wenn auf eins der Auswahlfelder geklickt wird. Bedeutet, dass Du an jedes Feld ein Makro bindest. Das Integer-Feld hat eine Ziffer mit der korreten Lösung. Das Zielfeld muss einen Namen mit dieser Ziffer haben. So weit ich das in Erinnerung habe gehen Zahlen allein bei Namen nicht.
Code: Alles auswählen
SUB Richtig(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
oSolutionField = oForm.getByName("Name_des_Integer_Feldes")
stSolution = "Sol" & oSolutionField.CurrentValue
oCorrectField = oForm.getByName(stSolution)
oCorrectField.BackgroundColor = Blue
END SUB
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben
Hallo Robert,
vielen Dank für deine Hilfe!
Ich habe den Code angepasst (s.u.), allerdings löst das folgende Fehlermeldung aus: "BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Model." Sicher ein Anfängerfehler meinerseits - aber welcher?
Hier der angepasste Code:
vielen Dank für deine Hilfe!
Ich habe den Code angepasst (s.u.), allerdings löst das folgende Fehlermeldung aus: "BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Model." Sicher ein Anfängerfehler meinerseits - aber welcher?
Hier der angepasste Code:
Code: Alles auswählen
SUB Richtig(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
oSolutionField = oForm.getByName("Richtig")
stSolution = "Antwort_" & oSolutionField.CurrentValue
oCorrectField = oForm.getByName(stSolution)
oCorrectField.BackgroundColor = RGB(0,0,255)
END SUB
Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben
Hallo Robert,
Danke nochmal, und meinen Fehler habe ich gefunden: in deinem Code sprichst du die Felder des Forms an, was ich falsch verstanden hatte (ich dachte, es geht um die Tabellen-Felder). Jedenfalls waren die Form-Felder falsch benannt. Ausserdem habe ich die Zeile
durch direkte Benennung ersetzt
- jetzt geht es. Könntest Du mir erklären, was den Unterschied der beiden Zeilen ausmacht?
Der komplette Code sieht jetzt so aus:
Danke nochmal, und meinen Fehler habe ich gefunden: in deinem Code sprichst du die Felder des Forms an, was ich falsch verstanden hatte (ich dachte, es geht um die Tabellen-Felder). Jedenfalls waren die Form-Felder falsch benannt. Ausserdem habe ich die Zeile
Code: Alles auswählen
oForm = oEvent.Source.Model.Parent
Code: Alles auswählen
oForm = thisComponent.drawpage.forms.getByName("Form_Fragen")
Der komplette Code sieht jetzt so aus:
Code: Alles auswählen
SUB Richtig(oEvent AS OBJECT)
DIM oForm as OBJECT
DIM oSolutionField as OBJECT
DIM stSolution as STRING
DIM I as INTEGER
REM oForm = oEvent.Source.Model.Parent (funktioniert nicht)
REM Alle Antwortfelder mit weissem Hintergrund ausstatten:
I = 1
Do While I < 5
oForm = thisComponent.drawpage.forms.getByName("Form_Fragen")
stSolution = "fld_Antwort_" & I
oCorrectField = oForm.getByName(stSolution)
oCorrectField.BackgroundColor = RGB(255,255,255)
I = I + 1
Loop
REM Richtiges Antwortfeld einfärben
oSolutionField = oForm.getByName("fld_Richtig")
stSolution = "fld_Antwort_" & oSolutionField.CurrentValue
oCorrectField = oForm.getByName(stSolution)
oCorrectField.BackgroundColor = RGB(0,255,255)
END SUB
Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben
Hallo Ro,
das Makro, das ich hier gepostet habe, begann mit
Es wird das Ereignis abgefragt, das das Makro ausgelöst hat. Deshalb steht da (oEvent AS OBJECT).
Das Ereignis sollte in dem Makro von einem der Formularfelder ausgelöst werden. Diese Formularfeld erreiche ich über oEvent.Source.Model.
Das Formular steht eine Ebene über dem Formularfeld. Die Formularfelder sind "Kinder" des Formulars. Umgekehrt ist das Formular "Eltern" (Parent). Wenn ich also Parent zu dem Formularfeld suche, so erhalte ich das Formular, in dem eben das Eingabefeld, der Button usw. liegen.
Mit
Erhältst Du für Deinen Fall genau das gleiche Ergebnis. Das auslösende Ereignis ist hier unwichtig und wird deshalb auch gar nicht abgefragt.
Vorteil: Das Makro kann also auch beim Aufruf eines Formulars gestartet werden.
Der einzige Nachteil: Du musst das Formular vom Namen her benennen. Das Makro ist so erst einmal nicht universell einsetzbar.
Gruß
Robert
das Makro, das ich hier gepostet habe, begann mit
Code: Alles auswählen
SUB Richtig(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
...
Das Ereignis sollte in dem Makro von einem der Formularfelder ausgelöst werden. Diese Formularfeld erreiche ich über oEvent.Source.Model.
Das Formular steht eine Ebene über dem Formularfeld. Die Formularfelder sind "Kinder" des Formulars. Umgekehrt ist das Formular "Eltern" (Parent). Wenn ich also Parent zu dem Formularfeld suche, so erhalte ich das Formular, in dem eben das Eingabefeld, der Button usw. liegen.
Mit
Code: Alles auswählen
SUB Richtig
oForm = thisComponent.drawpage.forms.getByName("Form_Fragen")
...
Vorteil: Das Makro kann also auch beim Aufruf eines Formulars gestartet werden.
Der einzige Nachteil: Du musst das Formular vom Namen her benennen. Das Makro ist so erst einmal nicht universell einsetzbar.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.