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