Editable-Setzen eines Bool-Feldes in einer Form

7. März 2008 18:33

Hallo Allerseits,

mein Progrämmle will mal wieder nicht so, wie ich es will.... :cry:

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.

7. März 2008 21:19

Wenn du in deiner Funktion die Bool-Zeile nach ganz unten verschiebst, macht diese dann noch immer Probleme oder statt dessen Text?

7. März 2008 23:04

Das liegt an der Checkbox, ich denke wenn du eine Textbox auf dieses Tabellenfeld verknüpfst, so dass man dort ja und nein eintragen kann, wird auch die Steuerung mit editable funktionieren, nur bei textboxen gibt es ja auch den Triger onBeforeInput, wo man in letzter sekunde noch festlegen kann, ob das Feld editierbar ist oder nicht, daher gehe ich davon aus, dass genau deshalb die Steuerung der Checkbox in tableboxen nicht richtig funktioniert, denn normalerweise kann man nur ganze Spalten editierbar machen oder nicht.

17. März 2008 20:36

Hallo Allerseits,

sorry erstmal für mein langes Schweigen: War die letzte Woche etwas indisponiert.

Natalie,

Änderung der Reihenfolge führt nicht weiter: Das Bool-Feld bleibt gesperrt.



Michael,

verstehst Du unter "Textbox" auf Felder vom Typ Code, Decimal oder Integer, also alle Felder, in denen man mehr als einen Haken eingeben kann? Hier scheint es ebenfalls zu funktionieren.

Was ich dann aber nicht verstehe: Bei mehreren gepflegten Datensätzen bleiben nur die "unteren" Datensätze gesperrt. Die oberen funktionieren.


Danke schonmal für die Anregungen!

Viele Grüße,

SF