°­ÁÂ

 ·Î±×ÀÎ  È¸¿ø°¡ÀÔ Category : Category

[±âÃʰ­Á #2] Æ®¸®±¸Á¶ ¸¸µé±â #2
5th  2004-04-27 18:36:34, Á¶È¸ : 2,701, Ãßõ : 280
- Download #1 : tree_2.zip (9.8 KB), Download : 94

[Æ®¸®±¸Á¶ ¸¸µé±â#2]
À̹ø °­Á¿¡¼­´Â,
1. °¢ Ŭ·¡½ºµéÀ» ÆÄÀÏ·Î ºÐ¸®.
– ÀÌÀü °­Á ÆÄÀÏÀÇ ¼¼ ºÎºÐÀ» ±×´ë·Î ÆÄÀÏ Çϳª¾¿ ºÐ¸®ÇÏ¿´½À´Ï´Ù.
- (1) TTreeNode class --> TTreeNode.scurl
- (2) TTreeCotrol class --> TTreeControl.scurl
- (3) value --> start.curl
2. TTreeNode °´Ã¼ »ý¼º½Ã, ÁßøµÈ TTreeNode¸¦ »ç¿ë.
3. ¡°+ / -¡° ±âÈ£ ´ë½Å ±×¸²À» »ðÀÔ.
µîÀ» ¾Ë¾Æº¸°Ú½À´Ï´Ù.

------------------------------------------------------------------------
<°á°ú>

========================================================================
¼Ò½º #1 – start.curl
------------------------------------------------------------------------
{curl 3.0 applet}
{curl-file-attributes character-encoding = "euc-kr"}
{applet manifest = "manifest.mcurl"}

{document-style PlainDocument}
{include "TTreeNode.scurl"}
{include "TTreeControl.scurl"}

{value    
    let tn : TTreeNode =
        {TTreeNode "root",
            {TTreeNode "AAA",
                {TTreeNode "aaa"},
                {TTreeNode "bbb"}                
            },
            {TTreeNode "BBB"},
            {TTreeNode "CCC",
                {TTreeNode "111"},
                {TTreeNode "222"},
                {TTreeNode "333"}
            }
        }    
    
    {VBox
        {Fill height=3px},                                
        {TTreeControl tn=tn,                              
            width={make-elastic}, height={make-elastic}    
        }                                
    }    
}
------------------------------------------------------------------------
{document-style PlainDocument} :
VBox¿¡¼­ make-elasticÀ» »ç¿ëÇÒ °æ¿ì, make-elasticÀº Àüüȭ¸é ¸ðµÎ ±× ¿µ¿ªÀ» Â÷ÁöÇÏ·Á°í Çϴµ¥,
VBox Ư¼º»ó Àüüȭ¸é Å©±â¸¦ ¾Ë¼ö ¾ø¾î ¹«ÇÑ´ë¿¡ ºüÁ®¹ö¸³´Ï´Ù.
°á±¹, È­¸é¿¡ ¾Æ¹«°Íµµ ³ªÅ¸³ªÁö ¾Ê±â ¶§¹®¿¡ ÇöÀç È­¸é¸¸À» Àüü Å©±â·Î Àâ´Â´Ù´Â ¼³Á¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

{include "TTreeNode.scurl"}, {include "TTreeControl.scurl"} :
µÎ Ŭ·¡½º¸¦ °¢°¢ ÆÄÀÏ·Î ºÐ¸® Ç߱⠶§¹®¿¡, ÀÌ ÆÄÀϵéÀ» ÇöÀç ½ÇÇàµÇ´Â ÆÄÀÏ¿¡ Æ÷ÇÔ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù.

TTreeNode °´Ã¼ ¾È¿¡, ¿©·¯ °³ÀÇ TTreeNode¸¦ °è¼Ó Áßø½ÃÄÑ °´Ã¼¸¦ »ý¼ºÇÏ¿´½À´Ï´Ù.
ÀÌ·¸°Ô °´Ã¼¸¦ »ý¼º½ÃŰ¸é ¼Ò½º ÄÚµå º¸±â°¡ ÆíÇØÁö¹Ç·Î, ÈÄ¿¡ ³ëµåÀÇ ¼öÁ¤ÀÌ ½¬¿öÁý´Ï´Ù.
ÇÏÁö¸¸, ÀÌ·¯ÇÑ ÁßøµÈ TTreeNode¸¦ °ü¸®ÇÒ¼ö ÀÖ´Â Äڵ尡 TTreeNode¿¡ Ãß°¡·Î ÇÊ¿äÇÕ´Ï´Ù.

========================================================================
¼Ò½º #2 – TTreeNode.scurl
------------------------------------------------------------------------
{curl-file-attributes character-encoding = "euc-kr"}

{define-class public open TTreeNode
  
  field protected flabel : String  
  field public parent : #TTreeNode                                      
  field public items : {Array-of TTreeNode} = {{Array-of TTreeNode}}    
  field public status : String                                        
  
  {constructor public {default
                          label : String,
                          parent : #TTreeNode = null,
                          status : String  = "+",          
                          ...
                      }
    
    set self.flabel = label
    set self.parent = parent
    set self.status = status
    
    {for element : any in ... do                        
        {if element isa TTreeNode then  
            {self.append element}                      
        }
    }    
    {construct-super ...}  
  }

  {setter public open {label label:String}:void
    set self.flabel = label
  }    
  {getter public open {label}:String                
    {return self.flabel}
  }    
  {getter public open {size}:int                    
    {return self.items.size}
  }  
  {getter public open {has-child?}:bool
    {if (self.items.size>0) then                    
        {return true}
     else
        {return false}
    }
  }  

{method public open {append tn:TTreeNode}:void    
set tn.parent = self
    {self.items.append tn}                          
  }  
}
------------------------------------------------------------------------
À§¿¡¼­ ¾ð±ÞÇßµíÀÌ, start.curl¿¡¼­ TTreeNode¸¦ Áßø½ÃÄÑ °´Ã¼¸¦ ¹ß»ý½ÃÄ×½À´Ï´Ù.
ÀÌ ÁßøµÈ °´Ã¼¸¦ »ý¼ºÀÚ¿¡¼­ ¹Þ¾ÆµéÀ̱â À§ÇØ,
¿©·¯°¡Áö °æ¿ì¿¡ ´ëÇØ »ó°ü¾øÀÌ ¹Þ¾ÆµéÀÌ´Â rest argument·Î ¡°...¡±À» »ç¿ëÇÏ¿´½À´Ï´Ù.

{for element : any in ... do                        
                {if element isa TTreeNode then                  
{self.append element}                      
                }
            }
    
¡°...¡±À¸·Î ¹Þ¾ÆµéÀÎ °´Ã¼ÀÇ data typeÀ» ¾Ë¼ö ¾øÀ¸¹Ç·Î for ¹®¿¡¼­ element¸¦ any·Î ¼±¾ðÇϰí,
¹Þ¾ÆµéÀÎ °´Ã¼µéÀ» element¿¡ Çϳª¾¿ ÇÒ´çÇÕ´Ï´Ù.
µé¾î¿Â °´Ã¼°¡ TTreeNode ŸÀÔÀ̸é element¸¦ Çö ³ëµåÀÇ ÇÏÀ§³ëµå·Î Ãß°¡½Ãŵ´Ï´Ù.

========================================================================
¼Ò½º #3 – TTreeControl.scurl
------------------------------------------------------------------------
{curl-file-attributes character-encoding = "euc-kr"}

{define-class public open TTreeControl {inherits Frame}  
field protected fvb : VBox = {VBox width={make-elastic}, height={make-elastic},
                                spacing=2px}      
  field protected ftn : #TTreeNode  
  
  {constructor public {default
                          tn : #TTreeNode = null,
                          ...                        
                      }    
    set self.ftn = tn                            
    {construct-super ...}                  
    {self.refresh-controls}  
    {self.add self.fvb}
  }    

  {method public open {refresh-controls}:void
    {self.fvb.clear}                  
    {if self.ftn != null then                
        {self.make-tree self.ftn, 0}      
        
    }  
    {self.fvb.add {Fill}}  
  }    

  {method public open {make-tree tn : #TTreeNode, indent : int} : void  
    {if tn == null then                          
        {return}                                  
    }    
    let fr : Frame = {Frame width=17px, halign="center"}          
    {if tn.has-child? then                                    
||--    {fr.add tn.status}                                    
        {if tn.status=="+" then                    
            {fr.add {image source={url "images/plus.gif"}}}  
         elseif tn.status=="-" then
            {fr.add {image source={url "images/minus.gif"}}}  
        }    
        
        set fr.cursor=cursor-hand                      
        {fr.add-event-handler                                
            {on PointerPress do                                  
                {if tn.status=="+" then          
                    set tn.status="-"                                
                    {self.refresh-controls}        
                 elseif tn.status=="-" then                
                    set tn.status="+"                          
                    {self.refresh-controls}      
                }                
            }            
        }  
    }
        
    let fr2 : Frame = {Frame width=17px}                  
    
    {if tn.status=="+" then
        {fr2.add {image source={url "images/folder-close.gif"}}}
     elseif tn.status=="-" then
        {fr2.add {image source={url "images/folder-open.gif"}}}  
}

    {self.fvb.add                                  
        {HBox valign="center", font-size=9pt,
            {Fill width=17px * indent},              
            fr,                                    
            fr2,
            tn.label                                          
        }                                          
}

    {if tn.status == "-" then                      
        {for i:int = 0 below tn.size do            
            let tn_temp:TTreeNode=tn.items[i]      
            {self.make-tree tn_temp, indent+1}    
        }
    }      
  }
}
------------------------------------------------------------------------
¡°+ / -¡° ±âÈ£¸¦ ±×¸²À¸·Î »ðÀÔÇÏ´Â ÄÚµå´Â ºñ±³Àû °£´ÜÇÕ´Ï´Ù.
¿ì¼±, ÇÁ·¹ÀÓ¿¡ ¡°+ / -¡°¸¦ Ãß°¡ÇÏ´Â ÄÚµå {fr.add tn.status}´Â ÁÖ¼®Ã³¸®Çϰí,
±× ÀÚ¸®¿¡ ´ÙÀ½ÀÇ Äڵ带 »ðÀÔÇÕ´Ï´Ù.

{if tn.status=="+" then                    
     {fr.add {image source={url "images/plus.gif"}}}  
elseif tn.status=="-" then
     {fr.add {image source={url "images/minus.gif"}}}  
}

status¿¡ µû¶ó »ðÀԵǴ ±×¸²µµ ´Ù¸£¹Ç·Î, Á¶°Ç¹® if°¡ »ç¿ëµÇ¾ú½À´Ï´Ù.

´ÙÀ½¿¡, ¡°+ / -¡°¿Í ¶È°°ÀÌ µ¿ÀÛÇϹǷΠū Àǹ̴ ¾øÁö¸¸, Æú´õ ¸ð¾çÀÇ ±×¸²À» Ãß°¡ÇÏ¿´½À´Ï´Ù.

let fr2 : Frame = {Frame width=17px}
    {if tn.status=="+" then
        {fr2.add {image source={url "images/folder-close.gif"}}}
     elseif tn.status=="-" then
        {fr2.add {image source={url "images/folder-open.gif"}}}  
    }

Æú´õ ¸ð¾ç ±×¸²À» ´ã±âÀ§ÇÑ ÇÁ·¹ÀÓ fr2¸¦ ¸¸µé°í,
¸¶Âù°¡Áö·Î status¿¡ µû¶ó »ðÀԵǴ ±×¸²µµ ´Ù¸£¹Ç·Î, Á¶°Ç¹® if¸¦ »ç¿ëÇÏ¿© ÆÇº°ÇÏ¿© ÁÝ´Ï´Ï´Ù.

------------------------------------------------------------------------
ÀÌ ¿Ü¿¡µµ ÀÌÀü °­Á¿ʹ ´Ù¸£°Ô {Fill}À̶óµçÁö {make-elastic}µî ¿©·¯ ¿É¼ÇÀÌ »ç¿ëµÇ¾ú´Âµ¥,
ÀÌ ºÎºÐÀº ¸ðµÎ Á÷Á¢ Çϳª¾¿ Ã¼Å©ÇØº¸½Ã¸é ÁÁÀ» °Í °°½À´Ï´Ù.
Á»´õ ±ò²ûÇÑ È­¸éÀ» ¸¸µé±â À§Çؼ­´Â Á÷Á¢ ºÎµúÃļ­ ÇØº¸´Â°Ô °¡Àå ÁÁÀº ¹æ¹ýÀ̶ó°í »ý°¢µË´Ï´Ù.



³Ê¹« ÀÚ¼¼ÇÏ°Ô ¾²´À¶ó ±ÛÀÌ ±æ¾îÁ®¼­ Á» Áö·çÇϼÌÀ»°Í °°³×¿ä..
±×·³, ÀÌ»óÀ¸·Î Æ®¸®±¸Á¶ ¸¸µé±â °­Á¸¦ ¸¶Ä¡°Ú½À´Ï´Ù.

- 5th -


  ÃßõÇÏ±â   ¸ñ·Ïº¸±â

¹øÈ£ ºÐ·ù Á¦¸ñ ÀÛ¼ºÀÚ ÀÛ¼ºÀÏ   Ãßõ Á¶È¸
65 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #15] °Ô½ÃÆÇ ¸¸µé±â #4    5th 2004/06/08 503 3006
64 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #14] °Ô½ÃÆÇ ¸¸µé±â #3    5th 2004/06/08 386 2553
63 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #13] °Ô½ÃÆÇ ¸¸µé±â #2    5th 2004/06/08 276 3085
62 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #12] °Ô½ÃÆÇ ¸¸µé±â #1  [1]  5th 2004/06/08 390 3627
61 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #11] ¹æ¸í·Ï ¸¸µé±â #3  [15]  5th 2004/05/17 318 2660
60 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #10] ¹æ¸í·Ï ¸¸µé±â #2  [3]  5th 2004/05/17 297 2834
59 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #9] ¹æ¸í·Ï ¸¸µé±â #1  [3]  5th 2004/05/17 279 2654
58 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #8] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #3    5th 2004/05/11 347 2212
57 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #7] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #2  [19]  5th 2004/05/11 348 2300
56 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #6] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #1  [1]  5th 2004/05/11 280 2538
55 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #5] ¸Þ´º ¸¸µé±â #2    5th 2004/04/30 344 2238
54 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #4] ¸Þ´º ¸¸µé±â #1    5th 2004/04/30 295 2411
53 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #3] ¸Þ´º ¸¸µé±â – ½ÃÀÛ  [1]  5th 2004/04/30 314 2217
ÃʱÞÀÀ¿ë  [±âÃʰ­Á #2] Æ®¸®±¸Á¶ ¸¸µé±â #2    5th 2004/04/27 280 2701
51 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #1] Æ®¸®±¸Á¶ ¸¸µé±â #1  [1]  5th 2004/04/27 318 2794
50 ÃÊ±Þ  [À¥¼­¹ö¿ÍÀÇ ¸¸³² #6] SAX¸¦ ÀÌ¿ëÇØ¼­ XML µ¥ÀÌÅ͸¦ RecordSet À¸·Î ¹Þ±â    vidkid 2004/04/27 372 2369
49 ÃÊ±Þ  [À¥¼­¹ö¿ÍÀÇ ¸¸³² #5] SAX ÆÄ¼­¸¦ ÀÌ¿ëÇÑ XML µ¥ÀÌÅÍ ºÐ¼®  [10]  vidkid 2004/04/27 571 10342
48 ÃÊ±Þ  [À¥¼­¹ö¿ÍÀÇ ¸¸³² #4] µ¥ÀÌÅ͸¦ RecordSet À¸·Î ¹Þ±â - ·¹ÄÚµå¼Â¿¡ ³Ö±â  [13]  vidkid 2004/04/22 324 2642
47 ÃÊ±Þ  [À¥¼­¹ö¿ÍÀÇ ¸¸³² #3] µ¥ÀÌÅ͸¦ RecordSet À¸·Î ¹Þ±â - ÇÁ·Î½ÃÀú ¸¸µé±â  [3]  vidkid 2004/04/21 492 4015
46 ÃÊ±Þ  [À¥¼­¹ö¿ÍÀÇ ¸¸³² #2] GET / POST ¸Þ¼Òµå  [15]  vidkid 2004/04/21 534 6630

    ¸ñ·Ïº¸±â   ÀÌÀüÆäÀÌÁö   ´ÙÀ½ÆäÀÌÁö [1] 2 [3][4][5]
       

Copyright 1999-2010 Zeroboard / skin by zero