vom: 17.06.2003 von: Christof Lange deufox@foxpert.com
Neues von VFP 9  
Schwerpunkt von VFP 9, Codename Europa (nach dem Mond, nicht dem Kontinent), wird der Berichtsdesigner sein:

- Bestehende FRX Dateien können weiterverwendet werden
- Die Archtiketur wird geöffnet, so daß weitere Ausgabeoptionen möglich sind
- Wiederverwendung wird verbessert (ohne daß Details genannt wurden)
- Zugriff auf die Reportobjekte zur Laufzeit

Verbesserungen für die Entwicklungsumgebung:
- FontCharSet für Berichte
- Auswahl der Maßeinheit cm/inch unabhängig von der Systemeinstellung
- Alternativer Anzeigetext für Labels. Anstelle von ALLTRIM(Vorname)+" "+ALLTRIM(Nachname) kann dann ein Text "Kundenname" im Designer angezeigt werden. Sinnvoll wenn der Kunde das Bearbeiten können soll.
- Möglichkeit einzelne Objekte im Berichtsdesigner in der Laufzeitumgebung zu schützen, damit Anwender kontrolliert Änderungen vornehmen können. Zum Beispiel könnte es erlaubt sein, ein Objekt zu verschieben, aber nicht den Ausdruck zu ändern
- Tooltips für die einzelnen Berichtselemente, ebenfalls gedacht für die Anwender
- Die Möglichkeit, eine Datenumgebung in den Bericht zu laden, etwa wenn man die bereits für ein Formular erstellt hat
- _REPORTBUILDER. Bei Doppelklick auf die einzelnen Elemente werden nicht mehr die Standarddialog aufgerufen, sondern ein FoxPro Programm. Dieses hat Zugriff auf die Eigenschaften des Objektes im Report und kann so den Eigenschaftendialog komplett ersetzen. Das funktioniert auch zur Laufzeit, so daß man unterschiedliche eigene Objektelemente definieren kann
- _REPORTDESIGNER. Toolhersteller können einen eigenen Berichtsdesigner anbietenLaufzeitverbesserungen
- An Objekte angelehnte Syntax, also kein voller OOP Reportdesigner, sondern einer, bei dem man einzelne Objekte aufrufen kann. Wegen den Investitionen der Anwender in die bestehenden Berichte setzt der neue Berichtsdesigner wohl auf dem alten auf und wird nicht komplett ersetzt
- Mehr Kontrolle beim Ausführen mehrere Berichte in einem Durchlauf. Eventuell heißt das auch, mehrere Berichte auf einer Seite, das wurde nicht ganz so klar.
- Neue Ausgabetypen und die Möglichkeit für Drittanbieter bieten, neue Ausgabearten zu entwickeln und anzubieten, etwa um PDF zu erstellen.
- Ereignisse beim Abarbeiten des Berichtes

Zum Berichtsdesigner gab es nicht viele Vorführungen, da sich das wohl alles noch in der Planungsphase befindet. Die obigen Punkte können sich also noch durchaus ändern.

VFP 9 kompiliert jede Zeile bereits beim Eingeben. Bei Syntaxfehlern wird sie farblich hervorgehoben.

Viele Limitierungen sind aufgehoben (oder erweitert) worden. Keine 65.000 Limit bei Arrays, keine 128 DO Level, keine 255 Zeichen im Eigenschaftenfenster, keine 64 KB für Prozeduren.

Verbesserungen im SQL:
- Keine Limits bei der Anzahl der Tabellen (bisher 30), der Argumente der IN() Funktion (bisher 24), UNIONs (bisher 9), Subqueries, JOINS (bisher 9).
- Verschachtelung von Subqueries (SELECT FROM WHERE (SELECT FROM WHERE (SELECT FROM))
- GROUP BY in einer korrelierenden Unterabfrage (was immer das ist)
- Select in der FROM Klausel (SELECT Feld FROM (SELECT * FROM))
- SELECT in der Feldliste (SELECT (SELECT Feld FROM Table) as FeldNeu FROM...)
- ORDER BY erlaubt Feldnamen auch mit UNION anstelle der bisherigen POsitionen
- LIKE "String%" wird optimiert (Wordanfänge sind also Rushmoretauglich)
- TOP N ist schneller
- UNIONS in INSERT INTO .... SELECT .... UNION SELECT ...
- Subquery in UPDATE
- korrelierende INSERT/DELETE
- Optimierte DELETED() Tag.

Es gibt dafür einen neuen Indextyp BINARY. Dort wird nicht mehr die Satznummer und der Wert gespeichert, sondern gleich direkt die Bitmap. Sind dadurch um bis zu Faktor 30 kleiner. Geht nur für logische Felder ohne NULL SUpport und ohne Filter im Index (INDEX ON DELETED TAG _Deleted BINARY)

VarBinary Support im XMLAdapter

- VarChar Typ. Dieser entspricht nicht dem SQL Server Typ, sondern ist ein normales VFP Textfeld, bei dem bei jedem Zugriff implizit das RTRIM() durchgeführt wird. Vereinfacht dann den Zugriffscode für uns

- CAST Funktion, um Variablen in einen anderen Typ zu konvertieren: CAST(Name AS M)
- ICASE() anstelle von Verschachtelten IIFs: ICASE(Wert=1,"A",Wert=2,"B",Wert=3,"C","D")

- Alle Formulare können nun gedockt werden, auch zusammen mit den Systemformularen. Events erlauben darauf zu reagieren (Beforedock, AfterDock, etc.)
- Anchoring. Jedes Objekt kann absolut oder relativ beliebigen Rändern im übergeordneten Objekt zugeordnet werden. Beim Resizen werden dann die Objekte automatisch verschoben, vergrößert, etc. Resizerobjekte sind dann nur noch für Sonderfälle notwendig!

- Mit Alignment, PictureMargin und PictureSpacing kann kontrolliert werden, wie der Text auf Commandbuttons ausgerichtet wird, wieviel Platz zwischen Rand und Bild und und zwischen Bild und Text sein soll
- Bei einem Button nur mit einem Bild kann trotzdem eine Caption hinterlegt werden, damit dieser einen Hotkey haben kann. Die Caption wird bei PicturePosition=14 nicht angezeigt.

- Checkbox haben Wordwrap. Die Checkbox kann nun oben, mittig oder unten ausgerichtet werden, der Beschriftungstext kann linksbündig, zentriert oder rechtsbündig sein.

- Listbox kann den Scrollbar ausblenden, wenn nur wenige Einträge vorhanden sind. Collections können über einen neuen RowSourceType direkt in die Liste geladen werden
- Im Grid kann in der Spalte ein MousePointer hinterlegt werden, der für alle Zeilen gilt.
- Shapeobjekte unterstützen ein Array von Punkte (PolyPoint Eigenschaft), die direkt zum Zeichnen von Polygonen benutzt werden kann. Wir können also künftig auch dreieckige Shapes, Sterne, Pfeile, etc. zeichnen
- Labels können beliebig rotiert werden
- Linien haben einen neuen Typ "S", der mittels der PolyLine Punkte eine Linie als Bézier Kurve darstellt
- Ein Groupbox Label ermöglicht die Verwendung eines Labels über einem rechteckigen Shape auch bei aktivierten Themes unter Windows XP.

- Auch im gedockten Projektmanager stehen nun alle Optionen aus dem Projektmenü zur Verfügung
- Man kann die Klassenbibliothek im Projektmanager auswählen. Beim Klick auf "Modify" wird diese dann im Class Browser geöffnet.
- Class Browser kann PRG Klassen öffnen und auch bei Doppelklick die Methode öffnen
- Der Zoomdialog im Eigenschaftenfenster ist größer und erlaubt die Eingabe von TAB und ENTER
- Im Expressionbuilder gibt es Syntaxprüfung während der Eingabe und Syntax Coloring
- Der "New Property" Dialog erlaubt gleich die Eingabe des Wertes
- Im Eigenschaftenfenster können die Eigenschaften konfiguriert werden, so daß beim Klick auf den "..." Button neben der Wertezeile ein eigenen Builder aufgerufen werden kann. Das ist insbesondere für das eigene Framework sinnvoll.
- Angedacht ist auch die Unterstützung der korrekten Groß/Kleinschreibung bei Eigenschaften namen.
- In einer _MemberMeta Eigenschaft kann beliebiges XML hinterlegt werden
- Favorite Reiter im Eigenschaftenfenster um eine eigene Auswahl von Eigenschaften anzuzeigen (Sinnvoll, wenn immer nur wenige Eigenschaften in einem Framework geändert werden müssen)
- Syntax Coloring steht nun auch in Memofeldern zur Verfügung.