home *** CD-ROM | disk | FTP | other *** search
/ ftp.alaska-software.com / 2014.06.ftp.alaska-software.com.tar / ftp.alaska-software.com / updates / xppw32g2.txt < prev   
Text File  |  1999-12-01  |  25KB  |  610 lines

  1. /*
  2.  * XPPW32G2.TXT
  3.  *
  4.  * Service Level 2 Hinweise für Xbase++ Version 1.20.178
  5.  * für Window NT und Windows 95/98 (WIN32T)
  6.  *
  7.  * Deutsche Ausgabe
  8.  *
  9.  * 27. Oktober 1999
  10.  */
  11.  
  12.  
  13.  __________________________________
  14.  0. Informationen für Beta-Anwender
  15.  
  16.     In diesem Abschnitt finden Sie wichtige Informationen, die für die
  17.     verschiedenen Beta-Versionen des Xbase++ Service Levels 2 gelten.
  18.     Die neuesten Informationen stehen immer am Anfang dieses Abschnitts.
  19.     Beachten Sie jedoch, daß die Informationen kumulativ sind, z.B.
  20.     gilt das, was unter Build 204 steht, auch für Build 205.
  21.  
  22.  
  23.  
  24.               ----- Informationen für Build 212 ------
  25.  
  26.  a) Dieser Patch kann nur auf Xbase++ Version 1.20.178 installiert werden.
  27.     Das entspricht dem Service Level 1.
  28.  
  29.  b) Sie können eine neue Produkt CD bei uns bestellen, die den Service
  30.     Level 2 als komplette Installationsversion beinhaltet. Die
  31.     Kostenbeteiligung dafür beträgt DM 50,- 
  32.  
  33.  c) Es gibt neue Beispielprogramme in diesen Verzeichnissen:
  34.  
  35.        ..\SAMPLES\BASICS\PRESPARA
  36.        ..\SAMPLES\BASICS\QBROWSE
  37.  
  38.  
  39.               ----- Informationen für Build 210 ------
  40.  
  41.  a)           *** !!! S E H R    W I C H T I G !!! ***
  42.  
  43.     Sie müssen alle Indexdateien neu erzeugen, um sicherzugehen, dass
  44.     Ihre Programme nicht mehr vom PDR 3342 betroffen sind, der in diesem
  45.     Build geschlossen worden ist. Unter bestimmten Umständen hat die
  46.     Funktion OrdCreate() fehlerhafte Indexdateien erzeugt. Sie können
  47.     nur dann sicher sein, fehlerfreie Indexdateien zu haben, wenn Sie
  48.     alle Indexdateien neu aufbauen lassen.
  49.  
  50.  
  51.  b) Die PagedDataStore Klasse wurde zu DacPagedDataStore umbenannt, um
  52.     ihre Beziehung zur Data Access Chain deutlich zu machen. Dadurch wird
  53.     Ihr Code gebrochen, den Sie bisher für XbpQuickBrowse geschrieben haben.
  54.     Die fruehere Klassenfunktion PagedDataStore muß das Präfix DAC bekommen.
  55.  
  56.  
  57.  c) Die XbpCrt Klasse hat die folgenden neuen Methoden bekommen:
  58.  
  59.        :currentPos()   , :setPos()
  60.        :getFrameState(), :setFrameState()
  61.        :toBack()       , :toFront()
  62.        :isVisible()
  63.  
  64.     Dadurch werden diese Instanzvariablen und Methoden überflüssig:
  65.  
  66.        :xPos, :xSize, :yPos, :ySize
  67.        :minimize(), :maximize()
  68.  
  69.     Aus Kompatibilitätsgründen werden sie noch unterstützt, in Zukunft
  70.     werden sie jedoch wegfallen. Stellen Sie daher sicher, in Ihrem Code
  71.     die folgenden Änderungen vorzunehmen:
  72.  
  73.        :xPos  und :yPos            ersetzen durch :currentPos()
  74.        :xSize und :ySize           ersetzen durch :currentSize()
  75.        :minimize() und :maximize() ersetzen durch :setFrameState()
  76.  
  77.  
  78.  d) In der XbpMenuBar Klasse wurden Änderungen bei Callback Codeblöcken und
  79.     Methoden vorgenommen (das betrifft auch XbpMenu, da diese Klasse von
  80.     XbpMenuBar abgeleitet ist):
  81.  
  82.        :activateItem wurde aus Konsistenzgründen zu :itemSelected umbenannt.
  83.            Der alte Name wird noch unterstützt um keinen Code zu brechen. 
  84.            Sie sollten aber :activateItem zu :itemSelected umbenennen um
  85.            für die Situation vorbereitet zu sein, wenn die Instanzvariable
  86.            in einer zukünftigen Version wegfällt.
  87.  
  88.        :itemMarked ist neu und wird ausgeführt, wenn ein Menüeintrag
  89.            hervorgehoben angezeigt wird.
  90.  
  91.        :beginMenu und :endMenu sind neu.
  92.  
  93.  
  94.  e) Die Methoden :setColRepresentation() und :getColRepresentation()
  95.     in den Klassen XbpQuickBrowse und XbpMultiCellgroup wurden geändert.
  96.     Dadurch können zwei verschiedene Icons in einer Browserzelle angezeigt
  97.     werden.
  98.  
  99.  
  100.  f) Die Presentation Parameter von allen Xbase Parts sind überarbeitet
  101.     worden. Alle Xbase Parts unterstützen ab sofort Vorder- und Hintergrundfarbe,
  102.     und reagieren auf Änderungen in der Systemeinstellung aufgrund ihrer
  103.     neuen Standardeinstellungen. Lesen Sie dazu in der Online Dokumentation
  104.     das neue Kapitel "Presentation Parameter für Xbase Parts". Sie finden
  105.     es am schnellsten über das Fenster "Liste der Änderungen"
  106.  
  107.     Die wichtigsten Zusammenhänge für Presentation Parameter zeigt das neue
  108.     Beispielprogramm \BASICS\XBPSTYLE\PRESPARA.PRG
  109.  
  110.     Für ein Beispiel, wie man farbige Eingabefelder programmiert, sehen Sie
  111.     sich das neue Programm \BASICS\XBPSTYLE\SLESTYLE.PRG an.
  112.  
  113.  
  114.  g) Es gibt ein neues Beispielprogramm \BASICS\GUIEVENT\SHUTDOWN.PRG das
  115.     verdeutlich, wie man auf das Herunterfahren des Betriebsyssystems 
  116.     reagiert, oder es gar abweist.
  117.  
  118.  
  119.  h) Änderungen wurden in dem Verzeichnis \SOLUTION\XBPGET vorgenommen:
  120.       :umbenannt
  121.          EDITCOL.PRG ist zu GETCOL.PRG  umbenannt worden
  122.  
  123.       :neu
  124.          COMBOCOL.PRG = Verwendung einer Combobox zum Editieren in einem Browser
  125.          SPINCOL.PRG  = Verwendung eines Spinbuttons zum Editieren in einem Browser
  126.          MLECOL.PRG   = Verwendung eines MLEs zum Editieren von Text in einem Browser
  127.          COLTEST.PRG  = Testprogramm für alle neuen Column Beispiele
  128.  
  129.       :geändert
  130.          XBPGET.PRG   = XbpGet hat ein eigenes Kontextmenü bekommen
  131.  
  132.  
  133.  i) Wir raten ab sofort davon ab, die Funktion OrdKeyNo() bei der Anzeige
  134.     indexierter Datenbanken in einem Browser zu verwenden:
  135.  
  136.          oXbpBrowse:posBlock := {|| OrdKeyNo() }
  137.  
  138.     Dieser Ansatz resultiert in einem trägen Browserverhalten, besonders
  139.     wenn eine große Datenbank angezeigt wird. Um XbpBrowse zu beschleunigen,
  140.     gibt es eine neue Instanzvariable :goPosBlock, mit der eine relative
  141.     Navigation in einer Datenbank möglich wird. Dies ist der empfohlene
  142.     Ersatz für OrdKeyNo() im Browser:
  143.  
  144.          oXbpBrowse:posBlock   := {| | DbPosition()    }
  145.          oXbpBrowse:goPosBlock := {|n| DbGoPosition(n) }
  146.  
  147.  
  148.  
  149.               ----- Informationen für Build 205 ------
  150.  
  151.  a) Windows 98 ist ab sofort eine offiziell unterstützte Plattform für
  152.     Xbase++. Der (sehr schwer zu findende) Grund für die 0x0E
  153.     Ausnahmesituation, die -besonders beim Debuggen einer Xbase++
  154.     Appliktaion- zu einer "Blue Screen" geführt hat, wurde identifiziert,
  155.     gelöst, und hat sich im Beta-Build 204 als "nicht mehr existent"
  156.     erwiesen.
  157.  
  158.     Alaska Software gibt offiziell bekannt, daß Xbase++ unter
  159.     Windows 95, 98 und NT funktioniert (Win2000 sieht auch sehr gut aus)
  160.     
  161.  
  162.  b) CLOSEPDR.TXT ist jetzt in separate Build Sektionen gegliedert, so daß 
  163.     sich PDRs einfacher identifizieren lassen, die mit einem bestimmten 
  164.     Beta-Build geschlossen worden sind.
  165.  
  166.  
  167.  c) Die PDRs im Bereich Datenbank- und Index-Operationen, die sich in den
  168.     Build 204 eingeschlichen haben, sind geschlossen worden. Testen Sie
  169.     bitte diese PDRs besonders gründlich (siehe die Datei CLOSEPDR.TXT)
  170.  
  171.  
  172.  d) Der "Caps-Lock" PDR 3032 ist geschlossen worden. Da die "Caps-Lock"
  173.     Taste von landesspezifischen Betriebssystemeinstellungen beeinflußt
  174.     werden kann, stellen Sie bitte sicher, daß "Caps-Lock" in Ihrer
  175.     Umgebung korrekt funktioniert.
  176.  
  177.  
  178.  e) Die Verwaltung der Presentation Parameter wurde optimiert. Falls Sie
  179.     in diesem Bereich Anomalien vorfinden, berichten Sie diese bitte
  180.     umgehend in unserer Beta News Group.
  181.  
  182.  
  183.  f) Die Standard Presentation Parameter von XbpQuickBrowse wurden geändert,
  184.     so daß der Browser in seinem Standardlayout besser mit dem Betriebssystem
  185.     harmoniert.
  186.  
  187.  
  188.  
  189.               ----- Informationen für Build 204 ------
  190.  
  191.  a) Dieser Patch überschreibt alle Beispieldateien im Verzeichnisbaum
  192.     ..\XPPW32\SAMPLES, mit Ausnahme des Verzeichnisses ..\XPPW32\SAMPLES\DATA.
  193.     Falls Sie Quellcodedateien im Beispielverzeichnis geändert haben und
  194.     die Änderungen beibehalten wollen, müssen Sie die gänderten Dateien
  195.     in ein anderes Verzeichnis kopieren.
  196.  
  197.  
  198.  b) Eine #define Konstante aus der Datei DMLB.CH hat eine andere Bedeutung
  199.     für die Funktion FieldInfo() bekommen. Wenn Sie in Ihren Programmen
  200.     die Konstante FLD_TYPE an FieldInfo() übergeben, gibt die Funktion
  201.     jetzt einen Zeichenwert anstelle eines numerischen Wertes zurück.
  202.     Um weiterhin einen numerischen Rückgabewert zu erhalten, muß die
  203.     neue Konstante FLD_TYPE_AS_NUMERIC verwendet werden.
  204.  
  205.  
  206.  
  207.               ----- Informationen für Build 200 ------
  208.  
  209.  a) Pbuild ist geändert worden, so daß die OBJ_DIR Einstellung korrekt
  210.     erkannt wird. Allerdings dürfen alle Dateinamen, die in der Sektion
  211.     $START-AUTODEPEND und $STOP-AUTODEPEND aufgelistet sind, keine
  212.     Pfadangaben mehr haben. Es ist nur der Dateiname mit Erweiterung
  213.     erlaubt.
  214.  
  215.     Wir empfehlen Ihnen, PBuild einmal mit dem -g Schalter aufzurufen,
  216.     so daß alle Abhängigkeiten in der Projektdatei korrekt aktualisiert
  217.     werden.
  218.  
  219.  
  220.             ----- Informationen für frühere Builds ------
  221.  
  222.  a) Siehe den Abschnitt 5B weiter unten.
  223.  
  224.  
  225.  
  226.  _____________
  227.  1.0 Überblick
  228.  
  229.      Die Datei enthält wichtige Informationen über die Installation dieses
  230.      Service Levels.
  231.  
  232.      Sie finden eine Liste von Änderungen gegenüber der vorigen Xbase++
  233.      Version im Abschnitt "Wichtige Hinweise" weiter unten in dieser Datei
  234.      und im Kapitel "Änderungen" in der Online Dokumentation.
  235.  
  236.      Eine Liste der geschlossenen PDRs finden Sie in der Datei CLOSEPDR.TXT
  237.  
  238.  
  239.  _____________________________________________
  240.  2.0 Überprüfen der existierenden Installation
  241.  
  242.      Bitte stellen Sie sicher, daß Sie das folgende Produkt komplett
  243.      installiert haben:
  244.  
  245.        - Xbase++ 1.20.178 Deutsche Version
  246.  
  247.      Ist dies nicht der Fall, installieren Sie Xbase++ neu von Ihrer CD-ROM.
  248.  
  249.      Um die Versionsnummer Ihrer Xbase++ Installation festzustellen, geben
  250.      Sie auf der Befehlszeile ein:
  251.  
  252.          [C:\ALASKA\XPPW32]xppload version
  253.  
  254.      Beachten Sie bitte Abschnitt 6 wenn Sie Alaska Software kontaktieren
  255.      wollen.
  256.  
  257.  
  258.  2.1 HINWEIS FÜR BLINKER 5.x ANWENDER
  259.  
  260.      Falls Sie die Dateien aus dem Verzeichnis ..\LIB\OMF nach ..\LIB
  261.      kopiert hatten, kopieren Sie die Dateien aus ..\LIB\COFF wieder
  262.      zurück nach ..\LIB bevor Sie mit der Installation des Service Levels
  263.      fortfahren.
  264.  
  265.      Aufgrund einiger Supportanfragen empfehlen wir nicht mehr, die
  266.      OMF Bibliotheken in das ..\LIB Verzeichnis zu kopieren, wenn Sie
  267.      Blinker einsetzen. Stattdessen empfehlen wir, die Umgebungsvariable
  268.      LIB zu ändern, so daß sie auf das richtige Verzeichnis verweist:
  269.  
  270.         SET LIB=..\LIB\OMF
  271.  
  272.  
  273.  2.2 HINWEIS FÜR BETA ANWENDER
  274.  
  275.      Dieser Patch kann nicht über die zwischenzeitlichen Xbase++ Versionen
  276.      aus dem Beta Zyklus installiert werden sondern nur über die Version
  277.      1.20.178 (Service Level 1)
  278.  
  279.  
  280.  ____________________________________
  281.  3.0 Kopieren der Service Level Datei
  282.  
  283.      Laden Sie sich eine der beiden folgenden Dateien auf Ihren Rechner: 
  284.  
  285.         XPPW32G2.EXE   - für die deutsche Xbase++ Version
  286.         XPPW32E2.EXE   - für die internationale Xbase++ Version
  287.  
  288.      Kopieren Sie nun die Datei XPPW32?2.EXE in das Verzeichnis 
  289.      Ihrer aktuellen Xbase++ Installation. 
  290.  
  291.         [C:\ALASKA\XPPW32]copy \<download-verzeichnis>\XPPW32?2.EXE  .\
  292.  
  293.  
  294.  ____________________________
  295.  4.0 Anbringen der Änderungen 
  296.  
  297.      Die Datei XPPW32?2.EXE ist ein sich selbst entpackendes Archiv mit
  298.      Auto-Start. Alle notwendigen Dateien werden ausgepackt und die
  299.      Änderungen werden automatisch durchgeführt.
  300.  
  301.      Um den Service Level 2 zu installieren, geben Sie diesen Befehl
  302.      auf Ihrer Kommandozeile ein:
  303.  
  304.         [C:\ALASKA\XPPW32]XPPW32G2.EXE   oder
  305.         [C:\ALASKA\XPPW32]XPPW32E2.EXE
  306.  
  307.      Achten Sie während der Installation auf Fehlermeldungen und/oder prüfen Sie
  308.      die Datei SERVICE.LOG nach der Installation auf Fehlermeldungen.
  309.  
  310.      Der Patch arbeitet inkrementell. Falls Sie den Vorgang abbrechen oder
  311.      ein Fehler auftrat, den Sie beheben können, ist eine Fortsetzung der
  312.      Installation jederzeit durch diese Eingabe möglich:
  313.  
  314.         [C:\ALASKA\XPPW32]SERVICE.EXE 
  315.        
  316.      Zur Prüfung ob der Patch erfolgreich angebracht werden konnte
  317.      geben Sie diesen Befehl auf Ihrer Kommandozeile ein:
  318.  
  319.         [C:\ALASKA\XPPW32]XPPLOAD VERSION
  320.  
  321.      Als Ausgabe muß die Versionnummer 1.30.212 erscheinen.
  322.  
  323.  
  324.  _____________________
  325.  5.0 Wichtige Hinweise
  326.  
  327.   A) Alles neu compilieren und linken
  328.  
  329.      Bevor Sie eine Ihrer Applikationen mit Service Level 2 ausführen können,
  330.      müssen Sie alle Quellcode Dateien neu compilieren. Andernfalls kann
  331.      Ihr Progrmm nicht starten.
  332.  
  333.      Verwenden Sie "PBuild -a" um eine Anwendung komplett neu zu erzeugen.
  334.  
  335.      Falls irgendetwas nicht funktioniert, nachdem Sie die EXE Datei neu
  336.      erzeugt haben, stellen Sie als erstes bitte sicher, daß keine binären
  337.      "Übrigbleibsel" einer früheren Xbase++ Version auf Ihrem System
  338.      existieren und unbemerkt gelinkt wurden (OBJ, LIB und DLL Dateien).
  339.  
  340.  
  341.   B) Änderungen seit Xbase++ 1.20.178
  342.  
  343.      1. Datenbank Performance
  344.  
  345.         Die Geschwindigkeit des Datenbankzugriffs hat sich mit
  346.         Xbase++ Service Level 2 drastisch verbessert.
  347.  
  348.         Die DatabaseEngines (DBEs) verwalten ab sofort einen dynamischen
  349.         Cache-Speicher beim Zugriff auf die Festplatte. Dadurch wurde der
  350.         Bedarf an Hauptspeicher deutlich gesenkt. Die DBEs brauchen
  351.         ca. 6x weniger Cache-Speicher (Datenbankpuffer) als in der 
  352.         vorherigen Xbase++ Version.
  353.  
  354.         Der DBE-Kernel verwendet ein optimiertes Merge/Sort Subsystem,
  355.         wodurch alle Datenbankoperationen schneller ablaufen, die eine
  356.         Sortierung beinhalten. Das betrifft Funktionen wie DbSort(),
  357.         DbCreateIndex() oder OrdCreate().
  358.  
  359.         Aufgrund des neuen Merge/Sort Subsystems werden insbesonders
  360.         Indexdateien für große Datenbanken, oder solche, die einen sehr
  361.         langen Indexschlüssel beinhalten, deutlich schneller erzeugt,
  362.         als mit Xbase++ 1.20.178
  363.  
  364.  
  365.      2. Code Generierung
  366.   
  367.         Der Xbase++ Compiler optimiert Operationen für alle LOCAL
  368.         Variablen, die sich nicht als "Detached LOCAL" in einem Codeblock
  369.         befinden. Das führt nicht nur zu einer schnelleren Ausführung von
  370.         Code zur Laufzeit eines Programms, sondern reduziert auch die
  371.         Linker-Fixups.
  372.   
  373.         Ein Codeblock konnte bisher als eine Sequenz von Pseudo-Code
  374.         verstanden werden. Ab Xbase++ SL2 werden Codeblöcke optimiert und
  375.         in Native-Code überführt, wobei der Pseudo-Code erhalten bleibt
  376.         (Persistenz von Codeblöcken ist weiterhin gewährleistet).
  377.  
  378.         Der Makro-Compiler optimiert einfache Ausdrücke, wie z.B. &("Upper(Feldname)").
  379.         Einfache Ausdrücke werden dadurch etwa 10x schneller bearbeitet als
  380.         vorher. Der Zuwachs an Geschwindigkeit hängt von der Komplexität
  381.         des Makro-Strings ab.
  382.  
  383.         Standard-Operationen mit Zeichenketten sind optimiert worden.
  384.         Das hat zu einer höheren Ausführungsgeschwindigeit bei verringertem
  385.         Speicherbedarf geführt. Ein extremer Zuwachs an Geschwindigkeit
  386.         läßt sich z.B. bei folgendem Code feststellen (In-Line Verkettung von Strings):
  387.   
  388.             c := ""
  389.             FOR i:= 0 TO 100000
  390.                c += "Hi"
  391.             NEXT
  392.  
  393.  
  394.      3. Speicherverwaltung und GUI Resourcen
  395.   
  396.         Die Speicherverwaltung wurde verbessert, so daß Blöcke im Speicher
  397.         dichter gepackt werden. Das hat den Speicherbedarf gegenüber
  398.         dem Betriebssystem verringert. Der Memory-Manager identifiziert
  399.         jetzt auch ungenutze Memory-Pages und gibt sie an das Betriebssystem
  400.         zurück.
  401.  
  402.         Die "Boost" Methoden des Garbage-Collectors wurden geändert, damit sich
  403.         der Garbage-Collector in die meisten (bekannten) Anwendungsszenarios
  404.         harmonisch einfügt.
  405.  
  406.         In Xbase++ SL2 existiert ein interner Cache/Resource Manager für GUI
  407.         Resourcen, die vom Betriebssystem angefordert wurden. Dieses Subsystem
  408.         hat den Verbrauch von GUI Resourcen um den Faktor N gesenkt (N ist
  409.         abhängig von der Applikation). Der Resource Manager führt ein 
  410.         automatisches Recycling durch. Dadurch kann das Windows 95/98 GUI
  411.         Problem vermieden werden, das die Win9x Betriebssyteme haben.
  412.  
  413.  
  414.      4. Compilieren
  415.   
  416.         Der Xbase++ Compiler akzeptiert jetzt mehrere Dateinamen als Parameter.
  417.         Alternativ kann eine Skriptdatei auf der Befehlszeile angegeben werden,
  418.         die eine Liste von PRG Dateinamen enthält.
  419.  
  420.         xpp Datei1.prg Datei2.prg /link
  421.  
  422.         xpp @Liste.txt /link
  423.   
  424.         PBuild nutzt bereits diese neue Eigenschaft des Compilers, so daß
  425.         die Zeit für Compile-Link Zyklen um bis zu 50% verkürzt wird.
  426.  
  427.  
  428.      5. STD.CH
  429.  
  430.         Alle Datenbank-Befehle wurden dahingehend geändert, daß ein "Early
  431.         binding" stattfindet, wenn Makro-Ausdrücke als Befehlsparameter
  432.         angegeben sind. Dadurch wird die Ausführungsgeschwindigkeit von
  433.         Ausdrücken wie diesem verbessert:
  434.  
  435.         cFilter := "Die Filter Bedingung"
  436.         SET FILTER TO &cFilter
  437.   
  438.  
  439.      6. DBESYS.PRG
  440.   
  441.         Zusätzlich zu DBFDBE und NTXDBE werden die DatabaseEngines DELDBE und
  442.         SDFDBE bei einem Programmstart geladen.
  443.  
  444.  
  445.      7. Event handling
  446.   
  447.         Der Aufruf von Callback Methoden erfolgt "synchron" und nicht mehr
  448.         "asynchron". Das bedeutet: Wenn Sie eine Klasse von einem Xbase Part
  449.         ableiten, der ein Standardverhalten für bestimmte Ereignisse hat,
  450.         und wenn Sie eine Callback Methode zur Ereignisbehandlung überladen,
  451.         so muß die entsprechende Methode in der Superklasse aufgerufen werden,
  452.         damit ein Xbase Part sein Standardverhalten zeigt.
  453.   
  454.         Es gibt ein paar neue Beispielprogramme, die diese wichtige Änderung
  455.         verdeutlichen. Sehen Sie sich dazu diese Dateien an:
  456.  
  457.         ..\SAMPLES\BASICS\GUIEVENT\USERPBN.PRG
  458.         ..\SAMPLES\BASICS\GUIEVENT\USERSLE.PRG
  459.  
  460.         ..\SAMPLES\SOLUTION\CALCSLE\CALCSLE.PRG
  461.   
  462.         Hinweis: Die Callback Codeblöcke werden wie bisher behandelt, d.h.
  463.         ein Xbase Part hat bereits auf ein Ereignis reagiert, bevor der
  464.         Callback Codeblock ausgeführt wird.
  465.  
  466.  
  467.      8. XPF und XFF Dateien
  468.  
  469.         Das Dateiformat für XPF Dateien (XFF Dateien beim FormDesigner) wurde
  470.         in Service Level 2 geändert. SL2 erkennt das alte XPF Format und
  471.         konvertiert es automatisch in das neue Format, d.h. SL2 ist
  472.         abwärtskompatibel. 
  473.  
  474.         Frühere Xbase++ Versionen können das Format ab SL2 nicht mehr lesen.
  475.         (SL1 kann keine XPF Dateien lesen, die von SL2 erzeugt wurden, aber SL2
  476.          kann die von SL1 erzeugten Dateien lesen).
  477.  
  478.  
  479.      9. XbpGet Klasse
  480.   
  481.         Wir haben die XbpGet-Klasse überarbeitet, so daß eine korrekte Prä- und
  482.         Postvalidierung von XbpGet-Objekten durchgeführt wird. Für die Validierung
  483.         ist es unerheblich, ob sich ein XbpGet-Objekt in einem modalen oder
  484.         nicht-modalen Fenster befindet. Allerdings hat die Situation
  485.         "Ein XbpGet-Objekt befindet sich in einem nicht-modalen Fenster" dazu
  486.         geführt, daß wir der XbpGet-Klasse eine XbpGetController-Klasse zur
  487.         Seite stellen mußten, die den Fokuswechsel zwischen XbpGet-Objekten
  488.         überwacht und die Validierung vornimmt. Das bedeutet für Sie: falls
  489.         Sie XbpGet-Objekte verwenden, müssen Sie Ihren Code ändern. Ein
  490.         XbpGet-Objekt funktioniert nicht mehr ohne ein XbpGetController-Objekt.
  491.   
  492.         Beide Klassen, XbpGet und XbpGetController, liegen im PRG Quellcode
  493.         vor. Falls es Sie interessiert, wie man einen Xbase Part bis in die
  494.         unterste Ebene hinein beeinflussen kann, empfehlen wir Ihnen die
  495.         Lektüre dieser beiden Dateien:
  496.  
  497.         ..\SAMPLES\SOLUTION\XBPGET\XBPGET.PRG
  498.         ..\SAMPLES\SOLUTION\XBPGET\XBPGETC.PRG
  499.  
  500.  
  501.     10. XbpBrowse ist editierbar
  502.   
  503.         Sie können ab sofort editierbare Browser mit der XbpBrowse Klasse
  504.         programmieren, da die erforderlichen Methoden überarbeitet wurden und
  505.         dokumentiert sind. Die Editierbarkeit betrifft allerdings nicht die
  506.         XbpBrowse- sondern die XbpColumn-Klasse. Letztere verfügt jetzt über
  507.         Methoden, die zum Editieren einer einzelnen Zelle im Browser
  508.         erforderlich sind (sehen Sie dazu die Liste der Änderungen in der
  509.         Online Dokumentation).
  510.   
  511.         Wir haben für Sie zwei Beispielprogramme vorbereitet, die Ihnen zeigen,
  512.         wie man einen XbpBrowse() basierten Browser editierbar macht. Die
  513.         Programme implementieren die XbpGetColumn-Klasse. Sie verwendet
  514.         XbpGet-Objekte zum Editieren in einem XbpBrowse-Obekt. Die XbpGetColumn-Klasse
  515.         ist von der XbpColumn-Klasse abgeleitet. Sehen Sie sich dazu diese
  516.         Dateien an:
  517.  
  518.         ..\SAMPLES\SOLUTION\XBPGET\GETCOL.PRG
  519.         ..\SAMPLES\SOLUTION\XBPGET\EDITBROW.PRG
  520.  
  521.  
  522.     11. XbpColumn-Komponenten sind dokumentiert
  523.   
  524.         Wir haben das "Geheimnis" der XbpColumn-Klasse gelüftet: 
  525.         Die XbpCellGroup() Klasse ist dokumentiert und kann
  526.         uneingeschränkt von Ihnen genutzt werden. Beachten Sie jedoch, daß wir
  527.         die XbpCellGroup-Klasse als eine Klasse ansehen, die Dienste für
  528.         andere Klassen bereitstellt. XbpCellGroup-Objekte sind als Komponenten
  529.         anderer Objekte nützlich, für sich allein sind sie dagegen fast nutzlos.
  530.         Bettet man aber drei XbpCellGroup-Objekte in ein XbpStatic-Objekt ein,
  531.         entsteht so etwas wie ein XbpColumn-Objekt. Sie können also die
  532.         Browser-Klasse implementieren, die Sie schon immer haben wollten.
  533.  
  534.  
  535.     12. Der Quick-Browser ist da
  536.   
  537.         Es gibt eine neue Browser-Klasse zum schnellen Anzeigen (sehr großer)
  538.         Datenbestände. Wir haben sie XbpQuickBrowse() genannt und
  539.         sie folgt einem vollkommen anderen Prinzip als die XbpBrowse Klasse,
  540.         da sie ein Objekt als Datenquelle benötigt. D.h. sie arbeitet
  541.         nicht direkt in einer Datenbank, bzw. einem Arbeitsbereich, sondern
  542.         benötigt die Dienste der neuen PagedDataStore() Klasse.
  543.   
  544.         Sobald Sie mit der XbpQuickBrowse-Klasse vertraut sind, werden Sie
  545.         feststellen, daß der Geschwindigkeitsvorteil gegenüber der
  546.         XbpBrowse-Klasse auf Kosten der Konfigurierbarkeit erreicht wurde.
  547.         Der Grund dafür ist, daß ein einziges XbpMultiCellGroup()
  548.         Objekt alle Daten anzeigt, die im Browser dargestellt werden.
  549.         Dadurch werden weniger GUI Resourcen als bei einem XbpBrowse-Objekt
  550.         angefordert, das pro Browser-Spalte ein XbpColumn-Objekt benötigt.
  551.         Die Verwendung von nur einem Objekt für alle Browser-Daten ist ein
  552.         Hauptgrund für den Zuwachs an Geschwindigkeit auf Kosten der
  553.         Konfigurierbarkeit.
  554.   
  555.         Wir empfehlen, die XbpBrowse-Klasse zu verwenden, wenn die Konfigurierbarkeit
  556.         ein wichtiger Aspekt ist, und die XbpQuickBrowse dort einzusetzen,
  557.         wo es auf die Schnelligkeit der Datenpräsentation ankommt, wie zum
  558.         Beispiel in einer Look-up Tabelle.
  559.  
  560.  
  561.     13. Online Hilfe
  562.   
  563.         Die Online Hilfe wurde um ein zusätzliches Fenster ergänzt, das
  564.         Befehle und Funktionen anhand der Gruppe auflistet, der sie
  565.         angehören. Das gibt Ihnen eine zusätzliche Möglichkeit, nach
  566.         einer bestimmten Funktion zu suchen. Das neue Fenster wird über
  567.         den "Siehe auch" Button im Hauptfenster der Online Hilfe geöffnet.
  568.  
  569.  
  570.     14. XbpCrt:configure()
  571.  
  572.         Die :configure() Methode in der XbpCrt Klasse hat eine Änderung
  573.         erfahren, so daß der Bildschirmpuffer eines XbpCrt Objekts erhalten
  574.         bleibt. Das kann zu einem abweichenden Verhalten gegenüber einer
  575.         früheren Xbase++ Version führen. Der Befehl CLS muß nach :configure()
  576.         ausgeführt werden, um den Puffer in einem XbpCrt Fenster zu löschen.
  577.  
  578.  
  579.     15. XbpWindow:setFontCompoundName()
  580.  
  581.         Der Rückgabewert der :setFontCompoundName() Methode entspricht jetzt
  582.         immer dem zuletzt gesetzten Font. Das kann in Applikationen zu
  583.         Problemen führen, die davon ausgehen, daß der Rückgabewert mit dem
  584.         übergebenen Parameter übereinstimmt.
  585.  
  586.  
  587.     16. GRA_CLR_BROWN + SetColor( "GR" )
  588.  
  589.         Die Farbe, die mit GRA_CLR_BROWN eingestellt wurde, war nicht
  590.         kompatibel mit der Standard VGA Palette. Daher wurde Sie bei
  591.         256 Farbsystemen auf eine Art von Rot ge"map"t. Das führte zu
  592.         einer nicht kompatiblen Farbdarstellung bei SetColor() im Text-
  593.         und Hybridmodus. 
  594.  
  595.         Die Farbe entspricht jetzt der Standard VGA Palette, was zu einer
  596.         abweichenden Darstellung gegenüber früher führt.
  597.  
  598.  
  599.  ____________________________________
  600.  6.0 So erreichen Sie Alaska Software
  601.  
  602.      Bitte verwenden Sie unsere News Group, wenn Sie uns Informationen zu
  603.      oder Fragen über Xbase++ Service Levels 2 zukommen lassen wollen:
  604.  
  605.          news://news.alaska-software.com/alaska-software.news.xbase++           
  606.  
  607.      Vielen Dank und viel Spass mit SL2!
  608.  
  609.      Ihr Alaska Xbase++ Team
  610.