Seite 1 von 1

Re: Wie Textfeld auf "vorhanden" überprüfen

Verfasst: Fr, 09.07.2010 05:14
von komma4

Code: Alles auswählen

If oTxtFeld.hasByName(User & "Geraetenummer")  Then MsgBox "Das Benutzerfeld ""Gerätenummer"" ist vorhanden"

(ungetestet, aus meiner Krabbelkiste)

Re: Wie Textfeld auf "vorhanden" überprüfen

Verfasst: Sa, 10.07.2010 13:38
von komma4
Hallo Hotti,


funktioniert natürlich auch mit NOT (wenn geklammert)

Code: Alles auswählen

oDok = ThisComponent
User = "com.sun.star.text.FieldMaster.User."
oTxtFeld = oDok.getTextFieldMasters()
If NOT ( oTxtFeld.hasByName(User & "Geraetenummer") ) Then 
  MsgBox "Das Benutzerfeld ""Gerätenummer"" ist nicht vorhanden"
End If
Das ist jetzt auch getestet 8)

Re: Wie Textfeld auf "vorhanden" überprüfen

Verfasst: Sa, 10.07.2010 14:40
von DPunch
Aloha
hotti hat geschrieben:Scheint so zu sein, daß 'Wahr" ist,
wenn das Textfeld nicht vorhanden ist
Nein, definitiv nicht. Die Methode ist ja eigentlich schon sprechend, was den Rückgabewert angeht, aber hier auch nochmal schwarz auf weiss ;)
API: XNameAccess -> hasbyName
hotti hat geschrieben:If Not oTxtFeld....funktioniert leider nicht.
Natürlich funktioniert das:

Code: Alles auswählen

If NOT oTxtFeld.hasByName(User & "Geraetenummer")  Then MsgBox "Das Benutzerfeld ""Gerätenummer"" nicht ist vorhanden"
Ich vermute eher, dass Dein Problem woanders liegt:
Du hast ein Benutzerfeld names "Geraetenummer" irgendwann mal definiert und danach möglicherweise auch wieder aus dem Text entfernt.
Wenn Du das Benutzerfeld allerdings nicht komplett aus dem Dokument löschst (Einfügen -> Feldbefehl -> Andere -> Variablen -> Löschen), dann wird obiger Aufruf dieses Feld auch finden.
getTextFieldMasters liefert Dir alle Felder, die in diesem Dokument definiert sind, unabhängig davon, ob sie auch tatsächlich irgendwo im Text vorkommen.
Willst Du dagegen eine tatsächlich vorhandene Instanz dieser Textfelder überprüfen, musst Du einen anderen Weg einschlagen, nämlich den über getTextFields:

Code: Alles auswählen

oDoc = thisComponent
oTextFields = oDoc.getTextFields
enumFields = oTextFields.createEnumeration
Do While enumFields.hasMoreElements
  nextField = enumFields.NextElement
  If nextField.TextFieldMaster.Name = "Geraetenummer" Then
    MsgBox "Benutzerfeld ""Geraetenummer"" ist vorhanden"
    Exit Sub
  End If
Loop