4D v16.3

Komponente entwickeln

Home

 
4D v16.3
Komponente entwickeln

Komponente entwickeln  


 

 

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 nur “Projektformulare” verwenden, also Formulare, die keiner Tabelle zugeordnet sind. Sie kann alle Projektformulare aus der Matrix Datenbank verwenden.
  • Eine Komponente kann Tabellenformulare der Host Datenbank aufrufen. Beachten Sie, dass Sie in diesem Fall zur Angabe von Formularen im Code nicht Tabellennamen in eckigen Klammern [], sondern Zeiger verwenden müssen.
    Hinweis:
    Verwendet eine Komponente den 4D Befehl ADD RECORD, wird das aktuelle Eingabeformular im Kontext der Host Datenbank angezeigt. Folglich kann die Komponente, falls das Formular Variablen enthält, nicht darauf zugreifen. Weitere Informationen dazu finden Sie im Abschnitt Interaktion zwischen Komponenten und Host Datenbanken.
  • Sie können Formulare von Komponenten als Unterformulare in der Host Datenbank verwenden, d.h. Sie können insbesondere Komponenten mit grafischen Objekten entwickeln. Zum Beispiel basieren Widgets von 4D auf Unterformularen in Komponenten. Weitere Informationen dazu finden Sie im Abschnitt Formulare gemeinsam nutzen.

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" // (Windows) speichert die Daten in einem autorisierten Verzeichnis
 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 // Findet über Zeiger Daten aus der Host Datenbank
 $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 // Greift über Zeiger auf Daten der Host Datenbank zu
 $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.

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: 4D Komponenten entwickeln und installieren

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Designmodus ( 4D v16)
4D Designmodus ( 4D v16.1)
4D Designmodus ( 4D v16.3)