WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


EXIT Æ®¸®°Å(trigger)¿¡ÀÇÇÑ Á¾·á À̺¥Æ® ÇÁ·Î½ÃÀú¿¡¼­ ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇϱ⿡´Â

À©µµ¿ì¸¦ ´Ý°í ÀÀ¿ëÇÁ·Î±×·¥À» Á¾·áÇÏ´Â °æ¿ì µ¥ÀÌÅÍÀÇ ÀúÀåÀ» ½ÇÇàÇÏ°í³ª Á¾·áÇÒ°¡ ¸»°¡¸¦ ´ëÈ­ »óÀڷΠǥ½ÃÇÒ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ±×·² °æ¿ì WSCwindow / WSCmainWindow Ŭ·¡½ºÀÇ EXIT Æ®¸®°Å(trigger)·Î À̺¥Æ® ÇÁ·Î½ÃÀú ¸¦ ÀÌ¿ëÇÏ¸é º¯¸®ÇÕ´Ï´Ù. WSCwindow/WSCmainWindow Ŭ·¡½º´Â À©µµ¿ì°¡ ºÒ°¡½Ã »óÅ¿¡µÈ °æ¿ì¿¡ EXIT Æ®¸®°Å(trigger)¸¦ ºÒ·¯ ÀÀ¿ëÇÁ·Î±×·¥°¡ Á¾·áÇϱâ Àü¿¡ À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÒ ±â´ÉÀ» °¡Áö°íÀÖ½À´Ï´Ù.

¸ÕÀú WSCwindow ȤÀº WSCmainWindow Ŭ·¡½ºÀÇ ¼Ó¼º "exit"À» True ·Î ÇÕ´Ï´Ù. ÀÌ ¼Ó¼ºÀº ÀÀ¿ëÇÁ·Î±×·¥ÁßÀÇ À©µµ¿ì¿¡¼­ ƯÈ÷ ¸ÞÀηΠÀÌ¿ëµÇ´Â°Í¿¡ ¼³Á¤Çϸé ÁÁÀ»°ÍÀÔ´Ï´Ù. ±×·¡¼­ ±× À©µµ¿ì¿¡ ´ëÇؼ­ EXIT Æ®¸®°Å·Î À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ºÙ¿©³õ½À´Ï´Ù.

´ÙÀ½°ú °°Àº ±â´ÉÀ» °¡Áö´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ¸¸µé¾îº¾½Ã´Ù.


  • Á¾·áÇÒ°¡ ¸»°¡ÀÇ ´ëÈ­ »óÀÚ¸¦ Ç¥½Ã.

  • [OK]°¡ ¼±ÅÃµÈ °æ¿ì´Â 󸮸¦ ½ÇÇàÇؼ­ Á¾·á.

  • [NO]°¡ ¼±ÅÃµÈ °æ¿ì´Â 󸮸¦ ¾ÈÇÏ°í Á¾·á.

  • [CANCEL]°¡ ¼±ÅÃµÈ °æ¿ì´Â 󸮸¦ ¾ÈÇÏ°í Á¾·áµµ ¾ÈÇÔ.
  • (*----------------------------------------------------------*)
    (*Function for the event procedure                          *)
    (*----------------------------------------------------------*)
    
    open Swig
    open Mwt
    open Mwtlib
    
    let timer = ref C_void
    let target = ref C_void
    
    (* «ª°´Ã¼¸¦ ´Ù½Ã Ç¥½ÃÇϴ ŸÀÌ¸Ó ÇÁ·Î½ÃÀú *)
    let delayproc obj =
      if (get_int (!target) <> 0) then
        ignore(!target -> setVisible ( _True));
      ()
    
    let _ = Callback.register "delayproc" delayproc
    
    (* EXIT  À̺¥Æ® ÇÁ·Î½ÃÀúº»Ã¼          *)
    (* Á¾·á½Ã¿¡´Â ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇÑ´Ù.   *)
    let exit_ep obj =
      (* do something...*)
      if get_int (obj -> getVisible()) = get_int _False then
        let msg = _WSGIappMessageDialog '() in begin             (* A *)
          msg -> setProperty ( "width", 500);
          msg -> setProperty ( "no", _True);
          msg -> setProperty ( "defaultPosition", _True);
          msg -> setProperty ( "labelString",
            "Exit and save data?\n If you do not want to save and exit,push NO...");
        end;
      (* ´ëÈ­ »óÀÚÀÇ Ç¥½Ã      *)
      let ret = msg -> "popup"() in begin                        (* B *)
        (* ù ¹ø° ½ÇÇà½Ã, ŸÀ̸Ӹ¦ ÀÛ¼º *)
        if (timer = ref C_void) then
          let parent = obj -> getParentWindow () in begin
            timer := new_WSCvtimer ( C_list [parent; C_string "timer"]);
            let _ = Callback.register "timer" !timer in
            !timer -> init ();
            !timer -> setProperty ( "interval", 250 );
            !timer -> setProperty ( "cont", _False );
            !timer -> addProcedure ( "delay-prop", "delayproc",_WSEV_ACTIVATE );
          end;
        if ( get_int ret = get_int _WS_DIALOG_OK ) then  (* OK ´ÜÃß°¡ ´­¸° °æ¿ì C *)
          (* saving some data ... *)
          exit 0;
        if ( get_int ret = get_int _WS_DIALOG_NO) then   (* NO ´ÜÃß°¡ ´­¸° °æ¿ì D *)
          exit 0;
        if ( get_int ret = get_int _WS_DIALOG_CANCEL) then begin (* CANCEL ´ÜÃß°¡ ´­¸° °æ¿ì E *)
          target := obj;
          ignore(!timer -> setProperty ( "running", _True));  (* ŸÀ̸Ӹ¦ ±âµ¿ *)
        end;
      end;
      ()
    let _ = Callback.register "exit_ep" exit_ep
    

    A ¿¡¼­ ¸Þ½ÃÁö ´ëÈ­ »óÀÚ ÀνºÅϽº¸¦ ÃëµæÇؼ­ B ¿¡¼­ ¸Þ½ÃÁö ´ëÈ­ »óÀÚ¸¦ Ç¥½ÃÇÕ´Ï´Ù.

    C,D,E ¿¡¼­ ´ëÈ­ »óÀÚÀÇ °á°ú¸¦ ÆÇÁ¤Çؼ­ OK ´ÜÃß°¡ ´­·ÈÀ¸¸é C, NO ´ÜÃß°¡ ´­·ÈÀ¸¸é D, CANCEL ´ÜÃß°¡ ´­·ÈÀ¸¸é E ·Î µË´Ï´Ù.

    E ÀÇ Á¾·á¾ÈÇÏ°í ´Ù½Ã Ç¥½ÃÇÒ °æ¿ì, ŸÀ̸Ӹ¦ ¾²°í, Á» ŸÀ̹ÖÀ» ´ÊÃâÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº À©µµ¿ì ½Ã½ºÅÛ¿¡ ´ëÇØ ¹Ì¸® È­¸éÁ¾·á À̺¥Æ®°¡ ¹ß»ýÇÏ°íÀÖÀ¸¹Ç·Î ±× À̺¥Æ®ÀÇ Ã³¸®°¡ È®½ÇÈ÷ 󸮵ǿ´´Ù°¡ Ç¥½Ã¸¦ ½ÇÇàÇá¿©¾ßÇϱ⶧¹®ÀÔ´Ï´Ù.



    £Û Á¾·á È®ÀÎ ´ëÈ­ »óÀÚ£Ý


    Document Release 3.90 for WideStudio/MWT ver 3.90, Jul 2005


    WideStudio/MWT documents index | Table of contents

    Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005