Wie Textfeld auf "vorhanden" überprüfen

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

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

Beitrag von komma4 »

Code: Alles auswählen

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

(ungetestet, aus meiner Krabbelkiste)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

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

Beitrag 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)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

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

Beitrag 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
Antworten