Das RecList-Objekt zur Anzeige von Datensätzen ist seit Jahren integraler Bestandteil der Objekt-Palette von CONZEPT 16. Das von Grund auf neu entwickelte RecView-Objekt löst sich erst seit ein paar Wochen aus dem Schatten seines Vorläufers.
Bei der Erstellung im Designer sehen die beiden Objekte zunächst optisch fast identisch aus. Auch die enthaltenen Objekt-Eigenschaften sind weitgehend dieselben.
Doch haben wir bei der Entwicklung des neuen Objektes einige Aspekte der RecList näher untersucht und beim Design verbessert.
Der vorliegende erste Teil befasst sich mit der Verwendung von Datensatzpuffern.
Beim Durchstöbern der Eigenschaften des RecView fällt zunächst auf, dass die Eigenschaft wpDbRecBuf
nicht mehr existiert. Da die RecList zur Anzeige von Datensätzen die globalen Datensatzpuffer liest, verändert sie diese zugleich auch. Die Eigenschaft wpDbRecBuf
war deshalb notwendig, um die Feldpuffer sichern und wiederherstellen zu können. Wurde die Eigenschaft nicht verwendet, dann konnte das zu ungewollten Seiteneffekten führen, insbesondere wenn die Applikation umfangreich ist und mehrere RecList-Objekte verwendet werden.
Das RecView-Objekt verwendet im Gegensatz zur RecList eigene Datensatzpuffer und verändert nicht die globalen Felder.
Das folgende Beispiel zeigt, was gemeint ist:
(Die komplette Datenbank finden Sie übrigens als Download am Ende des Artikels)
@A+
@C+
//@define REC_VIEW_TEST
sub EvtCreated
(
aEvt : event; // Event
)
: logic;
{
WinDialogBox(0,'ART.iNummer',CnvAI(ART.iNummer),
_WinIcoInformation,_WinDialogOk,1);
return(true);
}
main
{
ART.iNummer # 1;
@ifdef REC_VIEW_TEST
WinDialog('RecViewTest',_WinDialogCenterScreen);
@else
WinDialog('RecListTest',_WinDialogCenterScreen);
@endif
}
Das Beispiel lädt in Abhängigkeit des Makros REC_VIEW_TEST
entweder einen Dialog mit einer RecList (Abb. links) oder mit einem RecView (Abb. rechts).
Der globale Feldpuffer ART.iNummer
wird vor dem Starten des Dialoges auf den Wert eins gesetzt. Wenn die Prozedur durchgeführt wird, erscheint das folgende Meldungsfenster:
Wie zu sehen ist, enthält ART.iNummer
nun den Wert des letzten sichtbaren Satzes in der RecList. Beim Aufbau werden also die globalen Feldpuffer der verwendeten Datei verändert.
Wird das Makro definiert, die Prozedur übersetzt und ausgeführt, erscheint jetzt folgende Meldung:
Der globale Feldpuffer ART.iNummer
enthält jetzt weiterhin den Wert eins.
Dies ist deshalb der Fall, da das RecView intern zwei eigene Datensatzpuffer verwaltet. Der zweite ist notwendig für die Anzeige von verknüpften Datensätzen (Eigenschaft wpDbLinkFileNo
).
Ausblick
Im nächsten Teil werde ich näher erläutern, welche Unterschiede bei der Programmierung, im Hinblick auf Datensatzpuffer zu berücksichtigen sind.