Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Lloyd am 31.08.11 - 11:09:35

Titel: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 11:09:35
Hi,
ich habe in einer Tabelle mit Registertabs einen versteckten Register-Tab (Zeile), der nur eingeblendet wird, wenn ein verstecktes Feld mit einem Wert gefüllt wird. Das klappt auch so weit. Ich klicke also eine Schaltfläche an und das versteckte Feld wird befüllt, anschließend ein uidoc.Refresh und schwups ist das Tabellenregistertab da.

Was mir nicht gelingt ist dem gerade neu eingelendeten Register-Tab den Focus zu geben, so dass dieser automatisch aufklappt.

Hat jemand einen Hinweis für mich?
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 11:11:13
... du brauchst in dem Tab ein bearbeitbares Feld - dann mit uidoc.GoToField

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 11:17:43
Hi,
das hab ich schon probiert. Er spring zwar in das Feld, aber wechselt nicht vorher den Register-Tab.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 11:24:22
... was heißt vorher ??? Vor was ?

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 11:47:33
Ich befinde mich in der Tabelle im 1. Registertab von insgemsamt 6 Registertabs. Ich führe meine Funktion aus und an Position 4 wird der versteckte Registertab eingeblendet. Obwohl ich mit uidoc.GoToField den Focus in ein bearbeitbares Feld des gerade eingelendeten Registertabs setze, bleibe ich weiterhin in Registertab 1 stehen. Wechsel ich den Registertab mit der Maus, sehe ich dass der Focus in dem entsprechenden Feld ist.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Tode am 31.08.11 - 12:20:56
Das ist ein BUG!? in bestimmten Versionen (habs grade getestet, scheint in 8.5.2FP3 behoben zu sein): Der Tab wird beibestimmten Tabellen NICHT gewechselt bei einem GotoField... Genausowenig wie bei Feld- Validierungen.

Deshalb musst Du folgendes machen:

Die Tabelle hat ja sicherlich einen Namen.
Baue also in Dein Script folgenden Befehl mit ein:
Wenn Deine Tabelle "Tabelle1" heisst und er Tab, den Du aktivieren willst "VersteckterTab":
call uidoc.ReplaceItemValue( "$Tabelle1" , "VersteckterTab" ) '- Man kann berechnete Tabellen über ein Feld mit $ + Tabellenname ändern...
Call uidoc.RefreshHideFormulas
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 12:27:15
... ich denke es fehlt nur ein uidoc.Refresh...

Code
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim docThis As NotesDocument
	
	Set uidoc = ws.CurrentDocument
	Set docThis = uidoc.Document
	
	If docThis.ShowTab(0) = "" Then
		docThis.ShowTab = "2"
		Call uidoc.Refresh
		Call uidoc.GotoField( "Testfeld" )
	Else
		docThis.ShowTab = ""
		Call uidoc.Refresh
		
	End If

	

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 12:40:37
Der uidoc.Refresh ist auch nach dem GoToField drin, klappt aber nicht.

Ich habe Notes 8.5.2FP1 auf dem Client.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 12:47:22
Zitat
Ich habe Notes 8.5.2FP1 auf dem Client.
... ich auch...

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Tode am 31.08.11 - 12:49:32
ich würde es mit uidoc.RefreshHideFormula mal probieren...
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 13:48:42
... der ist im .Refresh mit enthalten - der RefreshHideFormulas berechnet nur keine Felder neu...

Aber ich habe gesehen, daß ich hier 8.52 habe - ohne FP1 - sorry, falls das für Verwirrung sorgte... :-[

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 14:17:24
Hi,
uidoc.RefreshHideFormula bewirkt leider nichts.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 31.08.11 - 16:03:46
... da sind immer noch unbekannte - ich habe es mir nachgestellt und es funktioniert - kannst du den Code posten - du kannst empfindliche Daten ja maskieren - OK?

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 31.08.11 - 18:35:58
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView, view2 As NotesView
   Dim doc As NotesDocument, doc2 As NotesDocument
   Dim curdoc As NotesDocument
   Dim dc As NotesDocumentCollection
   
   Dim key As String
   
   Set uidoc = ws.CurrentDocument
   Set curdoc = uidoc.Document
   Set db = s.CurrentDatabase
   Set view = db.GetView("Stammdaten\Vertragspartner")
   key = uidoc.FieldGetText("vertrag_vertragspartner")
   
   If key = "" Then
      Msgbox "Sie zunächst eine Vertragspartner im Karteireiter 'Allgemein' auswählen.", 16, "Vertragspartner fehlt"
      Exit Sub      
   Else
      Set doc = view.GetDocumentByKey(key)   ' Vertragspartner auslesen
      
      If (Not doc Is Nothing) Then
         Set view2 = db.GetView("($adverarbeitung)")
         Set dc = ws.PickListCollection(PICKLIST_CUSTOM, True, db.Server, db.FilePath, view2.Name, "Dokumentauswahl", "Wählen Sie ein Dokument aus.", doc.UniversalID)
         
         If dc.Count = 0 Then                        '(3)
            ' Wenn Dokumentauswahl leer dann abbrechen            
            Exit Sub
         Else                                          '(3)
            Set doc2 = dc.GetFirstDocument
            If Not ( doc2 Is Nothing ) Then
               uidoc.EditMode = True
               Call uidoc.FieldSetText("vertrag_showbdsg","Ja")
               Call uidoc.FieldSetText("vertrag_TBDSG_1",doc2.GetItemValue("vertragspartner_adv_textfeld1")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_2",doc2.GetItemValue("vertragspartner_adv_textfeld2")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_3",doc2.GetItemValue("vertragspartner_adv_textfeld3")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_4",doc2.GetItemValue("vertragspartner_adv_textfeld4")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_5",doc2.GetItemValue("vertragspartner_adv_textfeld5")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_6",doc2.GetItemValue("vertragspartner_adv_textfeld6")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_7",doc2.GetItemValue("vertragspartner_adv_textfeld7")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_8",doc2.GetItemValue("vertragspartner_adv_textfeld8")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_9",doc2.GetItemValue("vertragspartner_adv_textfeld9")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_10",doc2.GetItemValue("vertragspartner_adv_textfeld10")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_11",doc2.GetItemValue("vertragspartner_adv_textfeld11")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_12",doc2.GetItemValue("vertragspartner_adv_textfeld12")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_13",doc2.GetItemValue("vertragspartner_adv_textfeld13")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_14",doc2.GetItemValue("vertragspartner_adv_textfeld14")(0))
               Call uidoc.FieldSetText("vertrag_TBDSG_15",doc2.GetItemValue("vertragspartner_adv_textfeld15")(0))
               
               Call uidoc.GotoField("vertrag_BDSG1")
               Call uidoc.Refresh
            End If
         End If
      Else
         Msgbox "Der Vertragspartner zum Vertrag wurde in den Stammdaten nicht gefunden. Bitte legen Sie diesen neu an.", 16, "Vertragspartner nicht gefunden"
      End If      
   End If
End Sub
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 01.09.11 - 07:29:37
... mach den Refresh vor dem uidoc.GoToField ...

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 01.09.11 - 14:07:31
Hi,
das nutzt leider auch nichts. Ich hab da alle Varianten schon durch.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: marschul am 01.09.11 - 16:12:44
...Ich hab da alle Varianten schon durch.

Auch die von Tode beschriebene mit replaceitemvalue "$Tabelle1" ... ? Kannte das zwar bislang nicht, aber es gefällt mir fast besser als ein gotofield.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 01.09.11 - 16:25:06
Den Beitrag habe ich glatt übersehen. Aber wie passt dann das uidoc mit ReplaceItemValue zusammen? Die Methode ReplaceItemValue hab ich doch nur im Backend.

Tode hat geschrieben call uidoc.ReplaceItemValue( "$Tabelle1" , "VersteckterTab" )
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: koehlerbv am 01.09.11 - 16:28:00
Das war ein Schreibfehler. Es müsste heissen: Call uidoc.Document.ReplaceItemValue( "$Tabelle1" , "VersteckterTab" )

Bernhard
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 01.09.11 - 16:49:19
... bist du ganz sicher? Das läuft seit Jahr und Tag - und ein Bug wäre mir nicht bekannt. Erst der Refresh - damit werden die Hide-When's neu berechnet - jetzt ist die Zeile sichtbar und jetzt kann auch gesprungen werden.

Bei den berechneten Tab's verschwinden die anderen Tab's - soll das so sein?

Toni
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: Lloyd am 01.09.11 - 16:52:20
Hi,
das mit den berechneten Tabs funktioniert jetzt prima. Danke an alle die zur Lösung beigetragen haben.

@Toni:
Du musst in den Eigenschaften der Tabelle noch den Haken setzen: Registertabs zusätzlich zur Auswahl anzeigen. Dann bleiben die erhalten.
Titel: Re: automatischer Wechsel der Registerkarte in Tabellen
Beitrag von: ata am 05.09.11 - 11:24:59
... freut mich zu hören, daß es tut - und danke - ich arbeite selten mit programmierten Tabs...  ;)

Toni