Seite 1 von 1

"Objektvariable nicht belegt" / Bookmarks / Dialog

Verfasst: Fr, 08.07.2005 11:54
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

Objektvariable nicht belegt

Verfasst: Fr, 08.07.2005 15:27
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

Verfasst: Fr, 08.07.2005 15:36
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

Verfasst: Fr, 08.07.2005 17:29
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

o.O

Verfasst: Sa, 09.07.2005 11:15
von domagic
Ich habe kurz vor dem Posting ein "o" vor die Objekte gesetzt und wohl bei den Bookmarks etwas übersehen.

Verfasst: Mo, 18.07.2005 14:38
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