[gelöst] tabcontrol und fokus auf tab

18. September 2008 16:53

Hallo Forum,

bis jetzt habe ich noch nie einen Beitrag schreiben müssen, da mir die Suche immer viele Ergebnisse geliefert hat. Aber so wie es aussieht, bin ich jetzt entweder an die Grenzen der Beiträge oder aber an die Grenzen meiner Fähigkeiten gelangt, die Suche richtig zu benutzen :-?

Folgendes Problem:

Ich habe in einem Formular ein Tabcontrol, dem ich zwei neue Tabs hinzugefügt habe.
Wenn das Formular jetzt geöffnet wird, dann erhält automatisch das neue Tab den Fokus. Ich möchte den Fokus aber gerne auf dem ersten Tab haben, wenn das Formular geöffnet wird.

Ich habe jetzt ziemlich lange Properties gewälzt, konnte aber nichts finden, um eine Reihenfolge oder Aktivierung festzulegen. Ich habe es auch schon mit

CurrForm.Control.Activate

probiert, indem ich versucht habe ein Control auf dem ersten Tab zu aktivieren, aber zwecklos.

Ich bin mir sicher, dass das irgendwo festgelegt wird, ich kanns aber nicht finden.

Hilfe !! :oops:
Zuletzt geändert von funn am 22. September 2008 14:29, insgesamt 1-mal geändert.

Re: tabcontrol und fokus auf tab

18. September 2008 18:15

Da bist du schon auf dem richtigen Weg:

Entweder in dem Property ActiveControlOnOpen die ID des ersten Controls auf der ersten Registerkarte eintragen, oder aber im OnOpenForm() mittels CurrForm.NameDesErstenControls.ACTIVATE; auf das erste Control springen.

Re: tabcontrol und fokus auf tab

19. September 2008 12:22

Hallo und danke für den Tip.

Das mit dem

CurrForm.NameDesErstenControls.ACTIVATE hatte ich im Trigger OnOpenForm(). Hat aber leider nicht funktioniert.

Auch die zweite Variante funktioniert bei mir leider nicht. Wenn ich das Form öffne (es handelt sich übrigens um das Form 50, das zwei zusätzliche Tabs bekommen hat), dann ist automatisch das letzte Tab geöffnet. Ich möchte aber das erste Tab aktiviert haben, so wie das ursprünglich mal war ??! :-?

Dieses Verhalten tritt seltsamerweise auf, seitdem ich die Tabs angefügt habe (lediglich zwei neue Einträge in PageNames).

Kann man da was falsch machen ?

Re: tabcontrol und fokus auf tab

19. September 2008 12:25

Hast du schon gedebuggt und geschaut, ob dein Code überhaupt ausgeführt wird bzw. ob noch weitere Codestellen ausgeführt werden?

Re: tabcontrol und fokus auf tab

19. September 2008 12:26

irgendwie habe ich das Gefühl das du einem Register den Fokus geben willst. Das wird in der ZUP Datei gespeichert welches Regioster als letzes offen war und dies wird auch als nächstes wieder geöffnet. AFAIK kann man Registern keinen Fokus geben. Ganze TabControlls ( ;) ) allerdings wie es Timo gesagt hat.

Gruß Matthias

Re: tabcontrol und fokus auf tab

19. September 2008 12:57

Hallo Matthias,

Dein Gefühl trügt Dich nicht, ich habe ja auch extra geschrieben, dass es um das Tab geht und nicht um das Tabcontrol. Vielleicht hätte ich mich auch deutlicher ausdrücken müssen, um Missverständnisse zu vermeiden.

Ich habe auch schon meine Zup-Datei gelöscht, aber trotzdem wurde der Fokus wieder auf das letzte Tab gesetzt, also scheint diese Information nicht in der zup-datei gespeichert zu werden.

Re: tabcontrol und fokus auf tab

19. September 2008 17:12

Also ich kann tun und lassen was ich will. Ein CurrForm."No.".ACTIVATE im OnOpenForm Trigger der Artikelkarte führt bei mir IMMER zu einem aktiven Tab 1 bzw. dem Feld "No." dort. Ein ACTIVATE auf "Costing Method" führt immer zu einem aktiven Tab 2. Auch mit zusätzlichen Tabs und anderen gespeicherten aktiven Controls...

Hab ich die Frage falsch verstanden?

Re: tabcontrol und fokus auf tab

22. September 2008 13:23

Also ich kann tun und lassen was ich will. Ein CurrForm."No.".ACTIVATE im OnOpenForm Trigger der Artikelkarte führt bei mir IMMER zu einem aktiven Tab 1 bzw. dem Feld "No." dort.


Schön dass es bei Dir funktioniert :cry:

Ich kann machen was ich will, es wird immer der letzte Tab aktiviert.

Ich habe im OnOpenForm-Trigger CurrForm."No.".ACTIVATE; stehen, was auch nach meinem Verständnis zu einem aktiven ersten Tab führen müsste. Aber nicht in diesem Fall.

Bei jeden anderen Formular ist der zuletzt aktivierte Tab aktiv, wenn es wieder geöffnet wird. Aber nicht hier: hier ist egal, welcher Tab vorher aktiviert war, es ist immer der letzte Tab aktiv.

Ich versteh's wirklich nicht mehr. :-(

Re: tabcontrol und fokus auf tab

22. September 2008 13:26

Ok, also hab ich das Problem doch verstanden :)

Vielleicht kannst du das Objekt als Text exportieren und mal nach "ACTIVATE" suchen. Könnte ja sein, dass irgendwo noch eins versteckt ist, was danach aufgerufen wird. Alternativ kannst du auch mal das Objekt als Text oder FOB hier reinstellen.

Re: [gelöst] tabcontrol und fokus auf tab

22. September 2008 14:27

So, nach einiger Sucherei habe ich das Problem jetzt doch noch gefunden.

Ausschlaggebend für die ganze Verwirrung war ein Subform auf dem letzten Reiter.
Wenn dieses Subform keine Datensätze zurückliefert, dann wird der Fokus an das nächste Control weiter gegeben.

Dem habe ich jetzt das "ACTIVATE" verpasst, und schon sieht wieder alles aus wie gewollt :wink:

Danke an alle für die Unterstützung.

Re: [gelöst] tabcontrol und fokus auf tab

26. Juli 2016 13:40

8 Jahre später möchte ich noch ergänzen, dass auch bei mir ein leeres SubForm auf der letzten Tab des TabControls dazu führte, dass beim öffnen des MainForms die letzte Tab den Fokus erhielt, anstatt wie gewohnt die erste Tab. Kein Programmcode dahinter, nichts.

Der springende Punkt scheint zu sein, dass ein SubForm mit Tabelle, bei der die Tabelle keine Daten hat den Fokus erhält. Es kann sein, dass das nur der Fall ist, wenn die erste Zeile im Edit-Modus ist.

Nun habe ich das letzte Tab mit dem vorletzten vertauscht, so dass auf dem letzten Tab kein SubForm mehr ist, und alles ist gut.

-> stimmt nicht, nichts ist gut. Erst Kai's Input von weiter unten war die Lösung!

Schon strange...
Zuletzt geändert von Izzy am 3. August 2016 15:02, insgesamt 1-mal geändert.

Re: tabcontrol und fokus auf tab

26. Juli 2016 18:08

Izzy hat geschrieben:...dass auch bei mir ein leeres SubForm auf der letzten Tab des TabControls dazu führte, dass beim öffnen des MainForms die letzte Tab den Fokus erhielt, anstatt wie gewohnt die erste Tab. Kein Programmcode dahinter, nichts...


Das Phänomen nervt mich schon seit NAV 2.60, dass wenn ich eine Beleg Form öffne die nur Kopfdaten enthält der Fokus immer in der SubForm steht. Z. B. Öffnen einer Bestellung die nur Kopfdaten enthält, keine Zeilen. Fokus steht in der leeren Zeilen-SubForm. Ist nicht in allen Datenbanken so. Muss also eine Ursache im Objekt haben die ich nicht finde.

Re: [gelöst] tabcontrol und fokus auf tab

3. August 2016 14:00

Hallo zusammen,

Irgendwie bin ich hiermit immer noch nicht am Ziel.

Ich bin mir aber in der Zwischenzeit ziemlich sicher, dass das Problem deshalb und nur dann auftritt wenn/weil Navision automatisch in der ersten Zeile einer leeren Tabelle in den Edit-Modus geht. Sobald das *-Zeichen auf der Zeile erscheint öffnet das Form immer auf das Tab welches dann dieses SubForm beinhaltet, welches im Edit-Modus ist.

Verlasse ich das Form und habe vorher sichergestellt, dass keine Zeile im Edit Modus ist, dann öffnet das Form danach wie gewünscht auf dem ersten Tab (oder auf dem zuletzt aktiven, wenn SaveControlInfo aktiv ist).

Wenn jedoch beim schliessen des Formulars die erste Zeile (der Tabelle des Subforms) im Edit Modus ist dann nützt alles nichts, es öffnet IMMER dieses Tab auf dem sich diese Tabelle befindet.

Nervt total.... hat dieses Problem nie jemand an der Wurzel packen können?

Danke Euch!

ps: Hab noch einen Screenshot angehängt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [gelöst] tabcontrol und fokus auf tab

3. August 2016 14:23

Ist die Subform auf
Code:
DelayedInsert=Yes
:?:
Falls nicht, so einstellen.

Re: [gelöst] tabcontrol und fokus auf tab

3. August 2016 15:01

Hallo Kai!

Tatsache! Funktioniert!!!

So wie ich die Property verstehe verhindert sie, dass Navision nur schon durch verlassen des Controls eine (leere) Zeile generiert und deshalb bis zum erfassen des PrimaryKeys den Fokus immer wieder auf die neue Zeile darauf legt und damit zum in der Fragestellung beschriebenen (Fehl-) verhalten (falsches Tab fokussiert) führt.

SUPER!!

DANKE DIR!!

tabcontrol und fokus auf tab

3. August 2016 15:10

Kowa hat geschrieben:Ist die Subform auf
Code:
DelayedInsert=Yes
:?:
Falls nicht, so einstellen.


OK, das ist eine Möglichkeit das Problem zu umgehen. Aber ich will ja keinen "DelayedInsert" in den Subforms der Belege wie z. B. Verkaufsauftrag. Oder anders gefragt: Warum sollte ich hier einen "DelayedInsert" wollen?

Re: [gelöst] tabcontrol und fokus auf tab

3. August 2016 15:28

Hallo enh,

Ich weiss nicht wie bei Dir die Situation im Detail ausschaut, aber bei mir ist es so, dass man ja eben gar keine Zeile erfassen will. Navision triggert automatisch eine neue Zeile (die dann den Fokus an sich krallt) wenn man nur schon auf dem Objekt war und es dann wieder verlässt.

Mit der Anpassung von Kai wird die neue DataRow erst in die DB geschrieben wenn man auch wirklich eine Zeile erstellt, d.h. den Primärschlüssel erfasst, und dann die Zeile verlässt.

Da in meinem Szenario das dann vom User gewollt ist, ist alles in Ordnung. Schlecht war nur, dass das System fälschlicherweise davon ausging man sei die Zeile am editieren (erstellen) und deshalb immer wieder den Fokus darauf legte, wenn man zu einem späteren Zeitpunkt das MainForm wieder anzeigte (bei mir die Customer Card).

lg!
marc

PS: Vielleicht kann Kai es besser begründen :)

tabcontrol und fokus auf tab

3. August 2016 15:46

Bei mir geht es um die Standardbelegforms, Verkaufsauftrag, Einkaufsrechnung usw. Immer wenn dort nur der Kopf aber noch keine Zeilen existieren habe ich das Problem dass beim Öffnen der Karte der Fokus in der Subform steht. Das will ich nicht. Aber "DelayedInsert" will ich auch nicht bzw. mir fällt kein Grund ein warum ich den wollen sollte.

Re: [gelöst] tabcontrol und fokus auf tab

3. August 2016 16:36

Die Standardforms sollte man nicht so umstellen, nur selbst erstellte.
Eine andere Möglichkeit als DelayedInsert gibt es nicht, dieses Fokusverhalten bei editierbaren Forms zu unterbinden.
Sollte die Verzögerung des Inserts z.B. wegen Validierungscode in den Feldern Probleme bereiten, muss man den Datensatz in der Form vorab manuell abspeichern, siehe dieses Thema.