|
5th
|
2004-04-30 15:23:50, Á¶È¸ : 2,409, Ãßõ : 295 |
- Download #1 : TMenu_2.zip (4.0 KB), Download : 94

[±âÃʰÁ #4] ¸Þ´º ¸¸µé±â #1
(Àüü ¼Ò½º´Â ÷ºÎµÈ ÆÄÀÏÀ» ÂüÁ¶ÇØÁÖ¼¼¿ä. ºÎºÐÀûÀ¸·Î¸¸ ¹ßÃéÇØ¼ ¼³¸íÇÕ´Ï´Ù.)
========================================================================
[°á°ú]
: Ŭ¸¯µÈ Ç׸ñÀº ÆÄ¶õ»öÀ¸·Î Ç¥½ÃµÇ°í, ¸¶¿ì½º·Î °¡¸®Å°´Â Ç׸ñÀº °ËÁ¤»öÀ¸·Î Ç¥½ÃµË´Ï´Ù.

========================================================================
ÀÌ °Á´ 3°³ÀÇ ÆÄÀÏ·Î ±¸¼ºµÇ¾ú½À´Ï´Ù.
1. start.curl
- Ç׸ñ¸íÀ» TMnuItem¿¡ StringÀ¸·Î ³Ñ°ÜÁÖ°í, ¸¸µé¾îÁø TMnuItemµéÀ» TMenu¿¡ º¸³À´Ï´Ù.
2. TMenuItem.scurl (Frame Ŭ·¡½º »ó¼Ó)
- Àüü ¸Þ´ºÁß ÇÑ Ç׸ñÀÔ´Ï´Ù.(¿¹: ¡°°øÁö»çÇס±, ¡°¼³Ä¡¡±...)
- ÇϳªÀÇ Ç׸ñÀº ÇϳªÀÇ FrameÀ¸·Î ¸¸µé¾îÁý´Ï´Ù.
À§ °á°úȸéÀ» º¸¸é, ±×¸²¿¡ 7°³ÀÇ Ç׸ñÀÌ ÀÖÁÒ? ¸ðµÎ 7°³ÀÇ Frame, Áï, 7°³ÀÇ TMenuItemÀÌ »ý¼ºµÇ¾îÁý´Ï´Ù.
- ¸¶¿ì½º À̺¥Æ®°¡ ¹ß»ýÇÒ¶§¸¶´Ù Ç׸ñÀÇ »öÀ» °ü¸®ÇÕ´Ï´Ù.
3. TMenu.scurl (VBox Ŭ·¡½º »ó¼Ó)
- ¸ðµç Ç׸ñÀ» °ü¸®ÇÏ´Â ¿ªÇÒÀÔ´Ï´Ù.
- »ý¼ºµÈ TMenuItem(=Frame)µéÀ» ºÙ¿©¼ TMenu(=VBox)¿¡ ¿Ã·Á³õ½À´Ï´Ù.
- ¸Þ´º°¡ ¼±ÅõǾúÀ»¶§¿Í ¼±ÅõÇÁö ¾Ê¾ÒÀ»¶§ÀÇ À̺¥Æ®¸¦ °ü¸®ÇÕ´Ï´Ù.
[±×¸²]

========================================================================
TMenuItem.scurl
-----------------------------------------------------------
{constructor public {default
menu_item : String,
...
}
set self.menu_item = menu_item
{construct-super
width=100px, height=20px,
background="beige",
border-color="white", border-style="raised", border-width=1px,
valign="center", halign="left",
font-size=9pt,
cursor=cursor-hand,
...
}
-----------------------------------------------------------
¸Þ´º¿¡ µé¾î°¥ Ç׸ñ¸íÀ» ¹Þ½À´Ï´Ù.
»ó¼Ó¹ÞÀº Frame Ŭ·¡½ºÀÇ ¸ðµç ±â´ÉµéÀ» »ç¿ëÇϱâ À§ÇØ,
default¿¡ ¡°...¡±(rest-argument) °ú {construct-super ...}¸¦ Àû¾îÁÖ¾î¾ß ÇÕ´Ï´Ù.
{construct-super} ¾È¿¡¼ ¿É¼ÇÀÇ °ªÀ» Àû´çÈ÷ ¹Ù²Ù¾î ÇÁ·¹ÀÓ ¸ð¾çÀ» ¸¸µì´Ï´Ù.
cursor = cursor-hand ¿É¼ÇÀº ÇÁ·¹ÀÓ¿¡ ¸¶¿ì½ºÆ÷ÀÎÅ͸¦ ¿Ã·Á³õ¾ÒÀ» ¶§,
È»ìÇ¥¸¦ ¼Õ°¡¶ô ¸ð¾çÀ¸·Î ¹Ù²ãÁÝ´Ï´Ù.
-----------------------------------------------------------
{self.event}
{self.add
{HBox
{Fill width=10px},
self.menu_item
}
}
-----------------------------------------------------------
»ý¼ºµÈ ÇÁ·¹ÀÓ¿¡ À̺¥Æ®¸¦ ´Þ¾ÆÁÖ±â À§ÇØ event ¸Þ¼Òµå¸¦ È£ÃâÇϰí, ÇÁ·¹ÀÓ¿¡ ±ÛÀÚ¸¦ Ãß°¡ÇÕ´Ï´Ù.
ÀÌ·¸°ÔÇØ¼ ÇÑ °³ÀÇ ÇÁ·¹ÀÓÀÌ »ý¼ºµÇ°í, ¾Æ·¡´Â À̺¥Æ®¿¡ °ü·ÃµÈ ¸Þ¼ÒµåÀÔ´Ï´Ù.
¸¶¿ì½º°¡ ¸Þ´º¿¡ ¿Ã·ÁÁ® ÀÖÀ»¶§´Â °ËÁ¤»öÀ¸·Î, ¸Þ´º¿¡¼ ³ª°¬À»¶§´Â ¿ø·¡»öÀ¸·Î,
Ŭ¸¯À» ÇßÀ»¶§´Â ÆÄ¶õ»öÀ¸·Î Ç¥½ÃÇÏ·Á°í ÇÕ´Ï´Ù.
-----------------------------------------------------------
{method public open{event}:void
{self.add-event-handler
{on PointerEnter do
{self.entered}
}
}
{self.add-event-handler
{on PointerLeave do
{if self.select? == true then
{self.selected}
else
{self.unselected}
}
}
}
-----------------------------------------------------------
self.add-event-handler : ÇöÀç(self) ÇÁ·¹ÀÓ¿¡ À̺¥Æ®¸¦ Ãß°¡ÇÑ´Ù´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.
¸¶¿ì½º Æ÷ÀÎÅͰ¡ µé¾î¿ÔÀ» ¶§ °ËÁ¤»öÀÌ µÇ¾ßÇϰí(entered ¸Þ¼Òµå È£Ãâ),
¸¶¿ì½º Æ÷ÀÎÅͰ¡ ¶°³µÀ» ¶§´Â ¸Þ´º°¡ ¿ø·¡ »öÀ¸·Î µ¹¾Æ¿Í¾ß Çϴµ¥,
¼±ÅÃµÈ ¸Þ´º¿´´Ù¸é ÆÄ¶õ»öÀ¸·Î ³²¾Æ¾ßÇϰí(selected ¸Þ¼Òµå È£Ãâ),
¼±ÅÃÀÌ ¾ÈµÇ¾ú´Ù¸é ±âº»»öÀÎ º£ÀÌÁö»öÀ¸·Î ³²¾Æ¾ß ÇÕ´Ï´Ù.(unselected ¸Þ¼Òµå È£Ãâ)
-----------------------------------------------------------
|| *** entered ¸Þ¼Òµå ***
{method public open{entered}:void
set self.background = "black"
set self.color = "beige"
set self.font-weight = "bold"
}
-----------------------------------------------------------
|| *** selected ¸Þ¼Òµå ***
{method public open{selected}:void
set self.select?=true
set self.background = "blue"
set self.color = "white"
set self.font-weight = "bold"
}
-----------------------------------------------------------
|| *** unselected ¸Þ¼Òµå ***
{method public open{unselected}:void
set self.select?=false
set self.background = "beige"
set self.color = "black"
set self.font-weight = "normal"
}
-----------------------------------------------------------
À§ 3°³ÀÇ ¸Þ¼Òµå´Â ¸¶¿ì½º µ¿ÀÛ¿¡ µû¸¥ Ç׸ñ »öÀ» ¹Ù²Ù´Â ³»¿ëÀÔ´Ï´Ù.
À§ÀÇ ¿É¼Ç ¸»°íµµ ¿©·¯ ¿É¼ÇµéÀ» »ç¿ëÇÏ¿©º¸¼¼¿ä.
ÁÖÀÇ ÇÒ Á¡À¸·Î´Â selected / unselected ¸Þ¼ÒµåÀÇ °æ¿ì,
È£ÃâµÉ¶§¸¶´Ù select? º¯¼ö¿¡ true / false °ªÀ» ÁÖ¾î, PointerLeave À̺¥Æ®¿¡¼ ±¸º°µÉ¼öÀÖ°Ô ÇÕ´Ï´Ù.
========================================================================
TMenu.scurl
-----------------------------------------------------------
field protected frame_array : {Array-of TMenuItem} = {{Array-of TMenuItem}}
field protected frame_index : int = -1
{constructor public {default
...
}
let i:int=0
{for element : any in ... do
{if element isa TMenuItem then
set element.user-data = i
set i = i+1
{self.frame_array.append element}
}
}
{self.event}
{construct-super ...}
}
-----------------------------------------------------------
VBox Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ ¸ðµç ±â´ÉÀ» »ç¿ëÇϱâ À§ÇØ
¡°...¡±(rest-argument) °ú {construct-super ...}¸¦ Àû¾îÁÝ´Ï´Ù.
»ý¼ºµÈ TMenuItem µéÀ» ¹Þ¾Æ¼ ¹è¿·Î ÀúÀåÇÕ´Ï´Ù.
Frame ¿É¼Ç Áß¿¡ user-data¶ó´Â°Ô Àִµ¥, Frame¿¡ °íÀ¯ ¹øÈ£¸¦ ÇÒ´çÇØÁÖ´Â ¿É¼ÇÀÔ´Ï´Ù
»ý¼ºµÈ TMenuItem ¸¶´Ù ¹øÈ£¸¦ ÁÖ¾î ±¸º°Çϱâ À§ÇØ ÀÌ ¿É¼ÇÀ» »ç¿ëÇÕ´Ï´Ù.
TMenuItemÀº FrameÀ» »ó¼Ó¹Þ¾Ò±â ¶§¹®¿¡ °¡´ÉÇÕ´Ï´Ù.
-----------------------------------------------------------
|| *** event ¸Þ¼Òµå ***
{method public open{event}:void
{for i:int=0 below self.frame_array.size do
{self.frame_array[i].add-event-handler
{on PointerPress at this : TMenuItem do
{if (self.frame_index != -1) then
{self.frame_array[self.frame_index].unselected}
}
set self.frame_index = this.user-data
{this.selected}
}
}
}
}
-----------------------------------------------------------
°¢°¢ÀÇ Ç׸ñ(=TMenuItem)¿¡´Â ¸¶¿ì½º¸¦ Ŭ¸¯ÇßÀ»¶§ÀÇ À̺¥Æ®¸¦ Ãß°¡Çϴµ¥
Ŭ¸¯À» ÇÏ¸é ¼±ÅÃµÈ Ç׸ñÀÇ user-data °ªÀº frame_index¿¡ ³Ö¾îµÑ ¿¹Á¤ÀÔ´Ï´Ù.
µû¶ó¼, frame_index ÀÇ °ªÀÌ -1ÀÌ ¾Æ´Ï¶ó¸é, ¾î¶² Ç׸ñÀÌ ¼±ÅõǾî ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù.
Ŭ¸¯À» ÇÒ ¶§,
Àü¿¡ ¼±ÅÃµÈ Ç׸ñÀÇ »öÀº ±âº»»öÀ¸·Î ¹Ù²ãÁÖ±â À§ÇØ, unselected ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
±×¸®°í, ÇöÀç ¼±ÅõǴ Ç׸ñÀÇ user-data °ªÀ» ´Ù½Ã frame_index¿¡ ³Ö¾îµÎ°í,
ÆÄ¶õ»öÀ¸·Î Ç¥½ÃÇϱâ À§ÇØ selected ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
========================================================================
ª°Ô ¼³¸íÇÏ·Á°í Çߴµ¥ ¶Ç ±æ¾îÁö°í ¸»¾Ò³×¿ä.
...Á¶±Ý¾¿ ³ª¾ÆÁö°ÚÁÒ...
±×·³, ´ÙÀ½ °Á¿¡¼ °è¼Ó....
- 5th -
|
|
|