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


»ùÇà À̺¥Æ® ÇÁ·Î½ÃÀú:¶óº§Æí



¸¶¿ì½º·Î ¼±Åð¡´ÉÇÑ ¶óº§·Î Çϱ⿡´Â

À̺¥Æ® ÇÁ·Î½ÃÀú¿¡ À־ °¡Àå ±âº»ÀûÀÎ ¸¶¿ì½ºÀÇ µ¿ÀÛ¿¡ ¹ÝÀÀÇÏ´Â À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ »ùÇÃÀÔ´Ï´Ù. ¶óº§À§¿¡¼­ ¸¶¿ì½º°¡ Ŭ¸¯µÉ¶§¸¶´Ù ¼ýÀÚ°¡ ¿Ã¶ó°¡°ÔµÇ´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇغ¾½Ã´Ù.

# WSEV_MOUSE_PRESS(MOUSE-PRESS)Æ®¸®°Å(trigger)·Î ¶óº§¿¡ ¼³Á¤ÇÕ´Ï´Ù.
import mwt

def cbop(object):
  #(0)¸¶¿ì½º ´ÜÃß1¿Ü´Â µÇµ¹¾Æ°¨
  if ((mwt.WSGIappMouse().getMouseStatus() & mwt.WS_MOUSE_BTN1) == 0):
    return;

  # (A)userValue  ¼Ó¼º¿¡ ±â¾ïµÇ¿©ÀÖ´Â ¼ýÀÚ¸¦ Ãëµæ
  value = object.getProperty("userValue");
  # (B)±× ¼ýÀÚ¸¦ ¼¼¾î ¿Ã¸²
  val = value.getLong() + 1;
  # (C)±× ¼ýÀÚ¸¦ Ç¥½Ã
  object.setProperty("labelString",val);
  # (D) userValue  ¼Ó¼º¿¡ ¿Ã¸° ¼ýÀÚ¸¦ ±â¾ï½ÃÅ´
  object.setProperty("userValue",val);
  return
mwt.WSGFfunctionRegister("chop",chop)

ÀÌ À̺¥Æ® ÇÁ·Î½ÃÀú´Â WSCvbtn,WSCvlabel µîÀÇ labelString ¼Ó¼ºÀ» °¡Áö´Â °´Ã¼¿¡ MOUSE-PRESS Æ®¸®°Å(trigger)·Î ¼³Á¤ÇÕ´Ï´Ù. °´Ã¼À§¿¡¼­ ¸¶¿ì½º°¡ Ŭ¸¯µÉ¶§¸¶´Ù ÀÌ ÇÔ¼ö´Â ±âµ¿µË´Ï´Ù. À̺¥Æ® ÇÁ·Î½ÃÀú°¡ ±âµ¿µÇ¸é (0)¿¡¼­ ¸¶¿ì½º ´ÜÃßÀÇ ÆÇÁ¤À» ½ÇÇàÇÏ°í ¸¶¿ì½º ´ÜÃß1¿ÜÀÇ ´ÜÃß¿´´õ¶ó¸é µÇµ¹¸³´Ï´Ù. ¸¶¿ì½º ´ÜÃß ÆÇÁ¤ÀÇ Âü°í·Î ÇØ ÁֽʽÿÀ.

´ÙÀ½¿¡ (A)·Î userValue¼Ó¼º¿¡ ±â¾ïµÇ¿©ÀÖ´Â ¼ýÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. userValue ¼Ó¼ºÀÇ ÃʱâÄ¡´Â 0À¸·Î, »ç¿ëÀÚ°¡ °ªÀ» ÀÚÀ¯·ÎÈ÷ ÁöÁ¤Çؼ­ º¸ÁöÇÒ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­ °´Ã¼¿¡ ±â¾ï½ÃÄѳõÀº°ÍÀº ´Ù¼öÀÇ °´Ã¼¿¡ ºÙ¿©³õ¿´À»¶§ °¢°¢ÀÇ ¶óº§ÀÇ ¼ýÀÚ°¡ ¼¯¿©ÁöÁö¾Êµµ·Ï ÇϱâÀ§Çؼ­ÀÔ´Ï´Ù. ¹Ý´ë·Î Á¤Àû º¯¼öµî¿¡¼­ º¸ÁöÇϵµ·Ï ÀÛ¼ºÇÏ¸é ¸ðµç ¶óº§¿¡¼­ ÇϳªÀÇ ¼ýÀÚ¸¦ »ç¿ëÇÑ Ç¥½Ã¸¦ ÇÒ¼öÀÖ½À´Ï´Ù.

´ÙÀ½¿¡ (B)¿¡¼­ ±× ¼ýÀÚ¸¦ ¼¼¾î ¿Ã·Á (C)¿¡¼­ Ç¥½ÃÇÕ´Ï´Ù. (D)·Î Ç¥½ÃÇÑ ¼ýÀÚ¸¦ userValue¼Ó¼º¿¡ º¸ÁöÇÏ¿©, ´ÙÀ½¹øÀÇ À̺¥Æ® ÇÁ·Î½ÃÀú ±âµ¿¿¡ ÁغñÇÕ´Ï´Ù.

Ȥ½Ã ÀÌ ÇÁ·Î½ÃÀú°¡ Æ®¸®°Å(trigger),MOUSE-IN ·Î ºÙ¿©³õÀÎ °æ¿ì´Â, ¸¶¿ì½º°¡ ÃâÀÔÇÑ È¸¼ö¸¦ Ç¥½ÃÇϰԵ˴ϴÙ.



¸¶¿ì½º·Î ¼±Åð¡´ÉÇÑ ¶óº§·Î Çϱ⿡´Â

´ÙÀ½Àº ¼±Åð¡´ÉÇÑ ¶óº§À» ÀÛ¼ºÇغ¾½Ã´Ù. ¶óº§ÀÌ ¼±ÅõȰÍó·³ º¸À̵µ·Ï »öÀ» º¯È­½ÃÄѺ¾½Ã´Ù. ¿©±â¼­´Â userValue ¼Ó¼ºÀÇ ´ë½Å set/getVariantData() ÇÔ¼ö¸¦ ½á¼­ ¼±ÅûóŸ¦ º¸ÁöÇÕ´Ï´Ù.

# WSEV_MOUSE_PRESS(MOUSE-PRESS)Æ®¸®°Å·Î ¶óº§¿¡ ¼³Á¤ÇÕ´Ï´Ù.
import mwt

def cbop(object):
  #(A) getVariantData()  ·Î ±â¾ïÇÏ´Â °ªÀ» Ãëµæ
  value =  object.getVariantData("STATUS");
  #(B) value  °¡ 0À̸ç´Â ¼±ÅûóÅ·Î, 1À̸ç´Â ¿ø·¡ Ç¥½Ã»óÅ·ΠµÇµ¹¸°´Ù
  if (value.getLong() == 0):
    #(C)¿ù·¡»ö±ò¸íĪ(¹®ÀÚ¿­)À» userString ·Î ±â¾ïÇسõ´Ù
    color = object.getProperty("backColor");
    object.setProperty("userString",color);
    #(D)¼±ÅûöÀÇ Ç¥½Ã»óÅ·ΠÇÑ´Ù
    object.setProperty("backColor","slategray4");
    #(E)»óŸ¦ ±â¾ïÇÑ´Ù
    object.setVariantData("STATUS",1);
  else:
    #(F)¿ø·¡»öÀ» ²¨³½´Ù
    color =  object.getProperty("userString");
    #(G)¿ø·¡»öÀÇ Ç¥½Ã»óÅ·ΠÇÑ´Ù
    object.setProperty("backColor",color);
    #(H)»óŸ¦ ±â¾ïÇÑ´Ù
    object.setVariantData("STATUS",0);
  return
mwt.WSGFfunctionRegister("chop",chop)

ÀÌ À̺¥Æ® ÇÁ·Î½ÃÀú´Â WSCvbtn,WSCvlabel µîÀÇ labelString ¼Ó¼ºÀ» °¡Áö´Â °´Ã¼¿¡ MOUSE-PRESS Æ®¸®°Å(trigger)·Î ¼³Á¤ÇÕ´Ï´Ù.

À̺¥Æ® ÇÁ·Î½ÃÀú°¡ ±âµ¿µÇ¸é (A)¿¡¼­ setVariantData() ÇÔ¼ö°¡ ±â¾ïÇÏ´Â ¼ýÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. set/getVariantData() ÇÔ¼öÀÇ ÃʱâÄ¡´Â0À¸·Î »ç¿ëÀÚ°¡ °ªÀ» ÀÚÀ¯·ÎÈ÷ ÁöÁ¤Çؼ­ º¸ÁöÇÒ¼öÀÖ½À´Ï´Ù. ÁÁÀº À̸§À» ºÙ¿©¼­ ÀÓÀÇÀÇ °ªÀ» void* ÇüÀ¸·Î º¸ÁöÇÒ¼ö°¡ ÀÖ½À´Ï´Ù.

´ÙÀ½¿¡ (B)¿¡¼­ ±× °ªÀ» ÆǺ°ÇÏ´Ù°¡, (C)¿¡¼­ ´ÙÀ½¹ø¿¡ ¿ø·¡»öÀ¸·Î Ç¥½Ã¸¦ µÇµ¹¸®±â¿¡ ¼Ó¼º userString ·Î ±â¾ïÇسõ½À´Ï´Ù. ´ÙÀ½ (D) ¿¡¼­ ¼±ÅûöÀ¸·ÎÀÇ Ç¥½Ã»óÅ·ΠÇÏ´Ù°¡, (E)·Î¼­ ¼±ÅûóŸ¦ ´Ù½Ã º¸ÁöÇÕ´Ï´Ù.

¿ø·¡»öÀ¸·Î µÇµ¹¸®´Â ´Ü°è´Â (F)·Î¼­ º¸ÁöÇسõÀº ¿ø·¡ Ç¥½Ã»öÀ» ÃëµæÇؼ­ (G)·Î ±× »öÀ» ¹Ý¿µÇÕ´Ï´Ù. ±×·¡¼­ (H)¿¡¼­ ¶Ç ¼±ÅûóŸ¦ º¸ÁöÇÕ´Ï´Ù.

¸¶¿ì½º·Î °­Á¶Ç¥½ÃÇÏ´Â ¶óº§·Î Çϱ⿡´Â

¸¶¿ì½ºÀÇ ÃâÀÔÀ¸·Î °­Á¶Ç¥½ÃÇÏ´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ¸¸µé¾îº¾½Ã´Ù. °´Ã¼À§¿¡ ¸¶¿ì½º°¡ µé¾î¿À¸é °­Á¶Ç¥½ÃÇÏ°í, ¸¶¿ì½º°¡ ³ª°¡¸é µÇµ¹¾Æ°¡´Â À̺¥Æ® ÇÁ·Î½ÃÀú·Î µË´Ï´Ù.

¿©±â¼­ Áß¿äÇÑ°ÍÀº ¸¶¿ì½º°¡ µé¾î°£ °æ¿ì¿¡ ¹ß»ýÇÏ´Â Æ®¸®°Å(trigger)¿Í ¸¶¿ì½º°¡ ³ª°£ °æ¿ì¿¡ ¹ß»ýÇÏ´Â Æ®¸®°Å(trigger)¿¡ °¢°¢ À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ¼³Á¤ÇÏ´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇÑ´Ù´Â Á¡¿¡ ÀÖ½À´Ï´Ù.

Áï ÃʱâÈ­·Î À̺¥Æ® ÇÁ·Î½ÃÀú°¡ ±âµ¿µÇ¿©, ±×¼Ó¿¡¼­ »õ·Î¿î À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ¼³Á¤ÇÔÀ¸·Î¼­ º¹¼öÀÇ À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ ¼³Á¤À» ÇϳªÀÇ À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ ¼³Á¤À¸·Î ½ÇÇöÇÏ´Â Á¡ÀÔ´Ï´Ù.

import mwt
#¼­ºêEP1  #¸¶¿ì½º µé¾î
def subop1(object):
    #(A)¿ø·¡»ö ¸íĪÀ» userString  ¼Ó¼º¿¡ ±â¾ï½ÃŲ´Ù
    color = object.getProperty("backColor");
    object.setProperty("userString",color);
    #(B)¼±ÅûöÀÇ Ç¥½Ã»óÅ·ΠÇÑ´Ù
    object.setProperty("backColor","slategray4");
    return
mwt.WSGFfunctionRegister("subop1",subop1)

#¼­ºêEP2  #¸¶¿ì½º ³ª°¨
def subop2(object):
    #(C)¿ø·¡»ö ¸íĪÀ» ²¨³½´Ù
    color = object.getProperty("userString");
    #(D)¿ø·¡ Ç¥½Ã»óÅ·ΠÇÑ´Ù
    object.setProperty("backColor",color);
mwt.WSGFfunctionRegister("subop2",subop2)

#WSEV_INIT(INITIALIZE)Æ®¸®°Å·Î ¶óº§¿¡ ¼³Á¤ÇÑ´Ù.
def cbop(object):
   #ÃʱâÈ­ Æ®¸®°Å(trigger)°¡ ¹ß»ýÇÏ¿© ½ÇÇàµÇ¸é
   #¼­ºêEP¸¦ °¢°¢ »õ·Î ¼³Á¤ÇÕ´Ï´Ù.
   #(E) À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ ½Å±Ô ¼³Á¤  #¼­ºêEP1
   #OP¸íĪ="°­Á¶OP1"   ÇÔ¼ö=subop1    ±âµ¿ Æ®¸®°Å=WSEV_MOUSE_IN     
   object.addProcedure("°­Á¶OP1","subop1",mwt.WSEV_MOUSE_IN);
   #(F) À̺¥Æ® ÇÁ·Î½ÃÀúÀÇ ½Å±Ô ¼³Á¤  #¼­ºêEP2
   #OP¸íĪ="°­Á¶OP2"     ÇÔ¼ö=subop2   ±âµ¿ Æ®¸®°Å=WSEV_MOUSE_OUT   
   object.addProcedure("°­Á¶OP2","subop2",mwt.WSEV_MOUSE_OUT);
mwt.WSGFfunctionRegister("chop",chop)

¼­ºêEP1´Â WSEV_MOUSE_INÀÇ Æ®¸®°Å(trigger)·Î ±âµ¿µÇ¿© ¶óº§ÀÇ ¹è°æÇ¥½Ã»öÀ» °­Á¶»öÀ¸·Î ÇÕ´Ï´Ù. ¼­ºêEP2´Â WSEV_MOUSE_OUTÀÇ Æ®¸®°Å(trigger)·Î ±âµ¿µÇ¿© ¶óº§ÀÇ ¹è°æÇ¥½Ã»öÀ» ¿ø·¡ »öÀ¸·Î µÇµ¹¸³´Ï´Ù. À̺¥Æ® ÇÁ·Î½ÃÀúº»Ã¼´Â ÃʱâÈ­ Æ®¸®°Å(trigger)·Î °´Ã¼¿¡ ¼³Á¤µÇ¿©ÀÖÀ¸¸ç (E),(F)¿¡¼­ ¼­ºêEP1,2¸¦ °´Ã¼¿¡ ¼³Á¤ÇÏ°íÀÖ½À´Ï´Ù. ÀÌÈÄ ¸¶¿ì½º°¡ ÃâÀÔÀ»ÇÏ¸é »õ·Î ÇÁ·Î±×·¥ÀÇ ¾È¿¡¼­ ¼³Á¤µÈ ¼­ºêEP°¡ ½ÇÇàµÇµµ·Ï µË´Ï´Ù.

¸¶¿ì½º·Î ¼±Åð¡´ÉÇÑ ±×·ìÈ­µÈ ¶óº§·Î Çϱ⿡´Â

°°Àº ¿¡¸®¾îÀ§¿¡ ¹èÄ¡µÇ´Â ¶óº§À» ¸¶¿ì½º·Î ¼±Åð¡´ÉÇÑ ±×·ìÈ­µÈ ¶óº§¿¡ÇÏ´Â À̺¥Æ® ÇÁ·Î½ÃÀú¸¦ ½ÇÁ¤Çϱ⿡´Â ¸¶¿ì½º·Î ¼±ÅÃµÈ ¶óº§À» ÇÔ¸ôÇÑ »óÅ·ΠÇسõ°í ±× ¿¡¸®¾î¿¡ ¾î´À ¶óº§ÀÌ ¼±Åõǿ©Àִ°¡¸¦ º¸ÁöÇϵµ·ÏÇÕ´Ï´Ù.

import mwt

# WSEV_MOUSE_PRESS(MOUSE-PRESS)Æ®¸®°Å·Î ¶óº§¿¡ ¼³Á¤ÇÕ´Ï´Ù.
def cbop(object):
  #(A)userValue ¼Ó¼º¿¡ ¼³Á¤µÇ¿©ÀÖ´Â °ªÀ» ID·Î¼­ »ç¿ëÇÑ´Ù
  val = object.getProperty("userValue");
  #(B)¼±ÅÃµÈ »óÅÂ(ÇÔ¸ô°­ÅÂ)·Î ÇÑ´Ù
  object.setProperty("shadowType",mwt.WS_SHADOW_IN);
  #(C)ºÎ¸ð°¡ ±â¿ÁÇÏ´Â ¼±Åõǿ©ÀÖ´ø °´Ã¼¸¦ ÃëµæÇÑ´Ù
  parent = object.getParent();
  target = parent.getVariantData("SelectedItem");
  #(D)±× ¼±Åõǿ©ÀÖ´ø °´Ã¼ÀÇ Ç¥½Ã»óŸ¦ ¿ø·¡»óÅÂ(µ¹Ãâ»óÅÂ)·Î µÇµ¹¸°´Ù
  if (mwt.WSGIappObjectList().existInstance(target.getInstancePtr()) != mwt.False):
    target.getInstancePtr().setProperty("shadowType",mwt.WS_SHADOW_OUT);
  if (mwt.WSGIappObjectList().existInstance(target.getInstancePtr()) != mwt.False and
      target.getInstancePtr().getInstanceName() == object.getInstanceName()):
    #(E)¼±ÅÃÇÏ°íÀÖ´Â °´Ã¼¸¦ ´Ù½Ã Ŭ¸¯ÇÑ °æ¿ì
    # µÎ¹ø°ÀÇ °æ¿ì´Â ¿Ö¿ì°íÀÖ´ø ÀÚ½ÅÀ» 0À¸·ÎÇؼ­ Ä¡¿î´Ù
    parent.setVariantData("GroupValue",0);
    parent.setVariantData("SelectedItem",0);
  else:
    #(F)ù¹ø°ÀÇ °æ¿ì´Â ÀÚ½ÅÀ» ºÎ¸ð¿¡ ±â¾ï½ÃÅ´.
    parent.setVariantData("GroupValue",val);      # ID
    parent.setVariantData("SelectedItem",mwt.WSCvariant(object));  # WSCbase ÀνºÅĽº 
mwt.WSGFfunctionRegister("chop",chop)

±×·ìÈ­ÇÏ´Â ¶óº§µé¿¡ °¢°¢À» ½Äº°ÇÒ ID°¡ ÇÊ¿äÇÏÁö¸¸ userValue ¼Ó¼º¿¡ ¼³Á¤µÇ¿©ÀÖ´Â °ªÀ» ID ·Î »ç¿ëÇÏ´õ·Ï ÇսôÙ.

(A)¿¡¼­ userValue ¼Ó¼º¿¡ ¼³Á¤µÇ¿©ÀÖ´Â ID ¸¦ ÃëµæÇÕ´Ï´Ù.

(B)¿¡¼­´Â ¼±ÅõȰÍÀ» Ç¥½ÃÇϱâÀ§ÇØ ÇÔ¸ôƲ Ç¥½Ã·Î ÇÕ´Ï´Ù.

(C)·Î¼­ ¼±Åõǿ©ÀÖ´ø °´Ã¼¸¦ ÃëµæÇÕ´Ï´Ù. ¾î´À °´Ã¼³ª ¹®Á¦¾øÁö¸¸ ÀÌ ¿¹ÀÇ °æ¿ì, ±×·ìÈ­ÇÏ´Â ¶óº§µé¿¡ °øÅëÀÎ ºÎ¸ð°´Ã¼¿¡ ±â¾ï½ÃÅ°µµ·ÏÇÕ´Ï´Ù.

(D)´Â ¼±Åõǿ©ÀÖ´ø °´Ã¼ÀÇ Ç¥½Ã»óŸ¦ ¿ø·¡ÀÇ µ¹Ãâ»óÅ¿¡ µÇµ¹¸³´Ï´Ù.

(E)·Î ¼±Åõǿ©ÀÖ´ø °´Ã¼(target)¿Í »õ·Î ¼±ÅÃµÈ °´Ã¼(object)°¡ °°Àº°æ¿ì, Ãø µÎ¹ø ¼±ÅÃµÈ »óÅ·ΠµÈ °æ¿ì¿¡´Â ÇØÀúÇÕ´Ï´Ù. ºÎ¸ð¿¡ ±â¾ï½ÃŲ °ª°ú °´Ã¼¸¦ Ä¡¿ó´Ï´Ù.

(F)¿¡¼­´Â »õ·Î ¼±ÅÃµÈ °´Ã¼¿Í ±× °ªÀ» ºÎ¸ð¿¡ ±â¾ï½Ãŵ´Ï´Ù.

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