Spalte visible in Tablebox?

7. Dezember 2006 10:51

Hallo zusammen,

bin neu, aber habe schon einige Tips durch´s stöbern übernehmen können. Danke.

Ich habe einer TableBox eine zusätzliche Spalte verpasst, die zur Laufzeit mit Daten gefüllt wird (OnAfterGetRecord). So weit so gut.

Um dem Benutzer eine Möglichkeit zu geben auf diese Aktion zu verzichten (zeitsparender), möchte ich abfragen ob diese Spalte ein- oder ausgeblendet ist.

Und hier kommt mein Problem:
Obwohl ich die Spalte ausblende, ist die Visible-Property offensichtlich nicht auf FALSE gesetzt!
Eine Message (MESSAGE('%1',Currform.Meinespalte.VISIBLE);) z.B. im OnDeactivateForm sagt mir JA, obwohl ich ganz deutlich sehen kann, dass die Spalte ausgeblendet ist und NEIN kommen sollte.

Hat jemand eine Idee, wie ich ansonsten abfragen kann ob meine Spalte gerade sichtbar ist oder nicht? Eine andere Property kann´s doch nicht sein, oder?

Danke im voraus.
Gruß

7. Dezember 2006 11:45

Hi Dune,

Navision holt sich den Wert (Visible Ja o. Nein) offensichtlich beim Öffnen der Form. Wenn zu diesem Zeitpunkt die Spalte eingeblendet ist und du die Spalte ausblendet, gibt Navision - so wie du auch sagtest - "Ja" zurück. Schließe mal nach dem du die Spalte ausgeblendet hast die Form und öffne sie anschließend wieder. Jetzt wird dir Navision "Nein" zurückliefern.

Gruß, Marc

7. Dezember 2006 12:02

Hi Marc,

stimmt! Aber die Form zu schließen, um sie danach wieder zu öffnen ist ja nicht praktikabel.

Navision muss doch trotzdem irgendwie wissen, welche Spalte ein- und welche ausgeblendet sein soll.
Was passiert z.B. wenn man über "Spalte anzeigen..." den Haken vor einer Spalte entfernt. Die Form wird nicht neu geöffnet und doch ist die entsprechende Spalte ausgeblendet.
Leider wird diese Form offensichtlich komplett zur Laufzeit generiert, sodass man keine Möglichkeit hat über den Designer herauszufinden was genau passiert.

Vielleicht hat noch jemand eine Idee. Dank dir erstmal für deine Hilfe.

7. Dezember 2006 12:18

Wenn du über "Spalten anzeigen..." die Spalte ausblendest, oder direkt über "Spalte ausblenden" bekommt Navision die Änderung nicht mit. Wenn du jedoch über den C/AL-COde die Spalte ausblendest bekommt Navision das mit. In etwa so:
Code:
Currform.Meinespalte.VISIBLE:=FALSE

Vielleicht machst du auf der Form einen neuen Button womit der Benutzer die Spalte ein- bzw. ausblenden kann. Benutzt dazu folgenden Code:
Code:
Currform.Meinespalte.VISIBLE:=NOT Currform.Meinespalte.VISIBLE;

Gruß, Marc

7. Dezember 2006 12:22

Hallo Dune,

du kannst das ganze anders herum aufziehen:
- boolsche globale Variable "SpalteXAnzeigen"
- Häkchen-Feld für diese Variable auf die Form (z.B. links unten)
- im OnPush dieses Controls bzw. im OpenForm eine Funktion aufrufen,
die die Spalte ein- bzw. ausblendet
- die Variable abfragen, um zu enscheiden, ob die Daten zu füllen sind.

7. Dezember 2006 12:38

Hi jm,

danke für euren Tip, das wäre auch meine alternative gewesen.

Jedoch ist das auch wirklich nur eine Notlösung! Weniger elegant, weniger logisch für den Anwender. Und was, wenn ich mal mehr Spalten dieser Art einfüge, dann hab ich bald ´ne eigene Einstellungsmaske für meine TableBox?!
Schade, aber ich geb noch nicht auf.

Dank euch beiden.