Optionsfelder im Dialog
Moderator: Moderatoren
Optionsfelder im Dialog
Hallo liebe Oo Gemeinde,
ich hatte eine neue Idee wie ich mittels eines Dialoges und Optionsfelder und Optionsgruppen meine Daten in der Entsprechenden Tabelle eintragen kann.
Ich habe mir ein Dialog erstellt wo ich die Tabelle Auswähle. Dies funktioniert.
Dann komm ich in ein Dialog wo ich 3 Gruppenfelder mit mehreren auswahloptionsbutton habe.
Jeweils kann ich nur eine Option wählen und diese soll er mir dann in der entsprechenden Tabelle speichern.
Leider hab ich entweder ein Denkfehler, oder ich habe mir die sache zu einfach gemacht.
Leider bin ich im Programieren noch ein blutiger Anfänger und finde leider keine entsprechende Lösung.
ich hoffe ihr könnt mir da helfen.
ich hatte eine neue Idee wie ich mittels eines Dialoges und Optionsfelder und Optionsgruppen meine Daten in der Entsprechenden Tabelle eintragen kann.
Ich habe mir ein Dialog erstellt wo ich die Tabelle Auswähle. Dies funktioniert.
Dann komm ich in ein Dialog wo ich 3 Gruppenfelder mit mehreren auswahloptionsbutton habe.
Jeweils kann ich nur eine Option wählen und diese soll er mir dann in der entsprechenden Tabelle speichern.
Leider hab ich entweder ein Denkfehler, oder ich habe mir die sache zu einfach gemacht.
Leider bin ich im Programieren noch ein blutiger Anfänger und finde leider keine entsprechende Lösung.
ich hoffe ihr könnt mir da helfen.
- Dateianhänge
-
- neueIdee.ods
- (13.78 KiB) 72-mal heruntergeladen
Re: Optionsfelder im Dialog
in Dialogen (in Formularen ist das anders) wird die Zusammengehörigkeit von Optionsfeldern zu einer Gruppe durch deren Tab-Index ("Aktivierungsreihenfolge" im Eigenschaftendialog des Optionsfeldes) bestimmt, alle Optionsfelder einer Gruppe müssen fortlaufende Indexes haben. siehe Datei.
Gruß
Stephan
Gruß
Stephan
- Dateianhänge
-
- neueIdee-a.ods
- (15.96 KiB) 76-mal heruntergeladen
Re: Optionsfelder im Dialog
Hallo Stephan,
also ich hab jetzt meinen Dialog dementsprechend angepasst und eine Vortlaufende Aktivierungsreinfolge reingebaut.
Jetzt bekomme ich dennoch wieder die Fehlermeldung:
Eigenschaft oder MEthode nicht gefunden: TEXT.
also ich hab jetzt meinen Dialog dementsprechend angepasst und eine Vortlaufende Aktivierungsreinfolge reingebaut.
Jetzt bekomme ich dennoch wieder die Fehlermeldung:
Eigenschaft oder MEthode nicht gefunden: TEXT.
Code: Alles auswählen
oMonatsBlatt.getCellRangeByName("B" & iLetzteZeile).FormulaLocal = oArbeit.Text
- Dateianhänge
-
- neueIdee.ods
- (13.77 KiB) 63-mal heruntergeladen
Re: Optionsfelder im Dialog
Jo, genau,
ich wüsste nicht, dass man durch Zugriff auf den "Rahmen" der Optionsgruppe an deren Werte kommt.
Hier dein geändertes Makro Eintragen
Damit es funtioniert, habe ich jeweils den Spaltennamen der Zielspalte (B,C,D) in die Zusatzinformation (.tag) der Optionsfelder eingetragen
Viel Erfolg
Gruß R
ich wüsste nicht, dass man durch Zugriff auf den "Rahmen" der Optionsgruppe an deren Werte kommt.
Hier dein geändertes Makro Eintragen
Damit es funtioniert, habe ich jeweils den Spaltennamen der Zielspalte (B,C,D) in die Zusatzinformation (.tag) der Optionsfelder eingetragen
Code: Alles auswählen
Sub Eintragen
oMonatsBlatt = ThisComponent.sheets.getByName(iMonatsNamen(oMonat.SelectedItempos))
With oMonatsBlatt ' Letzte Zeile der Spalte A ermitteln
x = .Columns(0).queryEmptyCells()
iLetzteZeile = x(x.Count-1).RangeAddress.StartRow +1'- 1
End With
oMonatsBlatt.getCellRangeByName("A" & iLetzteZeile).FormulaLocal = "x" 'Damit die letzte Zeile gefunden wird
for i = 0 to ubound (oDialogZeitenErfassen.Controls) 'Durchlaufe alle Kontrollelemente des Dialogs
ocontrol = oDialogZeitenErfassen.controls(i)
if ocontrol.supportsservice("com.sun.star.awt.UnoControlRadioButton") then 'Wenn es sich um einen Optionsbutton handelt
if ocontrol.state then '... und er markiert ist
select case oControl.model.tag 'lese die Zusatzinformation des Optionsbutton aus
case "B"
scell = "B"
case "C"
scell = "C"
case "D"
scell = "D"
end select
oMonatsBlatt.getCellRangeByName(scell & iLetzteZeile).FormulaLocal = oControl.model.label
endif
endif
next i
End Sub
Gruß R
- Dateianhänge
-
- neueIdee.ods
- (14.42 KiB) 65-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Optionsfelder im Dialog
Danke f3k,
genau das hab ich gesucht.
Da war ich ja voll verkehrt. ich muss mal schauen das ich eine gute lektüre finde die
a leicht verständlich ist
b anwendbare beispiele enthält
genau das hab ich gesucht.
Da war ich ja voll verkehrt. ich muss mal schauen das ich eine gute lektüre finde die
a leicht verständlich ist
b anwendbare beispiele enthält
Re: Optionsfelder im Dialog
so, warum speichert er meine Daten aus der FrameBox1 nicht in die entsprechende Zeile?
Framebox2 klappt genauso wie alles andere.
Framebox2 klappt genauso wie alles andere.
- Dateianhänge
-
- neueIdee.ods
- (16.07 KiB) 76-mal heruntergeladen
Re: Optionsfelder im Dialog
Mahlzeit.
Als ich mir das Makro von 'Marce Cz' (Marcel) so anschaute, kam mir das doch irgendwie etwas bekannt vor. Und richtig! Ich hatte ihm im Januar in diesem Thread: Basic Synthaxfehler Else/Endif ohne if eine Datei samt Makro gegeben.
Warum ich das jetzt extra erwähne? Nur damit ihr wisst wer den "Grundstein" für das Makro verbrochen hat
.
Nun möchte ich aber doch etwas zum aktuellem Makro sagen.
Erstmal etwas generelles zu Marcel.
Nur damit Du mich nicht falsch verstehst. Es geht mir nur darum das Du etwas dazu lernst.
Wenn eine Datei mit Makro geladen, und anschließend das Makro gestartet wird, so wird das gesammte Makro von oben bis unten (von Anfang bis Ende) ersteinmal durchlaufen. Und wenn keine schweren Fehler auftreten, die dann auch angezeigt werden würden wie z.B. ein x-Beliebiges Wort oder Zeichen welches sich nicht in einer Sub befindet, erst dann wird das Makro komplett ausgeführt.
Bei diesem Prozess werden aber auch schon z.B. Variablennamen und Objekte in den Speicher mit aufgenommen. Das ist auch gut so. Nur muss man aufpassen das dies auch alles schön der reihe nach geht. Soll heißen, erst die die Variablendeklaration und dann die Variablendefenition, und dann kann man die Variablen weiter verarbeiten.
Die deklaration findet entweder ganz am Anfang außerhalb einer Sub statt, dann sind die Variablen Öffentlich. Oder sie werden in einer Sub deklariert, dann sind sie Lokal. Und die defenition findet immer in einer Sub statt. Und bei Makros mit Dialogen ist es doch sehr empfehlenswert das gleich nach der deklaration eine so genannte "Haupt-Sub" kommt in der die ganzen Variablen defeniert werden. Erst danach, nach der "Haupt-Sub", können und dürfen weitere Subs erstellt werden, die die defenierten Variablen verarbeiten.
Ich weise deshalb darauf hin, weil Du nicht diese Regel kennst, und schon dagegen verstoßen hast. Deine "Haupt-Sub" heißt bei dir: Sub EingabeDialog
Hier ist zu sehen was Du falsch gemacht hast.
Besser, und richtig wäre aber diese Reihenfolge.
Und ja ich weiß das das Makro trotzdem funktioniert. Aber besser ist es wenn man sich an bestimmte Regeln hält, denn sonst sucht man sich hinterher im Fehlerfalle einen Wolf.
Gruß
balu
Als ich mir das Makro von 'Marce Cz' (Marcel) so anschaute, kam mir das doch irgendwie etwas bekannt vor. Und richtig! Ich hatte ihm im Januar in diesem Thread: Basic Synthaxfehler Else/Endif ohne if eine Datei samt Makro gegeben.
Warum ich das jetzt extra erwähne? Nur damit ihr wisst wer den "Grundstein" für das Makro verbrochen hat

Nun möchte ich aber doch etwas zum aktuellem Makro sagen.
Erstmal etwas generelles zu Marcel.
Nur damit Du mich nicht falsch verstehst. Es geht mir nur darum das Du etwas dazu lernst.
Wenn eine Datei mit Makro geladen, und anschließend das Makro gestartet wird, so wird das gesammte Makro von oben bis unten (von Anfang bis Ende) ersteinmal durchlaufen. Und wenn keine schweren Fehler auftreten, die dann auch angezeigt werden würden wie z.B. ein x-Beliebiges Wort oder Zeichen welches sich nicht in einer Sub befindet, erst dann wird das Makro komplett ausgeführt.
Bei diesem Prozess werden aber auch schon z.B. Variablennamen und Objekte in den Speicher mit aufgenommen. Das ist auch gut so. Nur muss man aufpassen das dies auch alles schön der reihe nach geht. Soll heißen, erst die die Variablendeklaration und dann die Variablendefenition, und dann kann man die Variablen weiter verarbeiten.
Die deklaration findet entweder ganz am Anfang außerhalb einer Sub statt, dann sind die Variablen Öffentlich. Oder sie werden in einer Sub deklariert, dann sind sie Lokal. Und die defenition findet immer in einer Sub statt. Und bei Makros mit Dialogen ist es doch sehr empfehlenswert das gleich nach der deklaration eine so genannte "Haupt-Sub" kommt in der die ganzen Variablen defeniert werden. Erst danach, nach der "Haupt-Sub", können und dürfen weitere Subs erstellt werden, die die defenierten Variablen verarbeiten.
Ich weise deshalb darauf hin, weil Du nicht diese Regel kennst, und schon dagegen verstoßen hast. Deine "Haupt-Sub" heißt bei dir: Sub EingabeDialog
Hier ist zu sehen was Du falsch gemacht hast.
Code: Alles auswählen
sub Weiter
[...]
end sub
Sub DatenEingeben
[...]
end sub
Sub EingabeDialog
iMonatsNamen = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
DialogLibraries.loadLibrary("Standard")
oDialogZeitenErfassen = CreateUnoDialog(DialogLibraries.Standard.DlgZeitenErfassen)
oMonatAuswaehlen = CreateUnoDialog(DialogLibraries.Standard.Monat)
oArbeit = oDialogZeitenErfassen.getControl("FrameControl1")
oArt = oDialogZeitenErfassen.getControl("FrameControl2")
oLohn = oDialogZeitenErfassen.getControl("FrameControl3")
oMonatsTitel = oDialogZeitenErfassen.getControl("Label2")
[...]
end sub
Code: Alles auswählen
Sub EingabeDialog
iMonatsNamen = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")
DialogLibraries.loadLibrary("Standard")
oDialogZeitenErfassen = CreateUnoDialog(DialogLibraries.Standard.DlgZeitenErfassen)
oMonatAuswaehlen = CreateUnoDialog(DialogLibraries.Standard.Monat)
oArbeit = oDialogZeitenErfassen.getControl("FrameControl1")
oArt = oDialogZeitenErfassen.getControl("FrameControl2")
oLohn = oDialogZeitenErfassen.getControl("FrameControl3")
oMonatsTitel = oDialogZeitenErfassen.getControl("Label2")
[...]
end sub
sub Weiter
[...]
end sub
Sub DatenEingeben
[...]
end sub
Schau dir doch mal bitte schön jeden einzelnen OptionButton bei "Zusatzinformationen" genau an.warum speichert er meine Daten aus der FrameBox1 nicht in die entsprechende Zeile?
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.
wehr rächtschraipfähler findet khan si behalden
wehr rächtschraipfähler findet khan si behalden
