BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Feld in Abhängigkeit von Wert in anderem Feld einfärben

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
RoHB
Beiträge: 3
Registriert: Fr 20. Jul 2018, 17:07

Feld in Abhängigkeit von Wert in anderem Feld einfärben

Beitrag von RoHB » Fr 20. Jul 2018, 18:37

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

RobertG
Beiträge: 2735
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben

Beitrag von RobertG » Fr 20. Jul 2018, 19:29

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.

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
Habe ich jetzt nicht getestet. Schau gegebenenfalls noch einmal nach, wie die Farben benannt werden müssen.

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

RoHB
Beiträge: 3
Registriert: Fr 20. Jul 2018, 17:07

Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben

Beitrag von RoHB » Sa 21. Jul 2018, 10:46

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:

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

RoHB
Beiträge: 3
Registriert: Fr 20. Jul 2018, 17:07

Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben

Beitrag von RoHB » Sa 21. Jul 2018, 11:11

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

Code: Alles auswählen

oForm = oEvent.Source.Model.Parent
durch direkte Benennung ersetzt

Code: Alles auswählen

oForm = thisComponent.drawpage.forms.getByName("Form_Fragen")
- jetzt geht es. Könntest Du mir erklären, was den Unterschied der beiden Zeilen ausmacht?

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

RobertG
Beiträge: 2735
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Feld in Abhängigkeit von Wert in anderem Feld einfärben

Beitrag von RobertG » Sa 21. Jul 2018, 16:35

Hallo Ro,

das Makro, das ich hier gepostet habe, begann mit

Code: Alles auswählen

SUB Richtig(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
...
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

Code: Alles auswählen

SUB Richtig
oForm = thisComponent.drawpage.forms.getByName("Form_Fragen")
...
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
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

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten