7. März 2008 18:33
Hallo Allerseits,
mein Progrämmle will mal wieder nicht so, wie ich es will....
Gegeben sei eine Form mit Header- und Lines-Bereich, die einfach nur auf die entsprechende Header- und Lines-Tabelle zeigt.
Die Lines-Tabelle hat einen Identifyer (Code, Primärschlüssel), ein Option-Feld (Namer: "Setting Type") mit den Optionen --> Code,Text,Integer,Decimal,Boolean.
Dann hat sie auch 5 Spalten, mit den Namen "Setting Value Flag", "Setting Value Text" , etc., jeweils auch mit diesem Datentyp (also "Setting Value Flag" vom Typ Boolean, etc.)
In der Lines-Subform möchte ich jetzt, daß entsprechend der Option-Auswahl in "Type" immer nur die korrespondierende Spalte editierbar geschaltet ist. Hierzu gibt es in der Form eine kleine Funktion, die so aussieht:
- Code:
CurrForm."Setting Value Flag".EDITABLE ("Setting Type" IN ["Setting Type"::Boolean]);
CurrForm."Setting Value Text".EDITABLE ("Setting Type" IN ["Setting Type"::Text]);
CurrForm."Setting Value Code".EDITABLE ("Setting Type" IN ["Setting Type"::Code]);
CurrForm."Setting Value Decimal".EDITABLE ("Setting Type" IN ["Setting Type"::Decimal]);
CurrForm."Setting Value Integer".EDITABLE ("Setting Type" IN ["Setting Type"::Integer]);
Diese Funktion wird aufgerufen in den Triggern Form-OnAfterGetCurrentRecord und OnInsertRecord.
In der Tabelle Lines stehen mehrere Datensätze mit der Option Boolean.
Ich compiliere die Form und rufe sie auf. Alles läuft korrekt.
Ich schließe die Form und öffne sie erneut.
Jetzt sind die oberen paar "Boolean"-Records auch in dem Feld "Flag" editiernbar (also der Haken läßt sich setzen oder entfernen). Die unteren Zeilen aber nicht!
Mit den anderen Feldern/Datentypen besteht das Problem anscheinend nicht. Das Bool-Feld bleibt aber penetrant in den unteren datensätzen NICHT editierbar, auch wenn die Option auf Bool steht.
Nun habe ich in der Funktion "Activation" statt des oben angeführten Ausdrucks für die Bool-Spalte den Code umgeschrieben und verzweige auf Basis des Option-Feldes in verschiedene IF-Schachteln. In den Schachteln setze ich ganz dezidiert mit TRUE oder FALSE die Editable-Property.
Beim Debuggen stelle ich fest, daß durchaus der richtige Code angesprungen wird, d.h. es wird definitiv "Editable TRUE" durchlaufen - und dennoch ist das Feld in der Form auf den unteren Datensätzen nicht editierbar, auf den oberen doch!
Das Problem beobachte ich im Augenblick nur bei Bool; die anderen Typen funktionieren.
Was mache ich falsch??
Viele Grüße,
SF
Edit:
Wenn ich die unselige Zeile:
- Code:
CurrForm."Setting Value Flag".EDITABLE ("Setting Type" IN ["Setting Type"::Boolean]);
auskommentiere, dann bleibt das Bool-Feld übrigens editierbar. Klar, es wird ja auch niemals auf "nicht editieren" gesetzt.