乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      TreeView控件

       悟靜 2009-04-25
      TreeView控件
      這個(gè)控件的使用率也是很高的,所以我們就應(yīng)該好好掌握一下了。在梅子這兒有一個(gè)TreeView控件的“玩轉(zhuǎn)系列”。很好!我也就是把她
      里面的一些精華截下來,給大家少作說明而已。如果你想系統(tǒng)的學(xué)一下呢,就下一個(gè)“玩轉(zhuǎn)系列”吧!
      簡單的介紹:
      TreeView控件用來顯示信息的分級(jí)視圖,如同Windows里的資源管理器的目錄。TreeView控件中的各項(xiàng)信息都有一個(gè)與之相關(guān)的Node對
      象。TreeView顯示Node對象的分層目錄結(jié)構(gòu),每個(gè)Node對象均由一個(gè)Label對象和其相關(guān)的位圖組成。在建立TreeView控件后,我們可以展開和
      折疊、顯示或隱藏其中的節(jié)點(diǎn)。TreeView控件一般用來顯示文件和目錄結(jié)構(gòu)、文檔中的類層次、索引中的層次和其他具有分層目錄結(jié)構(gòu)的信息
      。
      TreeView控件有3個(gè)屬性頁,General頁、Font頁、Picture頁。
      TreeView控件屬性
      1。LineStyle屬性
      該屬性設(shè)置本項(xiàng)控件中Node對象之間顯示的線條類型。格式:
      表單.TreeView名.LineStyle=值
      值的范圍:
      0-TvwTreeLines   (缺省)三線顯示兄弟節(jié)點(diǎn)和父子節(jié)點(diǎn)之間的連線
      1-TvwRootLines   根(Root)線。除了上述的連線以外,還顯示根目錄之間的連線
      需要注意的是:在設(shè)置該屬性前,必須設(shè)置Style屬性為TreeLine(三線)。
      2。Style屬性
      該屬性返回和設(shè)置表現(xiàn)在TreeView控件對象中Node對象的圖形類型和文本類型。格式:
      表單.TreeView名.Style=值
      值的范圍:
      0-TvwTextOnly    文本
      1-TvwPictureText   圖象和文本
      2-TvwPlusMinusText   +/-以及文本
      3-TvwPlusPictureText   +/-、圖象以及文本
      4-TvwTreeLinesText   連線和文本
      5-TvwTreeLinesPictureText  連線、圖象和文本
      6-TvwTreeLinesPlusMinueText  連線、+/-和文本
      7-TvwTreeLinesPlusMinusPictureText (缺省)連線、+/-、圖象和文本
      3。Indentation屬性
      該屬性設(shè)置各個(gè)新的Node對象縮進(jìn)的量度。格式如下:
      表單.TreeView名.Indentation=值
      值的范圍:
      必須大于0的數(shù),缺省值為38.00,默認(rèn)單位是磅
      4。Nodes屬性和Index屬性
      該屬性設(shè)置訪問TreeView控件使用Nodes對象集合,Index指定Nodes集合中的某一個(gè)節(jié)點(diǎn)。訪問格式:
      表單.TreeView名.Nodes(index)
      例如要表示當(dāng)前表單中Treenode1控件的Nodes的第三個(gè)節(jié)點(diǎn)為:
      thisform.treenode1.Nodes(3)
      Nodes集合的屬性
      1。Nodes集合的屬性
      該屬性指定當(dāng)前Nodes集合中的節(jié)點(diǎn)個(gè)數(shù)。格式:
      表單.TreeView名.Nodes.Count
      2。Text屬性
      該屬性指定Nodes集合中某個(gè)節(jié)點(diǎn)的文字信息。格式:
      表單.TreeView名.Nodes(index).Text
      3。Key屬性
      該屬性指定Nodes集合中某個(gè)節(jié)點(diǎn)的關(guān)鍵字。格式:
      表單.TreeView名.Nodes(index).Key
      4。另外還有對Nodes集合中某個(gè)節(jié)點(diǎn)進(jìn)行操作的屬性Root(返回當(dāng)前節(jié)點(diǎn)的根結(jié)節(jié))、FirsSibling(第一個(gè)兄弟節(jié)點(diǎn))和Next(下一個(gè)兄弟節(jié)點(diǎn))。
      例如:
      thisform.treeview1.Nodes(3).Root.Key
      thisform.treeview1.nodes(3).firstsibling.key
      thisform.treeview1.nodes(3).next.key
      上面的語句就分別返回了當(dāng)前表單中treeview1控件的第三個(gè)節(jié)點(diǎn)的根結(jié)節(jié)、第一個(gè)兄弟節(jié)點(diǎn)和下一個(gè)兄弟節(jié)點(diǎn)的關(guān)鍵字。
      Nodes集合的方法
      1。Clear方法
      該方法清除當(dāng)前Nodes集合中的所有節(jié)點(diǎn)。格式:
      表單.TreeView名.Nodes.Clear
      2。Add方法
      該方法向當(dāng)前Nodes集合中添加一個(gè)新節(jié)點(diǎn)。格式:
      表單.TreeView名.Nodes.Add(Relative,RelationShip,Key,Text,Image,Selectedimage)
      解釋:
      Relative  表示相關(guān)聯(lián)的親屬,一般用其親屬的關(guān)鍵字表示
      RelationShip  表示與關(guān)聯(lián)的親屬之間的關(guān)系。
      1-tvwNext 表示親屬間是平等關(guān)系
      4-tvwNext 表示親屬間是父子關(guān)系
      Key   表示此節(jié)點(diǎn)的關(guān)鍵字,也是區(qū)別于其他節(jié)點(diǎn)的唯一標(biāo)識(shí)
      Text   表示此節(jié)點(diǎn)要顯示的文本
      Image   表示節(jié)點(diǎn)處顯示的圖形
      舉例:
      thisform.treeview1.nodes.add(,"r","root")  &&增加根節(jié)點(diǎn)r
      thisform.treeview1.nodes.add("r",4,"c1","child1") &&增加子節(jié)點(diǎn)c1
      TreeView控件的常用事件
      1。NodeClick事件
      該事件在用戶單擊節(jié)點(diǎn)文本時(shí)激活。格式:
      PROCEDURE TreeView名.NodeClick
      LPARAMETERS node  && node表示當(dāng)前節(jié)點(diǎn)對象
      &&你的程序
      ENDPROC
      2。Expand事件
      該事件在用戶展開一個(gè)"+"節(jié)點(diǎn)時(shí)激活。格式:
      PROCEDURE TreeView名.Ecpand
      LPARAMERS node
      &&你的程序
      ENDPROC
      3。Collapse事件
      該事件在用戶折疊一個(gè)"-"節(jié)點(diǎn)時(shí)激活。格式:
      PROCEDURE TreeView名.Collapse
      LPATAMETERS node
      &&你的程序
      ENDPROC
      簡單的例子(有關(guān)用數(shù)據(jù)表作為數(shù)據(jù)環(huán)境給TreeView控件增加節(jié)點(diǎn),其中再次使用了imagelist控件)
      建立一個(gè)表單treeview1.scx,其數(shù)據(jù)環(huán)境為zgb.dbf,表結(jié)構(gòu)如下:
      xm bmh bm
      -------------------------
      王華 001 人事處
      李名 002 財(cái)務(wù)處
      張應(yīng) 003 科研處
      張強(qiáng) 001 人事處
      李冰 002 財(cái)務(wù)處
      孫樣 002 財(cái)務(wù)處
      理應(yīng) 003 科研出
      -------------------------
      向該表單中添加一個(gè)treeview控件treeview1和一個(gè)圖象列表控件imagelist1,向imagelist1控件中插入兩幅圖片。在imagelist1控件上設(shè)計(jì)如
      下事件:
      PROCEDURE imagelist1.click
      thisform.treeview1.linestyle=1
      thisform.treeview1.style=7
      select distinct bmh,bm from zgb into curs temp order by bmh
      selec temp
      go top
      do while .not.eof()
      this.nodes.add(,,'K'+temp.bmh,rtrim(temp.bm))
      sele zgb
      set filter to bmh=temp.bmh
      go top
      do while .not.eof()
      this.nodes.add('K'+TEMP.BMH,4,,RTRIM(XM))
      skip
      enddo
      sele temp
      skip
      enddo
      this.imagelist=thisform.imagelist1.object
      for imagelist=1 to this.nodes.count
      if this.nodes(imagelist).children>0
      this.nodes(imagelist).image='bmkey'
      else
      this.nodes(imagelist).image='zgkey'
      endi
      endfor
      ENDPROC
      <完>
      下貼還有一個(gè)復(fù)雜一些的例子
      相對復(fù)雜的例子其中使用了類
      建立一個(gè)表單treevies2.scx,在其中添加一個(gè)treeview控件oletree、7個(gè)命令按鈕、一個(gè)形狀、一個(gè)組合框、4個(gè)標(biāo)簽。
      對表單中對應(yīng)的類treeview2的定義如下:
      *******************************************
      **類:treeview2
      *******************************************
      DEFINE CLASS treeview2 AS form
      DataSession=2
      top=19
      left=13
      height=297
      width=568
      docreate=.t.
      caption="treeview"
      maxbutton=.f.
      windowState=0
      cnextkey=1_
      cdbfname=""
      name="form1"
      *如果一個(gè)dbf不能打開,則設(shè)置為.f.
      openedsuccessfully=.f.
      ADD OBJECT oletree AS olecontrol with;
      top=79,;
      left=11,;
      height=182,;
      tabindex=1,;
      name="oletree"
      ADD OBJECT cboparent AS combobox with;
      fontbold=.f.,;
      fontname="宋體",;
      fontsize=10,;
      rowsource="",;
      value=0,;
      controlsource="",;
      height=23,;
      left=236,;
      style=2,;
      tabindex=10,;
      top=267,;
      width=242,;
      name="cboParent"
      ADD OBJECT label1 AS label with;
      autosize=.t.,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=12,;
      backstyle=0,;
      caption="選擇節(jié)點(diǎn)",;
      height=20,;
      left=159,;
      top=271,;
      width=71,;
      tabindex=9,;
      forecolor=rgb(0,0,255),;
      name="label1"
      ADD OBJECT cmdnewnode AS commandbutton with;
      top=79,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="新根節(jié)點(diǎn)",;
      enabled=.t.,;
      tabindex=2,;
      forecolor=rgb(255,0,0),;
      name="cmdNewNode"
      ADD OBJECT cmddeletenode AS commandbutton with;
      top=136,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="刪  除",;
      enabled=.t.,;
      tabindex=4,;
      forecolor=rgb(255,0,0),;
      name="cmdDeleteNode"
      ADD OBJECT cmdloaddbf AS commandbutton with;
      top=225,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="從DBF調(diào)用",;
      enabled=.t.,;
      tabindex=7,;
      forecolor=rgb(255,0,0),;
      name="cmdloaddbf"
      ADD OBJECT cmdsavedbf AS commandbutton with;
      top=195,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="存儲(chǔ)到DBF",;
      enabled=.t.,;
      tabindex=6,;
      forecolor=rgb(255,0,0),;
      name="cmdsavedbf"
      ADD OBJECT cmdclear AS commandbutton with;
      top=165,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="清  除",;
      enabled=.t.,;
      tabindex=5,;
      forecolor=rgb(255,0,0),;
      name="cmdclear"
      ADD OBJECT cmdnewchild AS commandbutton with;
      top=107,;
      left=483,;
      height=26,;
      width=82,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="新子節(jié)點(diǎn)",;
      enabled=.t.,;
      tabindex=3,;
      forecolor=rgb(255,0,0),;
      name="cmdnewchild"
      ADD OBJECT cmdclose AS commandbutton with;
      top=267,;
      left=485,;
      height=26,;
      width=80,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      caption="關(guān)  閉",;
      enabled=.t.,;
      tabindex=5,;
      forecolor=rgb(255,0,0),;
      name="cmdclose"
      ADD OBJECT shape1 AS shape with;
      top=13,;
      left=11,;
      height=56,;
      width=548,;
      backstyle=0,;
      specialeffect=0,;
      name="shape1"
      ADD OBJECT label3 AS label with;
      top=24,;
      left=21,;
      height=40,;
      width=529,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=10,;
      wordwrap=.t.,;
      tabindex=0,;
      forecolor=rgb(0,0,255),;
      name="label3",;
      caption="Treeview控件顯示一個(gè)類似瀏覽器的界面。單擊“新根節(jié)點(diǎn)”添加一個(gè)新項(xiàng)到該控件中。單擊“新子節(jié)點(diǎn)”添加一個(gè);
      子節(jié)點(diǎn)到當(dāng)前選擇的節(jié)點(diǎn)上??梢詥螕?#8220;存儲(chǔ)到DBF”將這些節(jié)點(diǎn)存儲(chǔ)到一個(gè)DBF文件中。"
      ADD OBJECT label4 AS label with;
      autosize=.t.,;
      top=7,;
      left=19,;
      height=19,;
      width=85,;
      fontbold=.t.,;
      fontname="宋體",;
      fontsize=11,;
      wordwrap=.t.,;
      tabindex=0,;
      forecolor=rgb(255,0,0),;
      name="label4",;
      caption="操作說明"
      *!*返回新節(jié)點(diǎn)的一個(gè)新關(guān)鍵字
      PROCEDDURE newkey
      cKey=this.cNextKey
      this.cNextKey=allt(str(val(this.cNextKey)+1)+"_")
      PRTURN cKey
      ENDPROC
      PROCEDURE refreshcombo
      this.cboparent.clear
      for i=1 to this.oletree.nodes.count
      this.cboparent.addlistitem(this.oletree.nodes.item(i)).fullpath,i,1)
      endfor
      ENDPROC
      *!*檢查確保該表具有存儲(chǔ)或恢復(fù)一個(gè)輪廓所需要的字段
      PROCEDURE verifytablestructure
      LOCAL lafields[1,11],lnpos,laneeded[3],lncnt
      #DEFINE FIELD1_LOC"KEY"
      #DEFINE FIELD2_LOC"PARENT"
      #DEFINE FIELD3_LOC"TEXT"
      laNeeded[1]=FIELD1_LOC
      laNeeded[2]=FIELD2_LOC
      laNeeded[3]=FIELD3_LOC
      =AFIELDS(laFields,laNeeded[lnCnt])
      FOR lnCnt=1 to alen(laNeeded)
      lnPos=ASCAN(laFields,laNeeded[lnCnt])
      IF lnPos=0 .or. laFields[lnPos+1]!='C'
      #DEFINE TITLE_LOC "Invalid Table Structure"
      #DEFINE MSG_LOC"The table must contain 3 character fields:";
      +chr(13)+chr(13)+FIELD1_LOC+;
      chr(13)+FIELD2_LOC+chr(13)+FIELD3_LOC
      =messagebox(msg_loc,48+0+0,title_loc)
      return .f.
      ENDIF
      ENDFOR
      return .t.
      ENDPROC
      PROCEDURE opendbf
      LPARAMETERS lcDBFNAME,llExclusive
      thisform.openedsuccessfully=.t.
      #DEFINE ERR_LOC "Error"
      IF !file (lcDBFNAME)
      #DEFINE ERR1_LOC "Cannot find the specified file."
      =messagebox(err1_loc,48+0+0,err_loc)
      return .f.
      ENDIF
      lcAlias=substr(lcDBFName,rat("\",lcDBFNAME)+1)
      lcAlias=substr(lcAlias,1,at(".",lcAlias)-1)
      IF llExclusive
      use (lcDBFName) in 0 exclusive
      ENDIF
      IF !use (lcAlias)
      use (lcDBFName) in 0 shared
      ENDIF
      select (lcAlias)
      return thisform.openedsuccessfully
      ENDPROC
      *!*基于選擇的項(xiàng)來允許/廢止相應(yīng)的按鈕
      PROCEDURE checkbuttons
      o=thisform.oletree
      IF isnull(o.selecteditem)then
      thisform.cmdnewchild.enabled=.f.
      thisform.cmdndeletenode.enabled=.f.
      ELSE
      thisform.cmdnewchild.enabled=.T.
      thisform.cmdndeletenode.enabled=.T.
      ENDIF
      ENDPROC
      PROCEDURE init
      *!*用init 來檢查OCX是否安裝和裝入
      IF type("this.oletree")#"o" .or. isnull(this.oletree)
      return .f.
      ENDIF
      ENDPROC
      PROCEDURE oletree.afterlabeledit
      LPARAMETERS cancel,newstring
      IF !isnull(newstring)
      this.selecteditem.text=newstring
      thisform.refreshcombo
      thisform.cboparent.value=this.selecteditem.index
      EDNIF
      ENDPROC
      PROCEDURE oletree.nodeclick
      LPARAMETERS node
      thisform.refreshcombo
      thisform.cboparent.value=node.index
      thisofrm.checkbuttons
      ENDPROC
      PROCEDURE oletree.lostfocus
      on key label F1
      ENDPROC
      PROCEDURE oletree.gotfocus
      on key label F1 help id_screen.activeform.helpcontextID
      ENDPROC
      PROCEDURE cboparent.gotfocus
      thisform.refreshcombo
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cboparent.interactivechange
      thisform.oletree.nodes(this.value).selected=.t.
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cmdnewnode.click
      #DEFINE TXT_LOC"單擊編輯文本"
      o=thisform.oletree
      o.nodes.add(,1,thisform.newkey(),TXT_LOC,0)
      ENDPROC
      PROCEDURE cmddeletenode.click
      o=thisform.oletree
      IF !isnull(o.selecteditem)
      o.nodes.remove(o.selceteditem.key)
      ENDIF
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cmdloaddbf.click
      local lcOldAlias,laFields
      lcOldAlias=alias()
      lcDBFName=getfile('dbf')
      IF empty(m.lcDBFName)
      return
      ENDIF
      IF thisform.opendbf(lcdbfname)
      IF !thisform.verifytablestructure()
      return
      ENDIF
      o=thisform.oletree.nodes
      o.clear
      SCAN
      IF allt(parent)='0_'
      o.add(,1,allt(key),allt(text),0)
      ELSE
      o.add(allt(parent),4,allt(key,allt(text),0)
      ENDIF
      thisform.cNextKey=allt(str(val(key)+1)+"_")
      ENDSCAN
      use
      IF !empty(lcOldAlias)
      select (lcOldAlias)
      ENDIF
      ENDIF
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cmdsavedbf.click
      local loNodes,lcParent,lcDBFName,lcOldAlias,lcOldSafety
      #DEFINE WARNING_LOC "Continuing will destroy all data in the table;
      and create a new table with three fields."+chr(13)+"Do you want to continue?"
      #DEFINE WARN_LOC "WARNING"
      lcOldAlias=alias()
      lcOldSafety=set("safety")
      lcDBFName=getfile('dbf')
      IF empty(lcDBFName)  && 用戶選擇放棄
      return
      ENDIF
      IF file(lcDBFName)
      IF thisform.opendbf(lcDBFName,.t.) .and. ;
      thisform.verifytablestructure() .and.;
      messagebox(warning_loc,48+256+4,warn_loc)=6
      set safety off
      zap
      set safety &lcOldSafety
      ELSE
      return
      ENDIF
      ELSE
      create table (lcDBFName) (key c(4), parent c(4), text c(60))
      ENDIF
      loNodes=thisform.oletree.nodes
      FOR i=1 to loNodes.count
      IF isnull(loNodes.Item(i).parent)
      lcparent="0_" &&根
      ELSE
      lcParent=loNodes.item(i)parent.key
      ENDIF
      insert into (lcDBFName) values (loNodes.item(i).key, lcParent, loNodes.item(i).text)
      ENDFOR
      use
      IF !empty(lcOldAlias)
      select (lcOldAlias)
      ENDIF
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cmdclear.click
      thisform.oletree.nodes.clear
      thisform.checkbuttons
      ENDPROC
      PROCEDURE cmdnewchild.click
      #DEFINE TXT_LOC "單擊編輯文本"
      o= thisform.oletree
      IF !isnull(o.selecteditem) then
      o.Nodes.add(o.seleceteditem.key,4,thisform.newkey(),txt_loc,0)
      ENDIF
      ENDPROC
      PROCEDURE cmdclose.click
      thisform.release
      ENDPROC
      ENDDDEFINE

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多