Programmierung

RecView – Grundlagen (Teil1)

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).

RecList und RecViewVergleich RecList mit RecView

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:

RecList 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:

RecView Meldungsfenster

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.

Download

Beispieldatenbank RecView.zip (32.47 KB)
Sie müssen angemeldet sein, um die Datei herunterladen zu können.

Keine Kommentare

Kommentar abgeben