Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle D2k फॉर्म में विंडो प्रबंधन

Oracle D2k फ़ॉर्म में विंडो प्रबंधन

यह खंड Oracle D2k प्रपत्रों में विंडो प्रबंधन की दो बहुत उपयोगी तकनीकों को प्रस्तुत करता है:ऊपरी-दाएँ x आइकन पर क्लिक करके एक सक्रिय विंडो को बंद करना और किसी भी खुली सक्रिय विंडो को किसी प्रपत्र में आकार देना, उसका स्थान बदलना और बंद करना। पूर्व एक बहुत प्रशंसित उपयोगकर्ता आवश्यकता है जिसमें Oracle फ़ॉर्म की कमी है; यह किसी भी मानक विंडोज एप्लिकेशन के सख्त अनुरूप है। दूसरी तकनीक प्रत्येक खुली खिड़की को अलग-अलग बंद करने में प्रोग्रामिंग प्रयास के साथ-साथ अंतिम उपयोगकर्ता प्रयास को कम करने के लिए एक सामान्य दिनचर्या है।

x चिह्न के साथ विंडो बंद करना

ऊपरी-दाएं कोने में x आइकन पर क्लिक करके एक विंडो बंद करना अक्सर आवश्यक विशेषता है और मानक विंडोज कार्यक्षमता भी है। हालांकि इस तकनीक को फ़ॉर्म द्वारा अनदेखा किया जाता है, आप इसे कोड की कुछ पंक्तियों के माध्यम से प्राप्त कर सकते हैं। ऐसा करने के लिए, WHEN-WINDOW-CLOSED लिखें। ट्रिगर करें, और विंडो से बाहर नेविगेट करें या :SYSTEM.EVENT_WINDOW. की जांच करके आवश्यकतानुसार फ़ॉर्म से बाहर निकलें। उदाहरण के लिए, जब सक्रिय विंडो कंसोल विंडो है (जो आमतौर पर WINDOW1 है, तो x क्लिक करके किसी प्रपत्र से बाहर निकलने के लिए) ), प्रक्रिया p_close_window निम्नानुसार कोडित किया जा सकता है:
PROCEDURE p_close_window(p_window_name  VARCHAR2,

                         console_window VARCHAR2,

                         ret_code OUT NUMBER)

IS

   Win_id Window;

BEGIN

Win_id := FIND_WINDOW(p_window_name);

    IF ID_NULL(win_id) THEN

        Ret_code := -1;

        Return;

     END IF;



   IF NAME_IN('SYSTEM.EVENT_WINDOW') = p_window_name THEN

      IF console_window = 'Y'THEN

         DO_KEY('EXIT_FORM');

      ELSE

       SET_WINDOW_PROPERTY(win_id, VISIBLE, PROPERTY_FALSE);

      END IF;

      IF FORM_SUCCESS THEN

        Ret_code := 0;

      ELSE

        Ret_code := -1;

      END IF;

   END IF;



END;

यह प्रक्रिया इस अर्थ में सामान्य है कि इसका उपयोग किसी भी विंडो को बंद करने के लिए किया जा सकता है, न कि केवल कंसोल विंडो को बंद करने के लिए। एक्स आइकन पर क्लिक करके उस विशेष फॉर्म को बंद करने से पहले किसी विशेष जांच का ध्यान रखने के लिए एक फॉर्म-विशिष्ट कुंजी निकास लिखा जा सकता है।

किसी भी विंडो का आकार बदलना, उसका स्थान बदलना और बंद करना

स्टैक्ड कैनवस रखने वाली चाइल्ड विंडो को प्राथमिक विंडो का हिस्सा बनने वाली जानकारी प्रदर्शित करने के लिए अक्सर एक रूप में आवश्यक होता है। उदाहरण के लिए, प्राथमिक विंडो में एक चयन सूची प्रदर्शित की जा सकती है, और बाद के विवरण और उप-विवरण चाइल्ड विंडो द्वारा रखे गए एक या अधिक स्टैक्ड कैनवस में दिखाई दे सकते हैं। इनमें से प्रत्येक विंडो को गतिशील रूप से आकार देना, बदलना या बंद करना आवश्यक है जब एक ही समय में कई विंडो प्रदर्शित की जानी चाहिए। इसके लिए बड़ी मात्रा में कोड की आवश्यकता होती है। यह तकनीक किसी भी विंडो को एक ही रूप में आकार देने, बदलने और बंद करने के लिए एक सामान्य दिनचर्या प्रदान करती है, इस प्रकार प्रोग्रामर को आवश्यक पर्याप्त कोड लिखने के लिए आवश्यक समय और प्रयास की बचत होती है। युक्तिईवेंट विंडो में close_allowed, . होना चाहिए resize_allowed, और स्थानांतरित_अनुमति गुण हां/सही पर सेट हैं डिजाइन समय पर। डिफ़ॉल्ट क्लोजिंग, रीसाइज़िंग और रीपोज़िशनिंग सुविधाओं को सक्षम करने के लिए यह आवश्यक है। किसी भी विंडो को आकार देने और बदलने की प्रक्रिया समान पंक्तियों में लिखी जा सकती है:
PROCEDURE p_resize_window(p_window_name  VARCHAR2,

                          console_window VARCHAR2,

                          width NUMBER,

                          height NUMBER,

                          ret_code OUT NUMBER)

IS

   Win_id Window;

BEGIN



/* The window name, its target width, and its height are passed

as input parameters. Also, an additional parameter to identify whether

the window under consideration is a console window is passed as input. */



    Win_id := FIND_WINDOW(p_window_name);

/* If input window does not exist, exit the procedure and return –1 */



    IF ID_NULL(win_id) THEN

        Ret_code := -1;

        Return;

     END IF;

/* If the input window is the active window and is not the console window,

resize it to the specified width and height */



   IF NAME_IN('SYSTEM.EVENT_WINDOW') = p_window_name THEN

      IF console_window = 'Y'THEN

        NULL; /* CANNOT RESIZE CONSOLE WINDOW */

      ELSE

        RESIZE_WINDOW(win_id, WIDTH, HEIGHT);

      END IF;

      IF FORM_SUCCESS THEN

        Ret_code := 0;

      ELSE

        Ret_code := -1;

      END IF;

   END IF;



END;



PROCEDURE p_reposition_window(p_window_name VARCHAR2,

                              console_window VARCHAR2,

                              xpos number,

                              ypos NUMBER,

                              ret_code OUT NUMBER)

IS

   Win_id Window;

BEGIN

/* The window name and its target (x,y) position are passed as

input parameters. Also, an additional parameter to identify whether the window

under consideration is a console window is passed as input. */



     Win_id := FIND_WINDOW(p_window_name);



/* If the input window does not exist, exit the procedure and return –1 */



    IF ID_NULL(win_id) THEN

        Ret_code := -1;

        Return;

     END IF;

/* If the input window is the active window and is not the console window,

resize it to the specified width and height */



   IF NAME_IN('SYSTEM.EVENT_WINDOW') = p_window_name THEN

      IF console_window = 'Y'THEN

        NULL; /* CANNOT RESIZE CONSOLE WINDOW */

      ELSE

        MOVE_WINDOW(win_id, xpos, ypos);

      END IF;

      IF FORM_SUCCESS THEN

        Ret_code := 0;

      ELSE

        Ret_code := -1;

      END IF;

   END IF;



END;

पिछली दो प्रक्रियाओं और पिछले अनुभाग में दी गई प्रक्रियाओं को action_type नामक एक अतिरिक्त पैरामीटर जोड़कर एक में सामान्यीकृत किया जा सकता है :
PROCEDURE p_action_window(p_window_name VARCHAR2,

                          console_window VARCHAR2,

                          action_type VARCHAR2,

          Width number, height number, xpos number, ypos number,

          ret_code OUT NUMBER,

)

IS

   Win_id Window;

   V_window_name VARCHAR2(40);

BEGIN



/* This procedure takes the action type (CLOSE, RESIZE or REPOSITION )

as an input parameter and calls the corresponding procedure

(p_close_window,

 p_rresize_window or p_reposition_window ) to perform that action.

Initially, it checks for the existence of the input window name */



Win_id := FIND_WINDOW(NAME_IN(p_window_name));



    IF ID_NULL(win_id) THEN

        Ret_code := -1;

        Return;

     END IF;

     IF (action_type = 'CLOSE') THEN

          P_close_window(p_window_name, console_window, ret_code);

      ESLIF (action_type = 'RESIZE') THEN

        P_resize_window(p_window_name, console_window, ret_code);

      ELSIF (action_type = 'REPOSITION')

        P_reposition_window(p_window_name, console_window, ret_code);

      END IF;

      IF FORM_SUCCESS THEN

          ret_code := 0;

       ELSE

          (ret_code = -1);

       END IF;

   END IF;



END;

p_close_window . पर कॉल करें p_action_window . से बदला जा सकता है निम्नानुसार है:
WHEN-WINDOW-CLOSED



DECLARE

    ret_code NUMBER;

BEGIN



p _action_window('WINDOW0'), 'Y','CLOSE', ret_code);

IF (ret_code <>  0) THEN

    MESSAGE('Error closing Console Window!');

    RAISE FORM_TRIGGER_FAILURE;

END IF;

END;

तीन प्रक्रियाओं में से प्रत्येक के लिए कोड p_close_window, p_resize_window, और p_reposition_window एप्लिकेशन-विशिष्ट तर्क को संभालने के लिए अनुकूलित किया जा सकता है। उदाहरण के लिए, p_close_window . के लिए कोड प्रक्रिया को संबंधित विंडो से स्पष्ट नेविगेशन आरंभ करने के लिए कॉल शामिल करने के लिए अनुकूलित किया जा सकता है, जैसे GO_ITEM या GO_BLOCK, जो उस विंडो को बंद करने में सक्षम करेगा और साथ ही एक क्या आप सहेजना चाहते हैं? लंबित डेटाबेस परिवर्तनों के मामले में अलर्ट। साथ ही, जैसा कि कंसोल विंडो को बंद करने के उदाहरण में देखा गया है, EXIT_FORM उन सभी विंडो को बंद करने में सहायक हो सकता है जो किसी विशेष रूप से बाहर निकलने की शुरुआत करते हैं। युक्ति अंतर्निहित SET_WINDOW_PROPERTY पर कॉल करें संपत्ति के साथ दृश्यमान गलत . पर सेट करें विंडो को केवल तभी बंद (छुपा) करता है जब विंडो में कोई नेविगेट करने योग्य आइटम न हो या विंडो शैली Document. यदि विंडो में कम से कम एक नेविगेट करने योग्य आइटम है, या विंडो शैली डायलॉग है, तो विंडो तब तक प्रदर्शित रहती है जब तक कि उपयोगकर्ता स्पष्ट रूप से विंडो से बाहर नहीं निकल जाता। साथ ही, यदि विंडो मोडल है, तो बाहर निकलने का एकमात्र तरीका स्पष्ट नेविगेशन के माध्यम से है। p_close_window . के अनुकूलन द्वारा इसका ध्यान रखा जा सकता है प्रक्रिया जैसा कि पिछले उदाहरण में बताया गया है।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle क्लाइंट स्थापना त्रुटि - पथ बहुत लंबा

  2. ओरेकल एसक्यूएल ऑर्डर सबक्वायरी समस्याओं में!

  3. Oracle में regexp_substr . के साथ सीमांकक के रूप में स्पेस और कैरेक्टर द्वारा विभाजित स्ट्रिंग

  4. फोर्स ओरेकल ड्रॉप ग्लोबल टेम्प टेबल

  5. SQLcl का उपयोग करते समय Oracle क्वेरी परिणामों को JSON फ़ाइल में कैसे निर्यात करें