21... Flexiblen Code schreiben
Kapitel 21: Flexiblen Code schreiben Ziele Am Ende dieser Unterrichtseinheit verfügen Sie über folgende Kenntnisse: Flexiblen Code beschreiben, Vorteile der Verwendung von Systemvariablen aufführen, eingebaute Prozeduren erkennen, die flexible Codierung unterstützen, Code zum Referenzieren von Objekten durch interne ID schreiben, Code zum indirekten Referenzieren von Objekten schreiben. 21-2 Copyright Oracle Corporation, 1998. All rights reserved. 21-2 Oracle Developer: Form Builder I
Einführung Einführung Übersicht Oracle Developer Form Builder verfügt über eine Vielzahl von Funktionen, die es Ihnen ermöglichen, flexiblen, wiederverwendbaren Code zu erstellen. Ziele Am Ende dieser Unterrichtseinheit verfügen Sie über folgende Kenntnisse: Flexiblen Code beschreiben, die Vorteile der Verwendung von Systemvariablen beschreiben, eingebaute Prozeduren erkennen, die flexible Codierung unterstützen, Code zum Referenzieren von Objekten mittels interner ID schreiben, Code zum indirekten Referenzieren von Objekten schreiben. Oracle Developer: Form Builder I 21-3
Kapitel 21: Flexiblen Code schreiben Flexibler Code Ist wiederverwendbarer Code Ist generischer Code Vermeidet fest codierte (hard-coded) Objektnamen Vereinfacht die Verwaltung Erhöht die Produktivität 21-3 Copyright Oracle Corporation, 1998. All rights reserved. 21-4 Oracle Developer: Form Builder I
Was versteht man unter flexiblem Code? Was versteht man unter flexiblem Code? Flexibler Code ist Code, den Sie wiederverwenden können. Flexibler Code ist häufig generischer Code, den Sie in jedem beliebigen Form-Modul in einer Anwendung verwenden können. Normalerweise werden dabei anstelle von fest codierten (hardcoded) Objektnamen Systemvariablen verwendet. Warum flexiblen Code schreiben? Flexibler Code bietet folgende Vorteile: Er ist für Sie und für andere einfacher zu verwalten. Er erhöht die Produktivität. Oracle Developer: Form Builder I 21-5
Kapitel 21: Flexiblen Code schreiben Systemvariablen für aktuellen Kontext Eingabefokus SYSTEM.CURSOR_BLOCK SYSTEM.CURSOR_RECORD SYSTEM.CURSOR_ITEM SYSTEM.CURSOR_VALUE 21-4 Copyright Oracle Corporation, 1998. All rights reserved. Systemvariablen für aktuellen Kontext Trigger-Fokus SYSTEM.TRIGGER_BLOCK SYSTEM.TRIGGER_RECORD SYSTEM.TRIGGER_ITEM 21-5 Copyright Oracle Corporation, 1998. All rights reserved. 21-6 Oracle Developer: Form Builder I
Systemvariablen für flexible Codierung verwenden Systemvariablen für flexible Codierung verwenden In diesem Kapitel verwenden Sie die Systemvariablen, die den aktuellen Status des Datensatzes, des Blocks und der Form liefern, sowie die Systemvariablen, die zurückgeben, wo sich der Eingabefokus aktuell befindet. Systemvariablen zum Ermitteln des aktuellen Eingabefokus Systemvariable CURSOR_BLOCK CURSOR_RECORD CURSOR_ITEM CURSOR_VALUE Funktion Bestimmt, welcher Block aktiviert ist. Bestimmt, welcher Datensatz aktiviert ist. Bestimmt, welches Item in welchem Block aktiviert ist. Bestimmt den Wert des aktivierten Items. Systemvariablen zum Ermitteln des aktuellen Trigger-Fokus Systemvariable TRIGGER_BLOCK TRIGGER_RECORD TRIGGER_ITEM Funktion Bestimmt den Block, der aktiviert war, als der Trigger ursprünglich ausgelöst wurde. Bestimmt die Nummer des Datensatzes, den Form Builder gerade verarbeitet. Bestimmt den Block und das Item, die aktiviert waren, als der Trigger ursprünglich ausgelöst wurde. Hinweis: Die beste Art, Systemvariablen kennenzulernen, ist, während der Ausführung einer Form ihre Werte zu betrachten. Sie können die Systemvariablen mit Hilfe des Debuggers überprüfen. Oracle Developer: Form Builder I 21-7
Kapitel 21: Flexiblen Code schreiben Systemstatus-Variablen When-Button-Pressed ENTER; IF :SYSTEM.BLOCK_STATUS = CHANGED THEN COMMIT_FORM; END IF; CLEAR_BLOCK; IF :SYSTEM.CURSOR_BLOCK = S_ORD THEN GO_BLOCK( S_ITEM ); ELSIF :SYSTEM.CURSOR_BLOCK = S_ITEM THEN GO_BLOCK( S_INVENTORY ); ELSIF :SYSTEM.CURSOR_BLOCK = S_INVENTORY THEN GO_BLOCK( S_ORD ); END IF; 21-6 Copyright Oracle Corporation, 1998. All rights reserved. 21-8 Oracle Developer: Form Builder I
Systemvariablen für flexible Codierung verwenden Systemvariablen zum Bestimmen des aktuellen Status der Form Sie können diese Systemstatus-Variablen verwenden, um Code zu erstellen, der für einen bestimmten Status eine Aktion und für einen anderen Status eine andere Aktion durchführt. SYSTEM.RECORD_STATUS CHANGED INSERT NEW QUERY Beschreibung Der Datensatz wurde aus der Datenbank abgerufen, und ein Basistabellen-Item zum Datensatz wurde aktualisiert. Der Benutzer (oder ein Trigger) hat einen Wert in ein Basistabellen-Item eines nicht abgerufenen Datensatzes eingegeben. Der Benutzer (oder ein Trigger) hat noch keine Werte in das Basistabellen-Item des Datensatzes eingegeben. Der Datensatz wurde aus der Datenbank abgerufen, es wurde aber noch kein Basistabellen-Item zum Datensatz aktualisiert. SYSTEM.BLOCK_STATUS CHANGED NEW QUERY Beschreibung Der Block enthält nur einen Datensatz mit dem Status CHANGED oder INSERT. Der Block enthält ausschließlich NEW-Datensätze. Der Block enthält ausschließlich QUERY-Datensätze. SYSTEM.FORM_STATUS CHANGED NEW QUERY Beschreibung Die Form enthält mindestens einen Datensatz mit dem Status CHANGED oder INSERT. Die Form enthält ausschließlich NEW-Datensätze. Die Form enthält ausschließlich QUERY-Datensätze. Oracle Developer: Form Builder I 21-9
Kapitel 21: Flexiblen Code schreiben Eingebaute Prozeduren GET_ object _PROPERTY GET_APPLICATION_PROPERTY GET_FORM_PROPERTY GET_BLOCK_PROPERTY GET_RELATION_PROPERTY GET_RECORD_PROPERTY GET_ITEM_PROPERTY GET_ITEM_INSTANCE_PROPERTY 21-7 Copyright Oracle Corporation, 1998. All rights reserved. Eingebaute Prozeduren GET_ object _PROPERTY GET_LOV_PROPERTY GET_RADIO_BUTTON_PROPERTY GET_MENU_ITEM_PROPERTY GET_CANVAS_PROPERTY GET_TAB_PAGE_PROPERTY GET_VIEW_PROPERTY GET_WINDOW_PROPERTY 21-8 Copyright Oracle Corporation, 1998. All rights reserved. 21-10 Oracle Developer: Form Builder I
Eingebaute Prozeduren für flexible Codierung verwenden Eingebaute Prozeduren für flexible Codierung verwenden Einige der eingebauten Prozeduren von Form Builder bieten die selbe Art von Runtime-Statusinformation wie eingebaute Systemvariablen. GET_APPLICATION_PROPERTY Die eingebaute Prozedur GET_APPLICATION_PROPERTY gibt Informationen über die aktuelle Form Builder-Anwendung zurück. Beispiel Das folgende Beispiel ruft den Benutzernamen und Betriebssysteminformationen ab: :GLOBAL.username := GET_APPLICATION_PROPERTY(USERNAME); :GLOBAL.o_sys := GET_APPLICATION_PROPERTY(OPERATING_SYSTEM); GET_BLOCK_PROPERTY Die eingebaute Prozedur GET_BLOCK_PROPERTY gibt Informationen über einen bestimmten Block zurück. Beispiel Um festzustellen, welcher Datensatz aktuell auf der ersten (obersten) Zeile eines Blocks sichtbar ist, verwenden Sie:...GET_BLOCK_PROPERTY( blockname,top_record)... GET_ITEM_PROPERTY Die eingebaute Prozedur GET_ITEM_PROPERTY gibt Informationen über ein bestimmtes Item zurück. Beispiel Um festzustellen, auf welcher Canvas das aktivierte Item angezeigt wird, verwenden Sie: DECLARE cv_name varchar2(15); BEGIN cv_name := GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM,item_canvas);... Oracle Developer: Form Builder I 21-11
Kapitel 21: Flexiblen Code schreiben Eingebaute Prozeduren SET_ object _PROPERTY SET_APPLICATION_PROPERTY SET_FORM_PROPERTY SET_BLOCK_PROPERTY SET_RELATION_PROPERTY SET_RECORD_PROPERTY SET_ITEM_PROPERTY SET_ITEM_INSTANCE_PROPERTY 21-9 Copyright Oracle Corporation, 1998. All rights reserved. Eingebaute Prozeduren SET_ object _PROPERTY SET_LOV_PROPERTY SET_RADIO_BUTTON_PROPERTY SET_MENU_ITEM_PROPERTY SET_CANVAS_PROPERTY SET_TAB_PAGE_PROPERTY SET_VIEW_PROPERTY SET_WINDOW_PROPERTY 21-10 Copyright Oracle Corporation, 1998. All rights reserved. 21-12 Oracle Developer: Form Builder I
Eingebaute Prozeduren für flexible Codierung verwenden SET_ITEM_INSTANCE_PROPERTY Die eingebaute Prozedur SET_ITEM_INSTANCE_PROPERTY verändert die angegebene Instanz eines Item in einem Block durch Verändern der angegebenen Item-Eigenschaft. Beispiel Im folgenden Beispiel wird das visuelle Attribut für den aktuellen Datensatz des aktuellen Items auf VA_CURR festgelegt: SET_ITEM_INSTANCE_PROPERTY(:SYSTEM.CURSOR_ITEM, VISUAL_ATTRIBUTE, CURRENT_RECORD, VA_CURR ); SET_MENU_ITEM_PROPERTY Die eingebaute Prozedur SET_MENU_ITEM_PROPERTY verändert die angegebenen Eigenschaften eines Menü-Items. Beispiel Um das Item Save Menu im Menü File zu aktivieren, verwenden Sie folgendes: SET_MENU_ITEM_PROPERTY( FILE.SAVE,ENABLED,PROPERTY_TRUE); SET_TAB_PAGE_PROPERTY Die eingebaute Prozedur SET_TAB_PAGE_PROPERTY legt die Registerkarten-Eigenschaften der angegebenen Tab Canvas Page fest (Leinwandtyp Registerkarte). Beispiel Um tab_page_1 zu aktivieren, falls es bereits deaktiviert wurde, verwenden Sie: DECLARE tbpg_id TAB_PAGE; BEGIN tbpg_id := FIND_TAB_PAGE( tab_page_1 ); IF GET_TAB_PAGE_PROPERTY(tbpg_id, enabled) = FALSE THEN SET_TAB_PAGE_PROPERTY(tbpg_id, enabled, property_true); END IF; END; Oracle Developer: Form Builder I 21-13
Kapitel 21: Flexiblen Code schreiben Objekt-IDs Objekt-ID suchen lov_id := FIND_LOV( my_lov ) ID Objekt nach ID referenzieren...show_lov(lov_id) Objekt nach Namen referenzieren...show_lov( my_lov ) ID 21-11 Copyright Oracle Corporation, 1998. All rights reserved. 21-14 Oracle Developer: Form Builder I
Objekte über interne ID referenzieren Objekte über interne ID referenzieren Form Builder weist jedem von Ihnen erstellten Objekt eine ID zu. Unter einer Objekt-ID versteht man einen internen Wert, der nie angezeigt wird. Sie können die ID eines Objekts anzeigen, indem Sie die Prozedur FIND_ zu dem Objekt aufrufen. Die Prozeduren FIND_ setzen einen vollqualifizierten Objektnamen als Parameter voraus. Verwenden Sie beispielsweise zum Verweisen auf ein Item den Objektnamen BLOCKNAME.ITEMNAME. Die Rückgabewerte der Prozeduren FIND_ (die Objekt-IDs) haben einen bestimmten Typ. Die Typen von Objekt-IDs sind in Form Builder vordefiniert. Jedes Objekt hat einen anderen Typ. Drei Gründe für die Verwendung von Objekt-IDs Performance verbessern: Form Builder sucht das Objekt nur einmal, wenn Sie die Prozedur FIND_ erstmals aufrufen, um die ID abzufragen. Wann immer Sie in einem Trigger über den Namen auf ein Objekt verweisen, muß Form Builder die Objekt-ID jedes Malsuchen. Generischeren Code erstellen. Testen, ob ein Objekt existiert (über die Funktion ID_NULL und das Objekt FIND_ ). Oracle Developer: Form Builder I 21-15
Kapitel 21: Flexiblen Code schreiben Eingebaute Prozeduren FIND_ FIND_FORM FIND_BLOCK FIND_ITEM FIND_RELATION FIND_LOV ID 21-12 Copyright Oracle Corporation, 1998. All rights reserved. Eingebaute Prozeduren FIND_ FIND_WINDOW FIND_VIEW FIND_CANVAS FIND_ALERT FIND_EDITOR ID 21-13 Copyright Oracle Corporation, 1998. All rights reserved. 21-16 Oracle Developer: Form Builder I
Objekte über interne ID referenzieren Form Builder-Klassentypen In der nachfolgenden Tabelle sind einige der Prozeduren FIND_ aufgelistet, zusammen mit den Objektklassen, die sie verwenden, und mit den Rückgabetypen, die sie produzieren. Objektklasse Prozedur Rückgabetyp Alert FIND_ALERT ALERT Block FIND_BLOCK BLOCK Canvas FIND_CANVAS CANVAS Editor FIND_EDITOR EDITOR Form FIND_FORM FORMMODULE Item FIND_ITEM ITEM LOV FIND_LOV LOV Relation FIND_RELATION RELATION View FIND_VIEW VIEWPORT Window FIND_WINDOW WINDOW Oracle Developer: Form Builder I 21-17
Kapitel 21: Flexiblen Code schreiben Objekt-IDs verwenden PL/SQL-Variable des selben Datentyps deklarieren. Variable für spätere Referenz auf Objekt verwenden. Variable nur in aktuellem PL/SQL-Block verwenden. 21-14 Copyright Oracle Corporation, 1998. All rights reserved. Objekt-IDs verwenden Beispiel DECLARE item_var item; BEGIN item_var := FIND_ITEM(:SYSTEM.CURSOR_ITEM); SET_ITEM_PROPERTY(item_var,position,30,55); SET_ITEM_PROPERTY(item_var,prompt_text, Current ); END; 21-15 Copyright Oracle Corporation, 1998. All rights reserved. 21-18 Oracle Developer: Form Builder I
Variablen für Objekt-IDs deklarieren Um eine Objekt-ID zu verwenden, müssen Sie diese zuerst einer Variablen zuordnen. Sie müssen eine Variable des selben Typs wie die Objekt-ID deklarieren. Im folgenden Beispiel wurde die eingebaute Prozedur FIND_ITEM verwendet, um die ID des Items, das aktuell aktiviert ist, der Variablen id_var zuzuordnen. Sobald Sie eine Objekt-ID einer Variablen in einem Trigger oder PL/SQL- Programmblock zuordnen, können Sie diese Variable verwenden, um das Objekt zu referenzieren, statt dafür den Objektnamen zu verwenden. DECLARE id_var item; BEGIN id_var := FIND_ITEM(:SYSTEM.CURSOR_ITEM);... END; Aus den beiden nachfolgenden Beispielen geht hervor, daß Sie entweder einen Item-Namen oder eine Item-ID an die eingebaute Prozedur SET_ITEM_PROPERTY weitergeben können. Die folgenden Aufrufe sind logisch entsprechend: SET_ITEM_PROPERTY( S_ITEM.price,position,50,35); SET_ITEM_PROPERTY(id_var,position,50,35); Sie können entweder Objekt-IDs oder Objektnamen in der selben Argumentliste verwenden, vorausgesetzt, jedes einzelne Argument verweist auf ein bestimmtes Objekt. Es ist jedoch nicht möglich, mit einer Objekt-ID und einem Objektnamen einen voll qualifizierten object_name (blockname.itemname) zu bilden. Der folgende Aufruf ist demnach unzulässig: GO_ITEM(block_id. item_name ); Hinweis: Verwenden Sie die eingebauten Prozeduren FIND_ nur, um ein Objekt im selben Trigger oder PL/SQL-Programmblock mehrmals zu referenzieren. Oracle Developer: Form Builder I 21-19
Kapitel 21: Flexiblen Code schreiben Objekt-IDs verwenden PL/SQL-Variable hat begrenzten Wirkungskreis. Erweiterung.id (.id extension): Vergrößert den Wirkungskreis Konvertiert in numerisches Format Akzeptiert Zuordnung zu globaler Variabler Konvertiert zurück in Objekt-Datentyp 21-16 Copyright Oracle Corporation, 1998. All rights reserved. 21-20 Oracle Developer: Form Builder I
Objekt-IDs außerhalb des ursprünglichen PL/SQL-Blocks verwenden Sie haben gesehen, wie Objekt-IDs im Trigger oder Programmblock mit Hilfe von PL/SQL-Variablen referenziert werden. Sie können diese PL/SQL-Variablen nur im aktuellen PL/SQL-Block referenzieren; Sie können jedoch den Wirkungsbereich einer Objekt-ID erweitern. Um eine Objekt-ID außerhalb des ursprünglichen PL/SQL-Blocks zu referenzieren, müssen Sie die ID für Ihre deklarierte PL/SQL-Variable in numerisches Format (mit der Erweiterung.id) konvertieren und dann einer globalen Variablen zuordnen. Beispiel Im folgenden Trigger-Code-Beispiel wird die Objekt-ID erst einer lokalen PL/SQL-Variablen (item_var) und dann einer globalen Variablen (global.item) zugeordnet. DECLARE item_var item; BEGIN item_var := FIND_ITEM(:SYSTEM.CURSOR_ITEM); :GLOBAL.item := item_var.id; END; Sie können die globale Variable innerhalb der Anwendung weitergeben. Um die Objekt-ID wiederverwenden zu können, müssen Sie sie in ihren ursprünglichen Datentyp zurückkonvertieren. Beispiel Das folgende Beispiel zeigt die Konvertierung der globalen Variablen zurück in ihren ursprünglichen Datentyp PL/SQL Variable. DECLARE item_var item; BEGIN item_var.id := TO_NUMBER(:GLOBAL.item); GO_ITEM(item_var); END; Oracle Developer: Form Builder I 21-21
Kapitel 21: Flexiblen Code schreiben Objekte indirekt referenzieren Direkte Referenz ITEM A KIDSPORT Indirekte Referenz ITEM B ITEM A ITEM A KIDSPORT 21-17 Copyright Oracle Corporation, 1998. All rights reserved. 21-22 Oracle Developer: Form Builder I
Items indirekt referenzieren Items indirekt referenzieren Durch indirektes Referenzieren von Items können Sie generischeren, wiederverwendbaren Code erstellen. Indem Sie Variablen anstelle von tatsächlichen Item-Namen verwenden, können Sie einen PL/SQL- Programmblock erstellen, der jedes Item verwendet, dessen Name der angegebenen Variablen zugeordnet ist. Sie können Items indirekt mit den eingebauten Prozeduren NAME_IN und COPY referenzieren. Hinweis: Verwenden Sie indirekte Referenzierung, um Prozeduren und Funktionen in einem Bibliotheksmodul zu erstellen, da direkte Referenzen nicht aufgelöst werden können. Oracle Developer: Form Builder I 21-23
Kapitel 21: Flexiblen Code schreiben Objekte indirekt referenzieren Funktion NAME_IN Rückgabewert Inhalt einer Variablen Zeichenfolge (Character String) Verwendung Konvertierungsfunktionen für NUMBER und DATE 21-18 Copyright Oracle Corporation, 1998. All rights reserved. Objekte indirekt referenzieren Prozedur COPY Ermöglicht Direktes Kopieren COPY( Kidsport, S_CUSTOMER.name ); Indirektes Kopieren COPY( Kidsport,:GLOBAL.customer_name); 21-19 Copyright Oracle Corporation, 1998. All rights reserved. 21-24 Oracle Developer: Form Builder I
Items indirekt referenzieren Eingebaute Funktion NAME_IN verwenden Die Funktion NAME_IN gibt den Inhalt einer angegebenen Variablen zurück. Die folgenden Anweisungen sind äquivalent. Die erste verwendet eine direkte Referenz auf customer.name, während die zweite eine indirekte Referenz verwendet: IF :S_CUSTOMER.name = Kidsport... In einer Bibliothek könnten Sie diese direkte Referenz vermeiden, indem Sie folgendes verwenden: IF NAME_IN( S_CUSTOMER.name ) = Kidsport... Bei dem Rückgabewert von NAME_IN handelt es sich stets um eine Zeichenfolge. Um NAME_IN für ein Datums- oder ein Nummern-Item zu verwenden, konvertieren Sie die Zeichenfolge in den gewünschten Datentyp mit der entsprechenden Konvertierungsfunktion. Beispiel: date_var := TO_DATE(NAME_IN( S_ORD.date_ordered )); Eingebaute Prozedur COPY verwenden Die eingebaute Prozedur COPY weist einer angegebenen Variablen oder einem Item einen angegebenen Wert zu. Im Gegensatz zur Standard- PL/SQL-Zuordnungsanweisung, können Sie mit Hilfe der eingebauten Prozedur COPY das Item, dessen Wert festgelegt wird, indirekt referenzieren. Das erste Beispiel unten zeigt direkte und das zweite indirekte Referenzierung: COPY( Kidsport, S_CUSTOMER.name ); COPY( Kidsport,:GLOBAL.customer_name); Verwenden Sie die eingebauten Prozeduren COPY und NAME_IN, um einem Item, dessen Name in einer globalen Variablen gespeichert ist, einen Wert zuzuordnen, wie im folgenden Beispiel dargestellt: COPY( Kidsport,NAME_IN( GLOBAL.customer_name )); Oracle Developer: Form Builder I 21-25
Kapitel 21: Flexiblen Code schreiben Zusammenfassung Systemvariablen Um fest codierte (hard-coded) Objektnamen zu vermeiden Um Informationen über den aktuellen Zustand der Form zurückzugeben Eingebaute Prozeduren GET_object_PROPERTY verwenden Um aktuelle Eigenschaftswerte für Form Builder-Objekte zurückzugeben 21-20 Copyright Oracle Corporation, 1998. All rights reserved. Zusammenfassung Objekt-IDs Um die Performance zu verbessern Indirekte Referenzierung Um die Referenzierung von Form- Modul-Variablen in Bibliotheks- und Menümodulen zuzulassen 21-21 Copyright Oracle Corporation, 1998. All rights reserved. 21-26 Oracle Developer: Form Builder I
Zusammenfassung Zusammenfassung Folgendes verwenden Sie zum Erstellen von flexiblem Code: Systemvariablen - Um fest codierte (hardcoded) Objektnamen zu vermeiden - Um Informationen über den aktuellen Zustand der Form zurückzugeben Eingebaute Prozeduren GET_object_PROPERTY - Um die aktuellen Eigenschaftswerte für Form Builder-Objekte zurückzugeben Objekt-IDs - Um die Performance zu verbessern Indirekte Referenzierung - Um zuzulassen, daß Form-Modul-Variablen in Bibliotheks- und Menümodulen referenziert werden Oracle Developer: Form Builder I 21-27
Kapitel 21: Flexiblen Code schreiben Übung 21 - Übersicht Produkt-Image nur dann mit Bilder füllen, wenn das Image Item angezeigt wird. Trigger When-Button-Pressed der Schaltfläche Image_Button ändern, so daß Objekt-IDs anstelle von Objektamen verwendet werden. 21-22 Copyright Oracle Corporation, 1998. All rights reserved. 21-28 Oracle Developer: Form Builder I
Übungsteil - Übersicht: Kapitel 21 Übungsteil - Übersicht: Kapitel 21 In dieser Übung verwenden Sie Eigenschaften und Variablen in der Form ORDGxx, um flexible Verwendung von Code zu ermöglichen. Sie verwenden auch Objekt-IDs. Übungsinhalte Sie füllen die Produkt-Images nur dann mit Daten, wenn das Image-Item angezeigt wird. Sie verändern den Trigger When-Button-Pressed der Schaltfläche Image_Button dahingehend, daß Objekt-IDs anstelle von Objektnamen verwendet werden. Oracle Developer: Form Builder I 21-29
Kapitel 21: Flexiblen Code schreiben Übung 21 1 Ändern Sie in der Form ORDGxx die Trigger, die die Abbildung eines Produktes anzeigen, sobald das Item Product_Image angezeigt wird. Fügen Sie dem Code einen Test hinzu, um die Eigenschaft Visible für Product_Image zu überprüfen. Führen Sie die Trigger-Aktionen nur dann aus, wenn das Image gerade angezeigt wird. Verwenden Sie die eingebaute Funktion GET_ITEM_PROPERTY. 2 Ändern Sie den Trigger When-Button-Pressed für die Schaltfläche Image_Button dahingehend, daß Objekt-IDs verwendet werden. Verwenden Sie eine Funktion FIND_object, um die IDs der einzelnen vom Trigger referenzierten Items zu erhalten. Deklarieren Sie Variablen für diese IDs, und verwenden Sie sie in jeder Item-Referenz im Trigger. 3 Speichern und kompilieren Sie die Form, und führen Sie sie aus, um diese Funktionen zu testen. 21-30 Oracle Developer: Form Builder I