°­ÁÂ

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

[±âÃʰ­Á #1] Æ®¸®±¸Á¶ ¸¸µé±â #1
5th  2004-04-27 18:33:44, Á¶È¸ : 2,793, Ãßõ : 318
- Download #1 : tree_1.zip (2.8 KB), Download : 71

¿äÁò curl ¿¡ ´ëÇØ °ü½ÉÀ» °¡Áö°í °øºÎÇϱ⠽ÃÀÛÇÏ¿´´Âµ¥¿ä,
´ÙÀ½Àº Á¦°¡ ¸¸µé¾îº» ÆÄÀÏÀÔ´Ï´Ù.
Àß ¸¸µéÁø ¸øÇßÁö¸¸ ÃʽÉÀÚ ºÐµé°Ô µµ¿òÀÌ µÉ±îÇØ¼­ ,Àúµµ Çѹø, °­Á·Π¿Ã·Áº¸¾Ò½À´Ï´Ù.

[Æ®¸®±¸Á¶ ¸¸µé±â#1]
°£´ÜÈ÷ Æ®¸®¸¦ ¸¸µé¾îº¸´Â °­ÁÂÀÔ´Ï´Ù.
(À©µµ¿ì Ž»ö±â, Æú´õâÀÇ ±¸Á¶¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.)

¾Æ·¡ ¼Ò½º´Â ¹®Á¦Á¡ÀÌ ÀÖÁö¸¸, À̹ø °­Á¿¡¼­´Â ´ë·«ÀûÀÎ ±¸Á¶¸¸ ÆÄ¾ÇÇϰí,
´ÙÀ½ °­Á¿¡¼­ ¹®Á¦Á¡À» °íÄ£ÈÄ, À̹ÌÁöµµ Ãß°¡Çؼ­ »ç¿ëÇØº¸°Ú½À´Ï´Ù.

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

||================================================================== (1)
{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
  }

  {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}                          
  }  
}

||================================================================== (2)
{define-class public open TTreeControl {inherits Frame}
  
  field protected fvb : VBox = {VBox}      
  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}          
    }                
}      

  {method public open {make-tree tn : #TTreeNode, indent : int} : void  
    {if tn == null then                          
        {return}                                  
    }    
    let fr : Frame = {Frame width=10px}    
    {if tn.has-child? then                        
        {fr.add tn.status}                        
        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}      
                }                
            }            
        }
    }
        
    {self.fvb.add                                  
        {HBox                                      
            {Fill width=10px * indent},            
            fr,                                  
            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}    
        }
    }    
  }  
}


||================================================================== (3)
{value  
    let tn : TTreeNode = {TTreeNode "root"}
    let tn2 : TTreeNode = {TTreeNode "CCC"}
    {tn.append {TTreeNode "AAA", parent=tn}}
    {tn.append {TTreeNode "BBB" }}
    {tn.append tn2}
    {tn2.append {TTreeNode "111" }}    
    {tn2.append {TTreeNode "222" }}    

    {HBox
        {TTreeControl tn=tn,
            width=100px, height=100px, background="beige"
        }        
    }    
}

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

----------------------------------------------------------------------
ÀÌ ÆÄÀÏÀº Å©°Ô 3 ±¸Á¶·Î ÀÌ·ç¾îÁ³½À´Ï´Ù. (ÁÖ¼®ÀÇ ¹øÈ£Ç¥½Ã ÂüÁ¶)
¸íÈ®ÇÏ°Ô ³ª´²ÁöÁø ¾Ê¾ÒÁö¸¸, ´ë·« MVC ÆÐÅÏÀ» »ý°¢ÇÏ½Ã¸é µÉµíÇÕ´Ï´Ù.
(1) TTreeNode class    : Model
(2) TTreeControl class  : Control
(3) value               : View

(1) TTreeNode class
- ¼³¸í ÆíÀÇ»ó, À§ °á°ú È­¸éÀÇ °¡·ÎÁÙ Çϳª¸¦ ¡°³ëµå¡±¶ó°í Ç¥ÇöÇϰڽÀ´Ï´Ù.
- ¡°³ëµå¡±¸¦ Ç¥ÇöÇϱâÀ§ÇÑ Å¬·¡½º¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
- ¡°³ëµå¡±ÀÇ ±âº» ±¸Á¶, ÇÏÀ§³ëµå¿¡ ´ëÇÑ Á¤º¸, À̸§/»çÀÌÁ ¹ÝȯÇÏ´Â ¸Þ¼ÒµåµîÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
============================================================
¿ì¼±, ¸â¹öº¯¼öµéÀ» ¼±¾ðÇϰڽÀ´Ï´Ù.
-----------------------------------------------------------
field protected flabel : String  
field public parent : #TTreeNode            
field public items : {Array-of TTreeNode} = {{Array-of TTreeNode}}    
field public status : String
-----------------------------------------------------------
-> flabel : ³ëµåÀÇ ÅØ½ºÆ®¸í.
-> parent : »óÀ§ ³ëµå. data typeÀÎ TTreeNode¾ÕÀÇ #±âÈ£´Â null°ª Çã¿ëÀ» ÀǹÌÇÕ´Ï´Ù.
-> items : ÇÏÀ§ ³ëµåµéÀÇ ÁýÇÕ. ¹è¿­·Î ¼±¾ð.
-> status : ³ëµåÀÇ È®Àå/Ãà¼Ò(- / +)µÈ »óŸ¦ ¼³Á¤.

============================================================
´ÙÀ½Àº »ý¼ºÀÚ(constructor)ÀÔ´Ï´Ù.
-----------------------------------------------------------
{constructor public {default
                          label : String,
                          parent : #TTreeNode = null,
                          status : String  = "-"                          
                      }    
    set self.flabel = label
    set self.parent = parent
    set self.status = status
  }
-----------------------------------------------------------
»ý¼ºÀÚÀÇ argument·Î´Â ³ëµåÀÇ ÅØ½ºÆ®¸í°ú, »óÀ§³ëµå, ³ëµåÀÇ È®Àå/Ãà¼Ò»óŸ¦ ¹Þ¾Æ ¼³Á¤ÇÕ´Ï´Ù.
items¸¦ ¼³Á¤ÇÏ´Â ºÎºÐÀÌ ¾ø´Âµ¥ items´Â ÇÏÀ§ ³ëµåµéÀÌ ¹è¿­ÇüÅ·Πµé¾î°¥ º¯¼öÀÔ´Ï´Ù.
ÀÚ¼¼ÇÑ ¼³¸íÀº Àá½Ã µÚ¿¡...

¡Ø tip :
curl¿¡¼­ »ý¼ºÀÚ, ¸Þ¼Òµå, ÇÁ·Î½ÃÁ®ÀÇ ¼±¾ð½Ã,
argumentµé Áß¿¡ ÃʱⰪÀÌ ÇÒ´çµÇ¾îÀÖ´Â argument´Â optionÀÇ Àǹ̸¦ °¡Áý´Ï´Ù.

Áï, È£ÃâµÉ¶§, argument¿¡ °ªÀÌ ³Ñ¾î¿À¸é ±× °ªÀÌ ÇÒ´çµÇ°í,
±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â default °ªÀÌ »ç¿ëµË´Ï´Ù.
¿¹¸¦µé¾î, À§ÀÇ »ý¼ºÀÚÀÇ °æ¿ì parent¿Í status°¡ optionó·³ µ¿ÀÛÇÕ´Ï´Ù.

¶ÇÇÑ, argument¿¡ °ªÀ» ÇÒ´çÇÏÁö ¾Ê¾ÒÀ» °æ¿ì, ¹Ýµå½Ã ¿ÜºÎ¿¡¼­ °ªÀ» ÇÒ´çÇØÁà¾ß ÇÕ´Ï´Ù.
argument¿¡ °ªÀ» ÇÒ´çÇÏÁö ¾Ê°í, ¿ÜºÎ¿¡¼­µµ °ªÀÌ Àü´ÞµÇÁö ¾Ê¾ÒÀ» °æ¿ì´Â
¸â¹ö¸é¼ö ¼±¾ðÇÒ¶§ ÃʱâÈ­¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.

============================================================
Accessor #1
-----------------------------------------------------------
{setter public open {label label:String}:void
    set self.flabel = label
}  
{getter public open {label}:String                
   {return self.flabel}
}    
-----------------------------------------------------------
setter & getter¸¦ ÀÌ¿ëÇÏ¿© ³ëµå¸íÀ» ¼³Á¤ÇÏ°í °ªÀ» °¡Á®¿É´Ï´Ù.
setter ÀÇ °æ¿ì, ÀÌ ÆÄÀÏ¿¡¼± ¾²ÀÌÁø ¾ÊÁö¸¸ Çü½ÄÀûÀ¸·Î ¸¸µé¾îÁÖ¾ú½À´Ï´Ù.
getter ¸¦ »ç¿ëÇÏ¿© label °ª(³ëµå¸í)À» ¹ÝȯÇϰí ÀÖ½À´Ï´Ù.

¡Ø tip :
setter¿Í getter´Â °°Àº À̸§(ÀÌ ÆÄÀÏÀÇ °æ¿ì, label)À» »ç¿ëÇÏ¿©µµ µË´Ï´Ù.
ÇÏÁö¸¸,
ÀÌ Accessor¸¦ ÅëÇØ Á¢±ÙÇÏ´Â ¸â¹öº¯¼ö À̸§°ú argument·Î »ç¿ëµÇ´Â À̸§Àº ¹Ýµå½Ã ´Þ¶ó¾ß ÇÕ´Ï´Ù.
µû¶ó¼­ ¸â¹öº¯¼öÀÇ À̸§ÀÌ labelÀÌ ¾Æ´Ñ flabel·Î ¼±¾ðÀÌ µÇ¾ú½À´Ï´Ù.

============================================================
Accessor #2
-----------------------------------------------------------
  {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}
    }
  }
-----------------------------------------------------------
{size}´Â Çö ³ëµå°¡ °¡Áö°íÀÖ´Â ÇÏÀ§ ³ëµå °³¼ö¸¦ ±¸ÇÏ¿© ¹ÝÈ¯ÇØÁÝ´Ï´Ù.
itemsÀÇ data typeÀº ArrayÀÔ´Ï´Ù.
Array classÀÇ ¡°size¡± Accessor¸¦ »ç¿ëÇÏ¿©, ÀÌ ¹è¿­ÀÌ ¸î °³¸¦ °¡Áö°í ÀÖ´ÂÁö °ªÀ» ±¸ÇØÁÝ´Ï´Ù.

{has-child?}´Â Çö ³ëµå°¡ child¸¦ °¡Áö°í ÀÖ´ÂÁö ¾ø´ÂÁö,
size¸¦ ÅëÇØ ÆÇº°ÇÏ¿© true/false¸¦ ¹Ýȯ½ÃÄÑÁÖ°í ÀÖ½À´Ï´Ù.

¡Ø tip :
setter, getter°¡ ÀÏ¹Ý ¸Þ¼Òµå¿Í ºñ±³ÇÏ¿© ´Ù¸¥ Á¡Àº ¸Þ¼Òµå°¡ ¾Æ´Ï¶ó Accessor¶ó´Â Á¡ÀÔ´Ï´Ù.
Ç¥±â ¹æ½ÄÀÌ Á¶±Ý ´Ù¸£´Ù´ÂÁ¡ ¿Ü¿¡ ¸Þ¼Òµå¿Í Å©°Ô ´Ù¸¥ Á¡Àº ¾ø´Ù´Â »ý°¢ÀÌ µì´Ï´Ù. ¾ÆÁ÷Àº¡¦¡¦

============================================================
method
-----------------------------------------------------------
{method public open {append tn:TTreeNode}:void    
set tn.parent = self
    {self.items.append tn}                          
}
-----------------------------------------------------------
Çö ³ëµå¿¡ ÇÏÀ§ ³ëµå¸¦ Ãß°¡½ÃŰ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù. ³ëµå¸¦ Ãß°¡ÇÏ¿© items¿¡ ¹è¿­·Î ÀúÀåÇÕ´Ï´Ù.
Çö ³ëµå´Â argument·Î ¹Þ¾ÆµéÀÎ ³ëµå(tn)ÀÇ »óÀ§³ëµå°¡ µÇ°í,
argument·Î ¹Þ¾ÆµéÀÎ ³ëµå(tn)´Â Çö ³ëµåÀÇ ÇÏÀ§ ³ëµå°¡ µË´Ï´Ù.

¾ð¶æ º¸¸é °°Àº ¸»À̰í, ½ÇÁ¦·Î set tn.parent = self ¸¦  ÁÖ¼® ó¸®ÇÏ¿©µµ °á°ú È­¸éÀº °°°Ô ³ª¿É´Ï´Ù.
ÇÏÁö¸¸,
³»ºÎÀûÀ¸·Î »óÀ§³ëµå¿Í ÇÏÀ§³ëµå°£¿¡ ¼­·Î ÂüÁ¶µÇ°í ÀÖ¾î¾ß Çϱ⠶§¹®¿¡,
µÎ ¹®ÀåÀº ¸ðµÎ ±â¼úµÇ¾î¾ß ÇÕ´Ï´Ù.


(2) TTreeControl class
- ³ëµåÀÇ »ý¼º°ú È­¸é Ãâ·ÂÀ» ÇÏ´Â ¸Þ¼ÒµåµéÀÌ ÀÖ½À´Ï´Ù.
============================================================
»ý¼ºÀÚ(constructor)
-----------------------------------------------------------
{constructor public {default
                          tn : #TTreeNode = null,
                          ...                        
                      }    
    set self.ftn = tn
{construct-super ...}
{self.refresh-controls}
{self.add self.fvb}                
}
-----------------------------------------------------------
³ëµå¸¦ ¹Þ¾Æ ÇÒ´ç½Ã۰í,
»óÀ§ÀÇ Frame »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© FrameÀÇ ¸ðµç ±â´ÉµéÀ» »ç¿ëÇÒ ¼ö ÀÖ°ÔÇÕ´Ï´Ù.
±×¸®°í refresh-controls ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© È­¸é Ãâ·ÂÀ» ÇÕ´Ï´Ù.

============================================================
È­¸é Ãâ·Â ¸Þ¼Òµå
-----------------------------------------------------------
{method public open {refresh-controls}:void
    {self.fvb.clear}    
    {if self.ftn != null then
        {self.make-tree self.ftn, 0}          
    }                
}
-----------------------------------------------------------
ÀÌ ¸Þ¼Òµå°¡ È£ÃâµÇ¸é ÇöÀç È­¸éÀ» Áö¿ó´Ï´Ù.
±×¸®°í, ³ëµå°¡ NullÀÌ ¾Æ´Ï¸é,
make-tree ¸Þ¼Òµå¸¦ È£Ãâ, ÇöÀç ³ëµå¿Í µé¿©¾²±â°ª 0À» ÁÖ¾î, ³ëµå¸¦ ´Ù½Ã ¸¸µì´Ï´Ù.

============================================================
³ëµå »ý¼º ¸Þ¼Òµå (¼Ò½º°¡ ¸ÕÀú, ±× ¾Æ·¡°¡ ¼³¸íÀÔ´Ï´Ù.)
-----------------------------------------------------------
{method public open {make-tree tn : #TTreeNode, indent : int} : void  
    {if tn == null then                          
        {return}                                  
}  
-----------------------------------------------------------
argument·Î ¹ÞÀº ³ëµå°¡ Null À̸é, ³ëµå¸¦ ´õÀÌ»ó ¸¸µéÁö ¾Ê°í, ÀÌ ÀÌÈÄ´Â ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù.
-----------------------------------------------------------
let fr : Frame = {Frame width=10px}
    {if tn.has-child? then                        
        {fr.add tn.status}                        
        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}      
                }                
            }            
        }
    }    
-----------------------------------------------------------
fr Àº  "+ / - "¸¦ Ãâ·ÂÇϱâ À§ÇÑ ÇÁ·¹ÀÓÀÔ´Ï´Ù.
ÇÏÀ§ ³ëµå¸¦ °¡Áø °æ¿ì¿¡¸¸, ´ÙÀ½À» ¼öÇàÇÕ´Ï´Ù.

ÇÁ·¹ÀÓ(fr)¿¡ ¡°+ / -¡°¸¦ Ãß°¡ÇÕ´Ï´Ù.
ÇÁ·¹ÀÓ¿¡ ¸¶¿ì½º Æ÷ÀÎÅ͸¦ ¿Ã·ÈÀ» ¶§, È­»ìÇ¥ ¸ð¾ç¿¡¼­ ¼Õ°¡¶ô ¸ð¾çÀ¸·Î ¹Ù²Ù±â À§ÇÑ ¼³Á¤À» ÇÕ´Ï´Ù.
ÇÁ·¹ÀÓÀ» Ŭ¸¯ÇßÀ» ¶§, Áï, ¡°+ / -¡°¸¦ Ŭ¸¯ÇßÀ»¶§,
Æ®¸® ¸ð¾çÀÌ ¹Ù²î±â À§ÇØ, ÇÁ·¹ÀÓ¿¡ À̺¥Æ®¸¦ Ãß°¡ÇÕ´Ï´Ù.

¡°+¡± »óÅÂÀ϶§ Ŭ¸¯À» Çϸé, status¸¦ ¡°-¡°·Î ¹Ù²Ù°í,
È­¸éÀ» ´Ù½Ã Ãâ·ÂÇϱâ À§ÇØ, refresh-controls ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
¹Ý´ë·Î, ¡°-¡± »óÅÂÀ϶§ Ŭ¸¯À» Çϸé, status¸¦ ¡°+¡°·Î ¹Ù²Ù°í,
È­¸éÀ» ´Ù½Ã Ãâ·ÂÇϱâ À§ÇØ, refresh-controls ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.

-----------------------------------------------------------    
    {self.fvb.add                                  
        {HBox                                      
            {Fill width=10px * indent},            
            fr,                                  
            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}    
        }
    }      
}
-----------------------------------------------------------
³ëµå°¡ È®ÀåµÈ "-" »óÅÂÀ̸é ÇÏÀ§ ³ëµå¸¦ ¸¸µé°í, "+" »óÅÂÀÌ¸é ¸¸µé Çʿ䰡 ¾ø½À´Ï´Ù.
Áï, ¡°+¡± »óÅÂÀ϶§´Â È­¸é»ó¿¡ ÇÏÀ§ ³ëµå¸¦ Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù.
¡°-¡°ÀÎ °æ¿ì¿¡¸¸ ±× ÇÏÀ§ ³ëµå¸¦ ¸¸µé°í, È­¸é¿¡ ÇÏÀ§ ³ëµå±îÁö ¸ðµÎ Ãâ·ÂÇÏ°Ô µË´Ï´Ù.
È­¸é»ó¿¡ º¸ÀÌ´À³Ä, ¾È º¸ÀÌ´À³Ä¸¸ »ý°¢ÇÕ´Ï´Ù.
¡°-¡°ÀÎ È®ÀåµÈ »óÅÂÀϰæ¿ì, ÇÏÀ§ ³ëµå¸¦ Çϳª¾¿ °¡Á®¿Í Àӽú¯¼ö¿¡ ÇÒ´çÇϰí,
ÀÌ ³ëµå¿¡ ´ëÇØ¼­ ´Ù½Ã make-tree ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.(Àç±ÍÈ£Ãâ)

(3) value
- ³ëµåµéÀ» »ý¼ºÇÏ¿© È­¸é¿¡ º¸¿©ÁÖ´Â ºÎºÐÀÔ´Ï´Ù.
============================================================
{value  
    let tn : TTreeNode = {TTreeNode "root"}
    let tn2 : TTreeNode = {TTreeNode "CCC"}
    {tn.append {TTreeNode "AAA" }}
    {tn.append {TTreeNode "BBB" }}
    {tn.append tn2}|| {TTreeNode "CCC" }
    {tn2.append {TTreeNode "111" }}    
    {tn2.append {TTreeNode "222" }}  
    
    {HBox
        {TTreeControl tn=tn,
            width=100px, height=100px, background="beige"
        }        
    }    
}
-----------------------------------------------------------
³ëµå¸¦ »ý¼ºÇϴµ¥,
root ¾Æ·¡ ù¹øÂ° ³ëµå±îÁö´Â append ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© Ãß°¡ÇÏÁö¸¸,
¡°CCC¡±ÀÇ °æ¿ìó·³ ±× ¾Æ·¡ ¶Ç ³ëµå°¡ ÀÖ´Â °æ¿ì, ´Ù½Ã °´Ã¼¸¦ »ý¼ºÇÏ¿© Ãß°¡Çϰí ÀÖ½À´Ï´Ù.
´Ù¼Ò ºÒÆíÇÑ ¹æ¹ýÀÌÁö¸¸, ÀÌ ºÎºÐÀº ´ÙÀ½ °­Á¿¡¼­ °íÃÄÁý´Ï´Ù.

HBox ¾È¿¡´Â »ý¼ºµÈ ³ëµå¸¦ TreeControl¿¡ ³Ñ°ÜÁÖ°í ÀÖ½À´Ï´Ù.
-----------------------------------------------------------
½ÇÇàµÇ´Â ¼ø¼­´Â (3)Value ºÎºÐºÎÅÍ ½ÃÀÛÇÏ¿© ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
TTreeNode¸¦ »ý¼º -> TTreeControl¿¡ ³Ñ°ÜÁÖ°í -> TTreeControl »ý¼ºÀÚ ½ÇÇà -> ¡¦È£ÃâµÇ´Â ¸Þ¼Òµå¡¦.



±×·³, ´ÙÀ½ °­Á¿¡¼­ °è¼ÓÇϰڽÀ´Ï´Ù.
- 5th -





vidkid
°­Á °¨»çÇÕ´Ï´Ù. 2004-04-30
17:28:10

 


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

¹øÈ£ ºÐ·ù Á¦¸ñ ÀÛ¼ºÀÚ ÀÛ¼ºÀÏ   Ãßõ Á¶È¸
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 2659
60 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #10] ¹æ¸í·Ï ¸¸µé±â #2  [3]  5th 2004/05/17 297 2834
59 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #9] ¹æ¸í·Ï ¸¸µé±â #1  [3]  5th 2004/05/17 279 2653
58 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #8] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #3    5th 2004/05/11 347 2212
57 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #7] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #2  [19]  5th 2004/05/11 348 2299
56 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #6] RecordSet class¸¦ ÀÌ¿ëÇÑ µ¥ÀÌÅÍ ´Ù·ç±â #1  [1]  5th 2004/05/11 280 2538
55 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #5] ¸Þ´º ¸¸µé±â #2    5th 2004/04/30 344 2237
54 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #4] ¸Þ´º ¸¸µé±â #1    5th 2004/04/30 295 2410
53 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #3] ¸Þ´º ¸¸µé±â – ½ÃÀÛ  [1]  5th 2004/04/30 314 2217
52 ÃʱÞÀÀ¿ë  [±âÃʰ­Á #2] Æ®¸®±¸Á¶ ¸¸µé±â #2    5th 2004/04/27 280 2701
ÃʱÞÀÀ¿ë  [±âÃʰ­Á #1] Æ®¸®±¸Á¶ ¸¸µé±â #1  [1]  5th 2004/04/27 318 2793
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