[gelöst]Fehler beim Befüllen von Dialog-Kontrollfeldern

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

Moderator: Moderatoren

J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

[gelöst]Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Hallo,

ein von mir lange genutztes Makro gibt auf einmal den folgenden Fehler aus:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Der Fehler taucht nicht nur bei diesem Kontrollfeld auf, sondern auch bei anderen (Datum und auch Textfelder).

Der entscheidende Code lautet

Code: Alles auswählen

MyCtrl2=MyDlg.getControl("Startzeit")
MyCtrl2.Time=startzeit
Zeile 1 funktioniert noch, Zeile 2 gibt die entsprechende Fehlermeldung. Mit einem Haltepunkt vor der fehlerhaften Zeile kann ich auf das Objekt zugreifen und auch auf die Eigenschaft Time.... Gibt es eine Änderung im Umgang mit Kontrollfeldern?

Vielen Dank für einen Hinweis

Jens
Zuletzt geändert von J. Kleis am Do, 24.10.2013 08:41, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7453
Registriert: Mo, 02.01.2006 19:48

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von Karolus »

Hallo

"Objektvariable nicht belegt" bezieht sich dann wohl auf startzeit

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Ja schon, aber das Kontrollfeld ist belegt und das Makro einige Jahre lief. Ich erweitere mal die Einsicht:

Code: Alles auswählen

	MyCtrl=MyDlg.getControl("Startzeit")
	Dim ErgZeit as String


	ErgZeit=Hour(TimeValue(Time))	
	Stunden=Hour(TimeValue(Time))
		if Stunden < 10 then
			ErgZeit = "0" & ErgZeit
		End if
	Minuten= Minute(TimeValue(Time))
	Min= Minute(TimeValue(Time))
	if Min < 10 then
		Minuten= "0" & Minuten
	End if
	ErgZeit=ErgZeit & Minuten & "0000"
	dim iZeit as long
	
	MyCtrl.time=ErgZeit

	
	MyCtrl=MyDlg.getControl("DatumStart")
	MyCtrl.Date=CDateToIso(DateValue(Now))

	MyCtrl=MyDlg.getControl("DatumEnde")
	MyCtrl.Date=CDateToIso(DateValue(Now))

End Sub
Der Zugriff auf das Kontrollfeld in einer Pause ist möglich. Aber es gelingt mir noch nicht einmal das Auslesen.

Wenn ich

Code: Alles auswählen

Zeit& =MyDlg.getControl("Startzeit").time
eingebe bekomme ich
BASIC-Laufzeitfehler.
Falscher Wert für Eigenschaft.
. Wenn ich es als Object versuche, bekomme ich zwar Zugriff, aber wenn ich versuche zu schreiben

Code: Alles auswählen

	MyDlg.getControl("Startzeit").time = "12000000"
gibt es wieder nur einen Fehler
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Mir fällt da nichts zu ein. Ich werde jetzt mal einen neuen Dialog erstellen und versuchen, ob ich darauf Zugriff habe...

Trotzdem Danke!
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

So jetzt habe ich mal einen neuen TestDialog erstellt und neue Versuche gestartet. Gleiche Ergebnisse.

Code: Alles auswählen

Sub CallDialogTest

	  DialogLibraries.LoadLibrary( "Standard" )
	  MyDlg = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )

	  Print MyDlg.getControl("TimeField1").Time.Minutes	 	  
	  MyDlg.getControl("TimeField1").Time.Minutes = "12"
	  Print MyDlg.getControl("TimeField1").Time.Minutes
	
	  MyDlg.getControl("TextField1").text = "Esel"
	  	  
	  
	  MyDlg.Execute()
	  MyDlg.Dispose()
End Sub
Die Anzeige funktioniert aber das Ändern wird ohne Fehlermeldung ignoriert. Die Änderung des Textfeldes ist kein Problem.

Code: Alles auswählen

sZeit = format(MyDlg.getControl("TimeField1").time, "00000000")  'Dieser Code ist aus T. Krumbeins Werk und sollte ja wohl stimmen.
bringt
BASIC-Laufzeitfehler.
Falscher Wert für Eigenschaft.
Zuletzt geändert von J. Kleis am Mi, 23.10.2013 11:25, insgesamt 1-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von balu »

Hallo Jens,

wie wärs wenn Du eine Beispieldatei hier anhängst, damit wir nicht so am Diät-Code rumrätseln müssen.
Und ferner erklär uns mal etwas genauer was sich bei dir geändert hat, das es zu dem nicht mehr funktionierenden Code kam. Also Betriebssystem, welches Office vorher und jetzt aber mit der genauen Versionsnummer.



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
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Sorry, hat sich überschnitten. Habe den vorigen Post nochmal geändert, so dass es einfach sein sollte, das Problem nachzuvollziehen. Also geändert hat sich ein Update auf LO 4.1.2.3
Build ID: 410m0(Build:3). An meinem Rechner liegt es eher nicht, da ein Kollege den Fehler bei sich bemerkt hat und ich ihn bei mir sofort nachvollziehen konnte. Fehler tritt bei Win 8.1 (Kollege) und unter Ubuntu 13.10 auf.

Ziel ist es, das Kontrollfeld mit einer Zeit zu belegen, bevor der Dialog angezeigt wird.

Hoffe es wird klarer...

Danke
Dateianhänge
TestDialog.odt
(10.1 KiB) 173-mal heruntergeladen
Karolus
********
Beiträge: 7453
Registriert: Mo, 02.01.2006 19:48

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von Karolus »

Hallo

Ich hab jetzt auch nochmal im ollen Krumbein ( sorry Thomas ) nachgeschaut, und probiert, folgendes trägt die aktuelle Zeit im Zeitfeld ein:

Code: Alles auswählen

Sub CallDialogTest

    DialogLibraries.LoadLibrary( "Standard" )
    MyDlg = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
    
    MyDlg.getControl("TextField1").text = "Esel"      
      
    form_zeit = format( time , "hhmmss") & "00"   rem <---
    MyDlg.getControl("TimeField1").time = form_zeit
    MyDlg.Execute()
    

End Sub
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Vielen Dank für die Hilfe, aber leider bekomme ich noch immer den gleichen Fehler...

Um Versionsprobleme auszuschließen, das Problem taucht auf:

Mac: Version: 4.1.2.3 Build ID: 40b2d7fde7e8d2d7bc5a449dc65df4d08a7dd38
Ubuntu 13.10 Version: 4.1.2.3 Build ID: 410m0(Build:3)


KEin Problem:

Mac: Version 3.4.4 OOO34ml(Build:402)
Karolus
********
Beiträge: 7453
Registriert: Mo, 02.01.2006 19:48

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von Karolus »

Hallo
Nun, hier funktionierts, siehe Testdatei
Funktionierender_Zeitfeld_Dialog.odt
(12.65 KiB) 183-mal heruntergeladen
mit einer original Lo4.02 unter Suse

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Leider gibt es bei mir den gleichen Fehler.
bild1.png
bild1.png (76.25 KiB) 3128 mal betrachtet
berndz2001
Beiträge: 1
Registriert: Mi, 23.10.2013 13:59

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von berndz2001 »

Ich habe die Datei gerade mit LO 4.1.2.3 geöffnet und den Schalter betätigt.
Das Ergebnis:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
und diese Stelle wird im Code hervorgehoben: MyDlg.getControl("TimeField1").time = form_zeit

Was mit 4.0.x noch funktioniert, scheint in 4.1.x nicht mehr zu gehen :-(
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Nachdem das Problem mit alten Versionen offensichtlich nicht existiert, gehe ich davon aus, dass sich entweder ein Bug eingeschlichen hat oder eine Änderung im Umgang mit Kontrollfeldern Einzug gehalten hat. Kann denn jemand mit LO 4.1 das ganze mal testen. Dann käme man der Ursache etwas näher.

Danke!!!!
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von balu »

Hallo Jens,
kann denn jemand mit LO 4.1 das ganze mal testen.
Ich hab mal LO 4.1.0 und die Datei von Karolus genommen, und folgendes beobachtet.
- Keine Fehlermeldung
- Kein "richtiger" Zeit eintrag im Dialog, es ist nur 00:00 zu sehen

In LO 3.6.4.3 mit der gleichen Datei funktioniert alles so wie es soll.

Da ich diese LO-Versionen nur als Portable habe, kann ich nicht mehr dazu sagen. Es scheint wohl ein Bug, oder ähnliches, ab der 4.1.x zu sein, oder vielleicht auch schon ab der 4.0.0, aber das kann ich nicht mit Gewissheit sagen.



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
Karolus
********
Beiträge: 7453
Registriert: Mo, 02.01.2006 19:48

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von Karolus »

Hallo

Ich hab gerade mal ein Update auf LO4.1.2.3 gemacht, und herausgefunden das ein Zeitfeld nicht mehr mit einem String in diesem sonderbaren Format bestückt wird sondern einem Struct com.sun.star.util.Time
Daraus folgt:

Code: Alles auswählen

Sub CallDialogTest

    DialogLibraries.LoadLibrary( "Standard" )
    MyDlg = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
   
    MyDlg.getControl("TextField1").text = "Esel" 
    
    stamp = time 'oder auch Now '
    
    h = hour(stamp)
    m = minute(stamp)
    s = second(stamp)
    
     
    t = createUnoStruct("com.sun.star.util.Time")
    t.Hours = h
    t.Minutes = m
    t.Seconds = s 
    
    MyDlg.getControl("TimeField1").setTime( t )
    

    MyDlg.Execute()
   

End Sub
Damit funktioniert der Dialog auch in Version 4.1.2.3

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
J. Kleis
*
Beiträge: 11
Registriert: Mo, 21.11.2005 20:04

Re: Fehler beim Befüllen von Dialog-Kontrollfeldern

Beitrag von J. Kleis »

Danke, den Rest werde ich wohl schaffen..
Antworten