Laufzeitfehler bei Checbox in Dialog

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

dancer_m
*
Beiträge: 14
Registriert: So, 15.01.2012 16:32

Laufzeitfehler bei Checbox in Dialog

Beitrag von dancer_m »

Hallo!

Ich sitze jetzt seit ein paar Stunden an einem Dialog und versuche über eine Checkbox einen Eintrag in einem Tabellenblatt auszuösen.
Ein Textfeld in diesem Dialog funktioniert auch schon wunderbar, nur die Checkbox verweigert mir jegliche Funktion. Leider finde ich dazu weder im Forum noch im Netz eine aussagekräftige Hilfe
Ich hab auch schon einige Dinge ausprobiert, aber ich komm nun nicht mehr weiter.

Hier der Fehlerhafte Code:

Code: Alles auswählen

Dim Lieferschein, LS_test As Object
Dim Lieferschein, Datum As Object
dim feld1 As Object
dim AktDatum As Object
dim datfeld As Object

Sub Datum_eintragen
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
mydoc   = thiscomponent
mysheet = mydoc.sheets(8)
datumA  = mysheet.getcellrangebyname("aa2")
'Datum   = Lieferschein.Model
datumA= AktDatum.GetControl("AktDatum")  REM - HIER BLEIBT ES IMMER HÄNGEN!!!!! 
If AktDatum.State = 1 then
datumA.date
end if
If AktDatum.State = 0 then
datumA.string =""
end if
end Sub


Sub feldtest
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
mydoc = thiscomponent
mysheet= mydoc.sheets(8)
objekt=mysheet.getcellrangebyname("b2")

LS_test = Lieferschein.Model
objekt.string =""

Nummer = Lieferschein.GetControl("feld1")

objekt.string = Nummer.text
end Sub
Wahrscheinlich ist es ganz simpel, aber ich blick nicht mehr durch!

Gruß
Martin
Schöne Grüße
Martin
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von balu »

Hallo Martin,

eine Lösung für dein Problem habe ich noch nicht, aber dafür sind mir ein paar "Fehler" aufgefallen die Du dringends beseitigen musst.

Code: Alles auswählen

Dim Lieferschein, LS_test As Object
Dim Lieferschein, Datum As Object
Nicht gut!
Lieferschein wird 2 mal deklariert und das noch nicht mal als Object sondern als Variant. Nachzulesen bei Dannenhöfer: http://www.starbasicfaq.de/WiewerdenVar ... iert..html


Code: Alles auswählen

datumA  = mysheet.getcellrangebyname("aa2")
datumA= AktDatum.GetControl("AktDatum")
Ja hoppla! Eine Variable mit 2 verschiedenen Definierungen! Das kann ja nicht gut gehen. Und da würde ich genau so wie OOo auch määäckern wollen.


Sprichst Du wirklich von einem Dialog, oder von einem Formular? Denn so richtig schlau werd ich aus deinem Code nicht.



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 :D
dancer_m
*
Beiträge: 14
Registriert: So, 15.01.2012 16:32

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von dancer_m »

Danke Balu!!!

So, nächster Versuch!
Jetzt hängt sich das Ding zwar nicht mehr auf, aber es macht auch nichts in der Tabelle! :?

Code: Alles auswählen

Dim Lieferschein, LS_test As Object
dim feld1 As Object
dim Datcheck As Object

Sub Datum_eintragen
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
mydoc   = thiscomponent
mysheet = mydoc.sheets(8)
datumA  = mysheet.getcellrangebyname("aa2")

Datcheck = Lieferschein.Model

Lieferschein.getControl("Datcheck")

If Datcheck.State = 0 then
datumA.string = "=heute()"
End if

If Datcheck.State =1 then
datumA.string = ""
end if

end Sub
Schöne Grüße
Martin
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von Karolus »

Hallo
Offensichtlich versuchst du zu programmieren indem du mehr oder wenig zufällig Codezeilen zusammen kopierst ohne zu wissen was der Code bewirkt. -Das funktioniert nicht_

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von balu »

Hallo Martin,

Du hast dir nicht den Link zu Dannenhöfer zu Herzen genommen. Das solltest Du aber, wenn Du von vornherein komplikationen vermeiden willst. Die Deklaration wäre dann z.B. also wie folgt richtig.

Code: Alles auswählen

Dim Lieferschein As Object
Dim LS_test As Object
dim feld1 As Object
dim Datcheck As Object
Oder ist Lieferschein kein Object?

balu hat geschrieben: Sprichst Du wirklich von einem Dialog, oder von einem Formular?
Warum beantwortest Du das nicht? Das war keine rhetorische Frage meinerseits!
Weißt Du überhaupt was ein Dialog und was ein Formular ist? Es sind zwei total verschiedene Paar Schuhe.

Code: Alles auswählen

datumA.string = "=heute()"
Das wird dir absolut nichts bringen, da dann nur der String (Text) =heute() in der Zelle steht. Es ist also ohne jegliche Funktion. Du musst schon in diesem Falle das wie folgt machen.

Code: Alles auswählen

datumA.FormulaLocal = "=heute()"
Nachzulesen hier: http://www.starbasicfaq.de/Wiekannmanmi ... eineZ.html


Und ganz ehrtlich gesagt, ohne eine Beispieldatei kann ich zumindest dir nicht weiter helfen, da mir der Code zu fragmentiert vor kommt. Mir fehlen einfach weitere Angaben.



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 :D
dancer_m
*
Beiträge: 14
Registriert: So, 15.01.2012 16:32

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von dancer_m »

Hallo Balu, Hallo Karolus,

ich gebe Euch insofern recht, dass ich mich noch nicht sehr lange damit beschäftige, Dialoge (die ich problemlos von Formularen unterscheiden kann) zu erstellen.

Da ich zuvor nur auf MS VBA programmiert habe und das auch wunderbar lief fällt mir das hier auf Grund der unterschiedlichen Sprache (noch) nicht leicht.
Das ärgert mich und ich tu mich auch schwer. (Da hatte das mit

Code: Alles auswählen

string = "heute()"
in VBA auch funktioniert).

Dannenhöfer habe ich zu dem Thema gelesen - wohl aber noch nicht ansatzweise intensiv genug. Ich gelobe Besserung!
Es erschliesst sich mir auch großteils, aber irgendwo habe ich da noch Lücken in der Logik, die die Dialoge betreffen.
In Formularen funktioniert das deutlich besser!

Ich habe nicht ausführlich geantwortet, weil ich gerade auf dem Sprung zu einem Termin war. Tut mir leid!

Bezüglich der Festlegungen als Objekt / Variant kann ich jetzt auch folgen!

Da ich mich in das Thema noch vertiefen muss und ich entsprechenden Input brauche um es auch grundlegend zu verstehen, bitte ich diesbezüglich um Nachsicht.

Klar versuche ich auch ähnliche Befehlsstrukturen zu finden und meinen Bedürfnissen entsprechend umzuschreiben.
Das funktioniert auch sehr oft und hilft mir zu Verstehen - aber halt leider nicht immer!

Ich will hier in diesem Forum wirklich keinem auf die Nerven gehen, aber ich bin halt auch kein Informatik-Profi und hoffe in diesem Fachforum auf Hilfe.
Denn ohne dieses Forum hätte ich noch weniger Ahnung als ich eh schon habe!
Bitte versteht das jetzt nicht als meckern, aber ich schreibe ja grundsätzlich auch freundlich ... klar kann ich auch verstehen, das euch solche "subintelligenten" Fragen und Konstrukte auf die Nerven gehen, aber schliesslich ist auch noch kein Meister vom Himmel gefallen!

Wenn meinerseits irgendetwas missverständlich oder unzureichend sein sollte, dann liefere ich das auch gerne nach.
Schliesslich weiß ich ja auch nicht genau, was für euch für eine umfassende Diagnose notwendig ist - ich versuche nämlich immer nur das nötigste zu liefern um Datenmüll zu vermeiden!

In diesem Sinne bitte ich nochmals um Nachsich für meine partielle Unfähigkeit,

Martin
Schöne Grüße
Martin
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Laufzeitfehler bei Checbox in Dialog

Beitrag von balu »

Hallo Martin,
Da ich zuvor nur auf MS VBA programmiert habe und das auch wunderbar lief fällt mir das hier auf Grund der unterschiedlichen Sprache (noch) nicht leicht.
Es handelt sich um zwei verschiedene Dialekte von einer Sprache. Wenn Du also bis jetzt Bayrisch programmiert hattest, musst Du nun Friesisch-Platt kuiern :lol:
Es erschliesst sich mir auch großteils, aber irgendwo habe ich da noch Lücken in der Logik, die die Dialoge betreffen.
In Formularen funktioniert das deutlich besser!
In Formularen kenn ich mich wiederum nicht sonderlich aus.
Ich hab da mal was ganz simples und primitives zusammengebastelt, was dir im Dialog per Checkbox die Formel =HEUTE() in eine Zelle einträgt. Die auch durch eine andere Checkbox im Dialog wieder gelöscht wird.

Ich will hier in diesem Forum wirklich keinem auf die Nerven gehen
Tust Du nicht.
aber ich bin halt auch kein Informatik-Profi
Ich doch auch nicht. Bin noch sehr weit unten auf der Anfängerskala, wenn es um Makros geht.

und hoffe in diesem Fachforum auf Hilfe
Wirst Du schon bekommen.

Schliesslich weiß ich ja auch nicht genau, was für euch für eine umfassende Diagnose notwendig ist - ich versuche nämlich immer nur das nötigste zu liefern um Datenmüll zu vermeiden!
Das ist ein heikles Thema. Wenn man als Anfänger, oder besser gesagt als Einsteiger etwas nicht postet, dann kann es nämlich durchaus passieren das dadurch wichtige Informationen verloren gehen. Und deshalb hatte ich ja eine Beispieldatei angesprochen. Und wenn Du jetzt meine Beispieldatei mit deiner Datei (Code) vergleichst, dann wirst Du so einige gravierende Unterschiede sehen.

Ich hoffe nun aber, das durch meine Datei dir der Einstieg in Dialoge etwas leichter fällt.


Gruß
balu
Dateianhänge
simpel-dialog.ods
(11.69 KiB) 107-mal heruntergeladen
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 :D
Antworten