"Objektvariable nicht belegt" / Bookmarks / Dialog

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

Moderator: Moderatoren

domagic
*
Beiträge: 13
Registriert: Fr, 08.07.2005 11:43

"Objektvariable nicht belegt" / Bookmarks / Dialog

Beitrag von domagic »

Hi Leute ! ;o)

Ich bekomme bei der Variable oDialog bei der Sub Textmarken immer die Fehlermeldung "Objektvariable nicht belegt." lt. Foren soll es heissen, dass die Var nicht deklariert ist. Bei der ersten Sub EingabeMaske wird der Dialog aber problemlos über oDialog geöffnet!

Fülle ich die Variable einfach mit "Test" und setze die fehlerverursachenden Zeile als Kommentar passiert über den Dialog-Button, welcher die Sub aufrufen soll nichts. Führe ich die Sub Textmarken über den Writer manuell aus wird der Bookmark problemlos ersetzt.

Was mache ich falsch?

Code: Alles auswählen

Global Adresse(9)
Global Absender(4)
Global Betreff(1)
Global oDialog As Object


Sub EingabeMaske

DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUNODialog(DialogLibraries.Standard.Adresse)
oDialog.Execute()

End Sub


Sub Textmarken

'Dim txtBetreff1
Dim oDoc As Object
Dim oBookmark As Object
Dim oCursor As Object

'DialogLibraries.LoadLibrary("Standard")
'oDialog = CreateUNODialog(DialogLibraries.Standard.Adresse)

Betreff(0) = oDialog.GetControl("txtBetreff1").Text ' Meldung: Objektvariable nicht belegt.
'Betreff(0) = "Test"

'oDialog.Dispose()
'oDialog.Close()
oDialog.EndExecute()

'Doc = StarDesktop.CurrentComponent
oDoc = ThisComponent
oBookmark = oDoc.Bookmarks.GetByName("Betreff1")
oCursor = oDoc.Text.CreateTextCursorByRange(Bookmark.Anchor)
oCursor.String = Betreff(0)

End Sub
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Objektvariable nicht belegt

Beitrag von ykcim »

Ist es möglich das Dein Objekt im Dialog nicht "txtBetreff1" heißt?
An der Stelle kommt die Meldung nämlich dann wenn man versucht mit GetControl auf ein nicht vorhandens Kontrollfeld zuzugreifen.
Bei GetControl muß man auch auf Groß- und Kleinschreibung achten.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
zap
**
Beiträge: 20
Registriert: Di, 11.01.2005 13:18
Wohnort: Hannover

Beitrag von zap »

Hi,

wenn ich das Beispiel nachbaue funktioniert es wie es soll, aber:

Code: Alles auswählen

oCursor = oDoc.Text.CreateTextCursorByRange(Bookmark.Anchor) 
hier muss oBookmark hin.

Sonst hoert sich die Antwort von Michael gut an.

edit: mit welchem handler und an welcher stelle rufst du denn Textmarken auf?

Zap
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Eigentlich istalles gesagt, aber ich hatte schon offline vorgeschrieben:
Variable oDialog bei der Sub Textmarken immer die Fehlermeldung "Objektvariable nicht belegt."
Überprüfe das "txtBetreff1" tatsächlich so heißt und sich nicht ein Leerzeichen eingeschlichen hat, auch die exakte Groß-/Kleinschreibung ist relevant. Kopiere zur Not den genauen Namen aus dem Eigenschaftendialog des Textfelds in den Code. Ich sehe nur sonst keinen Fehler und vielleicht heißt es ja "txtBetreffl" ...
Fülle ich die Variable einfach mit "Test" und setze die fehlerverursachenden Zeile als Kommentar passiert über den Dialog-Button, welcher die Sub aufrufen soll nichts. Führe ich die Sub Textmarken über den Writer manuell aus wird der Bookmark problemlos ersetzt.
Offen gesagt kann das nicht zutreffen, denn das hier funktioniert doch nicht:

Code: Alles auswählen

oBookmark = oDoc.Bookmarks.GetByName("Betreff1") 
oCursor = oDoc.Text.CreateTextCursorByRange(Bookmark.Anchor)


weil Bookmark <> oBookmark, es müßte hier wieder eine Fehlermeldung kommen weil oCursor nicht belegt ist.



Gruß
Stephan
domagic
*
Beiträge: 13
Registriert: Fr, 08.07.2005 11:43

o.O

Beitrag von domagic »

Ich habe kurz vor dem Posting ein "o" vor die Objekte gesetzt und wohl bei den Bookmarks etwas übersehen.
domagic
*
Beiträge: 13
Registriert: Fr, 08.07.2005 11:43

Beitrag von domagic »

Code: Alles auswählen

Global oDialog As Object
Global Adresse(7)
Global Absender(4)
Global Betreff As String
Global Vorlage(2)
Global Privat As Integer


Sub Eingabemaske

Call Lade_Lib

oDialog.Execute()

Call Felder_auslesen

Call Textmarken

End Sub


Sub Lade_Lib

DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUNODialog(DialogLibraries.Standard.Adresse)

End Sub


Sub Felder_auslesen

Betreff = oDialog.GetControl("txtBetreff").Text

Adresse(0) = oDialog.GetControl("cbxVersandart").Text
Adresse(1) = oDialog.GetControl("cbxAnrede").Text
Adresse(2) = oDialog.GetControl("txtVorname").Text
Adresse(3) = oDialog.GetControl("txtNachname").Text
Adresse(4) = oDialog.GetControl("txtStrasse").Text
Adresse(5) = oDialog.GetControl("txtPLZ").Text
Adresse(6) = oDialog.GetControl("txtOrt").Text
Adresse(7) = oDialog.GetControl("txtFirma").Text
Privat = oDialog.GetControl("chkPrivat").State

Vorlage(0) = oDialog.GetControl("cbxVorlage").Text
Vorlage(1) = oDialog.GetControl("fctBriefkopf").Text
Vorlage(2) = oDialog.GetControl("fctSignet").Text

End Sub


Sub Textmarken

Dim oDoc As Object
Dim oBookmark As Object
Dim oCursor As Object

oDoc = ThisComponent

oBookmark = oDoc.Bookmarks.GetByName("Betreff")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Betreff

oBookmark = oDoc.Bookmarks.GetByName("Versandart")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Adresse(0)

If Privatadresse = 1 Then

	oBookmark = oDoc.Bookmarks.GetByName("Anrede")
	oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
	oCursor.String = Adresse(1)
	
	oBookmark = oDoc.Bookmarks.GetByName("Vorname")
	oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
	oCursor.String = Adresse(2)

Else

	oBookmark = oDoc.Bookmarks.GetByName("Anrede")
	oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
	oCursor.String = Adresse(7)
	
	oBookmark = oDoc.Bookmarks.GetByName("Vorname")
	oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
	oCursor.String = Adresse(1)
	
End If

oBookmark = oDoc.Bookmarks.GetByName("Nachname")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Adresse(3)

oBookmark = oDoc.Bookmarks.GetByName("Strasse")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Adresse(4)

oBookmark = oDoc.Bookmarks.GetByName("PLZ")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Adresse(5)

oBookmark = oDoc.Bookmarks.GetByName("Wohnort")
oCursor = oDoc.Text.CreateTextCursorByRange(oBookmark.Anchor)
oCursor.String = Adresse(6)

oDoc.GetGraphicObjects.GetByName("Briefkopf").GraphicURL = ConvertToUrl(Vorlage(1))
oDoc.GetGraphicObjects.GetByName("Signet").GraphicURL = ConvertToUrl(Vorlage(2))

End Sub
Antworten