Neues SubfileGrid mit festdefinierten Spalten (FlexSflStaticGrid)

subfiles

#1

Das neue FlexSflStaticGrid basiert auf einer Definition von festen Spaltenpositionen.
Es ist für streng tabellarische Ansichten ausgelegt, für Subfiles mit dynamisch wechselnden Zeilen ist es nicht gedacht.

Der Assistent unterstützt Sie bei der Auswahl und beim Anlegen einer Ansicht, sowie beim Definieren der zugehörigen Spalten.

Assistent

Im Assistent sehen sie eine OnTheFly-Darstellung des Bildschirms, von dem aus der Designer aufgerufen wurde. Wenn Sie in einem Subfile unterschiedliche Ansichten definieren möchten, dann sollten Sie den Designer für jede Ansicht mit der entsprechenden Subfiledarstellung aufrufen.

Als erstes sollten Sie im Assistent den eigentlich Subfilebereich auswählen. Sie können mit der Maus den gesamten Bereich markieren und dann auf “Komplettes Subfile auswählen” klicken. Oder Sie markieren jeweils die linke obere, und die rechte untere Ecke und klicken auf die jeweiligen Buttons mit den Fähnchen.
Alternativ können Sie auch die Werte direkt eintragen.

Felddefinition

Danach sollten Sie die Felder definieren. Die Definition eines Felder erfolgt anhand der horizontalen Start- und Endposition, sowie einer Zeilennummer. Bei einzeiligen Subfiles ist diese immer 1.

Bei Windows ist die Start- und Endposition relativ zum Fensterursprung, da das Fenster zur Laufzeit an unterschiedlichen Positionen angezeigt werden kann.

Feldinhalte manipulieren (Ereignis RetrieveData)

Der Inhalt der Felder muss direkt beim Einlesen der Werte geändert, da evtl. benötigte Bildschirminhalte nicht mehr verfügbar sind, wenn mehrere Subfileseiten angezeigt werden. Hierzu kann das Ereignis RetrieveData verwendet werden:

Beispiel: Der Text “MLS” wird mit “ML-Software” ersetzt.

if (e.Value.Equals("MLS"))
	e.Value = "ML-Software";

Folgende Eigenschaften stehen in dem Ereignis in der Variablen e zur Verfügung:

View              // das View Objekt          
Column            // das Column Objekt
PosX              // absolute horizontale Position des Feldes (0 wenn dynamisches Feld)
PosY              // absolute vertikale Position des Feldes (erste Zeile des aktuellen Satzes, wenn dynamische Feld)
Length            // Länge des Feldes (0 wenn dynamisches Feld)
Value             // Wert der Feldes nach erfolgter Konvertierung (kann zurückgeschrieben werden)
OriginalValue     // Wert der Feldes beim Lesen (nur Lesen)

Dynamische Felder

Dynamische Felder sind quasi “leere” Felder, deren Inhalt im Ereignis RetrieveData selbst gefüllt werden kann.

Feldanzeige manipulieren (Ereignis DrawCell)

Die Anzeige von Feldern kann in dem Ereignis DrawCell verändert werden. Hier können z.B. anhand des Inhalts Farben gesetzt oder die Schriftart manipuliert werden.

Beispiel: Der Text der Zelle wird rot dargestellt wenn, ein “-” enthalten ist (sonst schwarz).

e.Appearance.ForeColor = e.DisplayText.Contains("-")? Color.Red: Color.Green;    

Folgende Eigenschaften stehen in dem Ereignis in der Variablen e zur Verfügung:

View              // das View Objekt  (Definition)
Column            // das Column Objekt (Definition)
GridColumn        // das zugehörige GridColumn Objekt (des AnzeigeGrids)
GridCell          // das zugehörige GridCell Objekt (des AnzeigeGrids)
Appearanc         // das zugehörige Appearance Objekt (des AnzeigeGrids)
DataRow           // das DataRow Objekt, enthält die Daten der gesamten Zeile
Value             // Wert der aktuellen Zelle als Typ object (nur lesen!)
DisplayText       // Wert der aktuellen Zelle als Typ string, kann geändert werden

Umschalten zwischen Ansichten (Views)

Das SubfileGrid verwendet ein Konzept von Ansichten, so dass ein Bildschirm mit unterschiedlichen Subfiledefinitionen nicht notwendigerweise mehrfach definiert werden muss (solange sich die Darstellung außerhalb des Subfilebereichs nicht ändert). Stattdessen werden im Assistent mehrere Ansichten innerhalb des SubfileGrids definiert.

Im Ereignis SelectSubfileView kann zwischen den Ansichten umgeschaltet werden.

if (Screen.GetText(78,8,1) == "^")
  flexSflStaticGrid1.CurrentViewName = "Aufgeklappt";
else
   flexSflStaticGrid1.CurrentViewName = "Default";

Wichtig: Diese Ansichten sind eine Definitionen des aktuellen Bildschirminhalts, sie definieren an welchen Positionen die Bildschirminhalte ausgelesen werden.
Sie dürfen nicht mit den Layouts verwechselt, in denen der User u.a. bestimmt ob (und an welcher Stelle) ein Feld angezeigt wird,

Es muss mindestens eine Ansicht definiert werden. Wenn keine Ansicht voreingestellt ist, dann wird zunächst nach einer Ansicht mit dem Namen “Default” gesucht. Wenn diese nicht existiert, dann wird die erste Ansicht in der Liste ausgewählt.


Neue Zeilen/Felder zu bestehendem SflGrid hinzufügen
unlisted #2

listed #3