Tabellenfelder sollen unsichtbar, aber aktiv sein
Corinna Hochheim
Hallo,ich habe einige Preisfelder in der Ausgangsrechnung durch eigene UDFs ersetzt, führe aber mit dem Optimizer Regeln auch auf die SAP-eigenen Preisfelder durch.
Nun habe ich das Problem, dass ich die SAP-eigenen Preisfelder nicht mehr für den Benutzer anzeigen, sondern eben nur noch intern für meine Berechnungen nutzen möchte. Blende ich die Felder aber über die Formulareinstellungen aus, kommt es zu einem Fehler in meinem VB Code, weil die Felder nicht mehr aktiv sind.
Wie schaffe ich es, Felder einer Tabelle unsichtbar zu machen, aber gleichzeitig meine VB-Regeln darauf laufen zu lassen?
Sascha Balke
Hallo Corinna,hast du schon mal versucht die Breite der Spalten einfach mal auf 0 zu setzen und gar nicht auszublenden?
Ansonsten poste deine Rule, damit wir uns dein Problem näher anschauen können.
Wir haben auch eine Rule, mit der wir den Artikel AVG-Price in eine eigene SAP-Preisliste kopieren. Bei Interesse melde dich einfach via PM.
hth
Michael Egloff
Hallo Corinna,per Code kann man nur in Felder schreiben, welche sichtbar sind.
Deshalb würde ich Sascha's Vorschlag ausprobieren (Spaltenbreite minimieren).
Gruss Michael
Manuel Marhold
Hi Corinna,du kannst due Spalten auch per .Visible auf sichtbar und unsichtbar setzen.
Wenn du schreiben musst:
Form.Freeze(True)
Column.Visible = True
werte schreiben
Column.Visible = False
Form.Freeze(False)
Corinna Hochheim
Hallo,vielen Dank für eure Antworten!
@Sascha/Michael: Meint ihr mit "Spalte minimieren/auf null setzen" einfach die Spalten per Hand im Formular zusammenziehen oder gibt es da noch eine Möglichkeit, dass per Code zu machen? Ersteres habe ich übrigens jetzt auch erst mal gemacht, das löst das Problem natürlich indirekt :)
@Manuel: Ich verstehe leider nicht, was du genau meinst, denn man kann ja nur ALLE Spalten per Visible ausblenden?!?
Grüße
Corinna
Manuel Marhold
Hi Corianna,1) man kann per Matrix.Columns.Item(ColumnID).Width = 0 die Breite auf 0 setzen. Nachteil: der Nutzer kann die wieder breit ziehen und Daten ändern
2) man kann per Matrix.Columns.Item(ColumnID).Visible = False bzw. true die Sichtbarkeit jeder einzelnen Spalte ändern.
Im coresuite-Framework ist das "Matrix.Columns.Item(ColumnID)" dann glaube ich "Matrix.Columns(ColumnID)"
Sascha Balke
Hallo Corinna,wie Manuel schon schrieb...
grid.Columns["#"].Width = 0; //# = Deine ColumID
grid.Columns["#"].Editable = false; //So kann in die Colum nicht manuel geschrieben werden.
Der Anwender kann zwar die Spalten vergrößern, nur wird er wirklich darauf kommen, eine Spalte vergrößern zu wollen, die er nicht sieht? Denke dies wird die einzige Möglichkeit sein, da du nur in sichtbare Felder (Visible = True) schreiben kannst.
Ansonsten kannst du deinen Code zur Verfügung stellen und wir schauen uns dein Problem hier an.
hth
Manuel Marhold
Hi,das stimmt soweit.
Man kann aber, wie bereits beschrieben:
Form.Freeze(True)
Column.Visible = True
werte schreiben
Column.Visible = False
Form.Freeze(False)
ausführen. Durch das Freeze, sieht der Benutzer nicht, dass du die Spalte sichtbar machst, Werte schreibst und die Spate wieder unsichtbar machst.
Aber: bevor du die unsichtbar machst, musst du erst in eine andere klicken..
Vorteil von Sascha: du kannst direkt schreiben, geht also schneller.
Ist nur die Frage, was dir wichtiger ist:
schnelles arbeiten oder sicher gehen, dass der Benutzer die Spalte nicht sieht.
Du kannst nat. auch eine Mischlösung machen:
Breite auf 0
.Editable auf false
zum schreiben
Form.Freeze(True)
Column.Editable = True
werte schreiben
Column.Editable = False
Form.Freeze(False)
Ob das schneller ist, als mit visible zu arbeiten, weiß ich nicht.
Corinna Hochheim
Vielen Dank für eure Lösungsvorschläge!Ich habe mich jetzt für die "Mischlösung" von Manuel entschieden. Ich setze also die Breite der Spalten auf 0 und sperre sie gleichzeitig gegen Eingaben.
Beim FormLoad führe ich also für verschiedene Spalten folgenden Code aus:
matrix.Columns.Item("Spaltenname").Width = 0
matrix.Columns.Item("Spaltenname").Editable = False
Vor jedem internen Schreiben in die Spalte setze ich die Editierbarkeit wieder auf True und direkt nach dem Schreiben wieder auf False. Das Freeze muss ich gar nicht verändern, da die Spaltenbreite ja null ist.
0
Please sign in to leave a comment.
Comments
0 comments