Da eine Komponente die Form einer 4D Datenbank hat, lässt sie sich ähnlich wie eine Funktionalität in einer Datenbank entwickeln. Es gibt jedoch bestimmte Einschränkungen und Regeln, die in der Natur von Komponenten liegen.
Eine Komponente kann die meisten Objekte von 4D aufrufen: Projektmethoden, Projektformulare, Menüleisten, Auswahllisten, Bilder aus der Bildbibliothek, usw.
Folgende Objekte lassen sich in einer Komponente nicht verwenden:
- Standard 4D Tabellen und Felder (Sie können aber Tabellen und Felder über externe Datenbanken erstellen)
- Tabellenformulare und dazugehörige Formularmethoden (eine Komponente kann dagegen ein Tabellenformular der Host Datenbank aufrufen)
- Benutzerformulare
- Datenbankmethoden und Trigger
Gibt es diese Objekte in Matrix Datenbanken, müssen sie nicht entfernt werden. Ein nicht-verwendbares Objekt wird beim Installieren der Komponente einfach ignoriert.
Hinweis: Benutzer und Gruppen sowie alle in der Matrix Datenbank vergebenen Zugriffsrechte werden in der Host Datenbank nicht berücksichtigt.
In der Host Datenbank sind im Designmodus nur die Projektmethoden sichtbar und auswählbar, die von der Komponente zur Mitbenutzung freigegeben sind. Die Komponente kann umgekehrt Projektmethoden aufrufen, die von der Host Datenbank zur Mitbenutzung freigegeben sind. Weitere Informationen dazu finden Sie im Abschnitt Projektmethoden gemeinsam nutzen.
Nur die von der Komponente veröffentlichten Formulare sind sichtbar und lassen sich als Unterformulare in Formulare der Host Datenbank integrieren. Weitere Informationen dazu finden Sie im Abschnitt Formulare gemeinsam nutzen.
Andere Objekte der Komponente, wie nicht-veröffentlichte Projektformulare, Auswahllisten, Menüs, etc. sind von der Komponente zwar verwendbar, jedoch nicht als Strukturobjekte in der Host Datenbank. Beachten Sie, dass manche Objekte nur einem Teil zugewiesen sind, andere von der Host Datenbank und Komponenten gemeinsam genutzt werden. Weitere Informationen dazu finden Sie im Abschnitt Gemeinsam und nicht-gemeinsam genutzte Objekte.
Eine Komponente kann Plug-Ins verwenden, die im 4D Programm oder in der Host Datenbank installiert sind. Sie können jedoch Plug-Ins nicht im Ordner Components installieren.
Datenbankmethoden und generische Parameter von Matrix Datenbanken (Web Ordner, Datenbank-Eigenschaften, usw.) werden nie berücksichtigt.
Die folgenden 4D Befehle sind für Komponenten nicht geeignet, da sie die Strukturdatei verändern - die nur im Lesemodus geöffnet ist. Bei Ausführung in einer Komponente wird der Fehler -10511 erzeugt mit der Meldung: „Der Befehl Befehlsname kann nicht in einer Komponente aufgerufen werden“:
ON EVENT CALL
Method called on event
SET PICTURE TO LIBRARY
REMOVE PICTURE FROM LIBRARY
SAVE LIST
ARRAY TO LIST
EDIT FORM
CREATE USER FORM
DELETE USER FORM
CHANGE PASSWORD
EDIT ACCESS
Set group properties
Set user properties
DELETE USER
CHANGE LICENSES
BLOB TO USERS
SET PLUGIN ACCESS
Hinweise:
- Die 4D Funktion Current form table gibt Nil zurück, wenn sie innerhalb einer Projektmethode aufgerufen wird. Folglich lässt sie sich in einer Komponente nicht verwenden.
- Auch Befehle zu Definition von SQL Daten, wie z.B. die SQL Befehle CREATE TABLE, DROP TABLE, sind in Komponenten nicht verwendbar.
Eine Fehlerverwaltungsmethode, die über den Befehl ON ERR CALL eingerichtet wurde, gilt nur für die laufende Datenbank. Erzeugt eine Komponente einen Fehler, wird nicht die Fehlerverwaltungsmethode ON ERR CALL der Host-Datenbank aufgerufen, und umgekehrt.
Eine Komponente kann keine Tabelle und Felder verwenden, die in der 4D Struktur der Matrix Datenbank definiert wurden. Sie können jedoch externe Datenbanken erstellen und verwenden, und dann deren Tabellen und Felder gemäß Ihren Bedürfnissen verwenden. Sie können externe Datenbanken über SQL anlegen und verwalten. Eine externe Datenbank ist eine 4D Datenbank, die unabhängig von der 4D Hauptdatenbank ist, sie kann jedoch von der 4D Hauptdatenbank aus arbeiten. Eine externe Datenbank verwenden bedeutet, diese Datenbank temporär als die aktuelle Datenbank festlegen, d.h. als Zieldatenbank für SQL Anfragen, die von 4D ausgeführt werden. Sie können externe Datenbanken über den SQL Befehl CREATE DATABASE anlegen.
Weitere Informationen dazu finden Sie im Handbuch SQL Reference unter About external databases.
Der folgende Code ist in einer Komponente enthalten und führt mit einer externen Datenbank drei Grundaktionen aus:
- Erstellt eine externe Datenbank, sofern noch keine existiert
- Fügt in der externen Datenbank Daten hinzu
- Liest Daten aus einer externen Datenbank ein
Die externe Datenbank erstellen:
<>MyDatabase:=Get 4D folder+"\MyDB"
Begin SQL
CREATE DATABASE IF NOT EXISTS DATAFILE :[<>MyDatabase];
USE DATABASE DATAFILE :[<>MyDatabase];
CREATE TABLE IF NOT EXISTS KEEPIT
(
ID INT32 PRIMARY KEY,
kind VARCHAR,
name VARCHAR,
code TEXT,
sort_order INT32
);
CREATE UNIQUE INDEX id_index ON KEEPIT (ID);
USE DATABASE SQL_INTERNAL;
End SQL
In die externe Datenbank schreiben:
$Ptr_1:=$2
$Ptr_2:=$3
$Ptr_3:=$4
$Ptr_4:=$5
$Ptr_5:=$6
Begin SQL
USE DATABASE DATAFILE :[<>MyDatabase];
INSERT INTO KEEPIT
(ID, kind, name, code, sort_order)
VALUES
(:[$Ptr_1], :[$Ptr_2], :[$Ptr_3], :[$Ptr_4], :[$Ptr_5]);
USE DATABASE SQL_INTERNAL;
End SQL
Aus einer externen Datenbank einlesen:
$Ptr_1:=$2
$Ptr_2:=$3
$Ptr_3:=$4
$Ptr_4:=$5
$Ptr_5:=$6
Begin SQL
USE DATABASE DATAFILE :[<>MyDatabase];
SELECT ALL ID, kind, name, code, sort_order
FROM KEEPIT
INTO :$Ptr_1, :$Ptr_2, :$Ptr_3, :$Ptr_4, :$Ptr_5;
USE DATABASE SQL_INTERNAL;
End SQL
Komponenten können Ressourcen verwenden, entweder die konventionellen Mac OS Ressourcen oder Dateien vom Typ XLIFFComponents.
Gemäß den Richtlinien zur Ressourcen-Verwaltung (siehe Architektur der Anwendung), müssen Ressource Dateien von Komponenten im Ordner Resources abgelegt werden, der neben der Datei .4db oder .4dc der Komponente liegt. Bei Komponenten mit der Architektur .4dbase (empfohlene Architektur) muss der Ordner Resources innerhalb dieses Ordners liegen.
Folgende Operationen laufen automatisch ab: Die Komponente lädt automatisch die XLIFF Dateien, die in ihrem Ordner Resources gefunden werden. Eine Komponente verwendet auch automatisch die konventionellen Mac OS Ressourcen aus der .rsr Datei, die neben den Dateien .4db oder .4dc liegt. “Konventionelle” Ressource Dateien im Ordner Resources müssen über 4D Befehle im Kapitel “Ressourcen” explizit in die Komponente geladen werden.
In einer Host Datenbank mit einer oder mehreren Komponenten haben jede Komponente sowie die Host Datenbanken ihre eigenen Ressource-Dateien. Ressourcen sind zwischen den verschiedenen Datenbanken aufgeteilt: Es ist nicht möglich, von Komponente B oder von der Host Datenbank auf die Ressourcen von Komponente A zuzugreifen. Weitere Informationen dazu finden Sie im Abschnitt Gemeinsam und nicht-gemeinsam genutzte Objekte.
4D bietet Entwicklern die Möglichkeit, ihre Komponenten mit Online Hilfe zu versehen. Die Vorgehensweise ist dieselbe wie für 4D Datenbanken (siehe Anhang A: Eigene Online-Hilfe zuordnen):
- Die Hilfedatei für Komponenten muss die Endung .htm, .html oder nur für Windows .chm haben.
- Die Hilfedatei muss neben der Strukturdatei der Komponente liegen und denselben Namen wie die Strukturdatei haben.
- Diese Datei wird dann automatisch in das Menü Hilfe der Anwendung geladen. Sie hat den Namen Hilfe für..., gefolgt vom Namen der Hilfedatei.