• cxDBTreelist一些使用方法


    一、导出EXCEL   TXT   HTML:

    uses cxTLExportLink;

    cxExportTLToEXCEL(dm.SaveDialog.FileName,cxDBTreeList1,TRUE,TRUE);  //轉入EXCEL
    cxExportTLToTEXT(dm.SaveDialog.FileName,cxDBTreeList1,TRUE,TRUE);     //轉入TXT
    cxExportTLToHTML(dm.SaveDialog.FileName,cxDBTreeList1,TRUE,TRUE);     //轉入HTML

    图片

    --------------------------------------------------------------------------------------------------------------- 

    二、cxdbtreelist1共多少条记录:     showmessage(inttostr(cxtreelist1.VisibleCount));

           cxdbtreelist1当前记录的索引:  showmessage(inttostr(cxTreeList1.FocusedNode.VisibleIndex));

           cxdbtreelist1有多少列:             showmessage(inttostr(cxtreelist1.VisibleColumnCount));

           cxdbtreelist1当前记录的层级:   showmessage(inttostr(cxTreeList1.FocusedNode.Level));

           cxdbtreelist1自动展开:             cxtreelist1.fullexpand; //自动展开

           cxdbtreelist1自动折叠 :               cxtreelist1.FullCollapse;

           cxdbtreelist1取上级节点内容:   ShowMessage(cxdbTreeList1.FocusedNode.Parent.Values[0]);

    三、新增、删除结点:

    增加同级结点:

    procedure Tfr_bommglin.cxButton1Click(Sender: TObject);
    var node:TcxTreeListNode;
    begin

       node:=cxdbTreeList1.FocusedNode.Parent.AddChild;
       node.Values[0]:='aaaaa';
       node.Values[1]:=node.Level;

    end;

    增加下级节点:

    procedure Tfr_bommglin.cxButton2Click(Sender: TObject);
    var node:TcxTreeListNode;
    begin
       node:=cxdbTreeList1.FocusedNode.AddChild;       //增加子节点在首记录:cxdbTreeList1.FocusedNode.AddChildFirst;
       node.Values[0]:='aaaaa';
       node.Values[1]:=node.Level+1;
       cxdbTreeList1.FocusedNode.Expanded:=true;  //展开子节点
    end;

     删除节点:

    ClientDataSet1.GetBookmark;
    cxdbTreeList1.FocusedNode.Delete;     //删除当前节点记录;删除当前节点的子节点:cxdbTreeList1.FocusedNode.DeleteChildren;
    cxDBTreeList1.DataController.GotoBookmark;

    多节点选择删除:

    cxDBTreeList1.DeleteSelection

    数据集控制:

    cxDBTreeList1.DataController.dataset.GotoFirst; //GotoLast     gotonext    gotoprev   GotoBookmark

    cxDBTreeList1.DataController.dataset.Append;         //cancel      updatedata

    cxDBTreeList1.DataController.dataset.edit;

    根据cxdbtreelist随clientdataset1记录定位:

    首先:bl:=cxDBTreeList1.DataController.DataSet.GetBookmark;

    接着:cxDBTreeList1.DataController.DataSet.GotoBookmark(bl);
              cxDBTreeList1.SetFocus;

       

    多结点选择取记录:

      for i:=0 to cxDBTreeList1.SelectionCount-1 do
         begin
           ShowMessage(cxDBTreeList1.Selections[i].Values[1]);
        end;

    -------------------------------------------------------------------------------------------

     三、增加节点图片:

            先在窗体上放ImageList关联到cxDBTreeList,在cxDBTreeList的GetNodeImageIndex事件中写如下:

      procedure cxDBTreeList1GetNodeImageIndex(Sender:TcxCustomTreeList; ANode: TcxTreeListNode; AIndexType:
                           TcxTreeListImageIndexType; var AIndex: TImageIndex);
     var
        i :Integer;
      begin
        //给树结点加上图标
        for i := 0 to ANode.ValueCount do
          begin
         if ANode.Level = 0 then
             begin
               ANode.ImageIndex := 0;
             end
           else
           if ANode.Level = 1 then
             begin
               ANode.ImageIndex := 2;
             end
           else
           if ANode.Level = 2 then
             begin
               ANode.ImageIndex := 1;
             end;
         end;
     end;


    实现 cxTreeList使用复选框实现多选 自动级联选择

    var
      RootNode,SonNode:TcxTreeListNode;
      qryRoot,qrySon:TADOQuery;     
      
      cxTreeList1.OptionsView.CheckGroups:=true;
      cxTreeList1.Root.CheckGroupType:=ncgCheckGroup;  
      qryRoot:=TAdoQuery.create(nil);  
      qrySon:=TAdoQuery.create(nil);  
      qryRoot.Connection:=con1; 
     qrySon.Connection:=con1;  
     try     
     with qryRoot do   
     begin      
    	 Close;		  
    	 SQL.Text:='SELECT DISTINCT  PID,Caption FROM dbo.Parent';
    	 Open;
          qrySon.Close;
          qrySon.SQL.Text:='SELECT PID,SID,Caption FROM dbo.Son  ORDER BY PID,SID';
          qrySon.Open;
          cxTreeList1.Clear;
          DisableControls;
          while not eof do     
     	  begin        
    	    RootNode:=cxTreeList1.Add;
            RootNode.CheckGroupType:=ncgCheckGroup;
            RootNode.Texts[0]:=FieldByName('PID').AsString+'.'+FieldByName('Caption').AsString;
            RootNode.Texts[1]:=FieldByName('PID').AsString;
            RootNode.Enabled:=False;
            with qrySon do        begin          DisableControls;
              Filtered:=False;
              Filter:='PID='+QuotedStr(FieldByName('PID').AsString);
              Filtered:=True;
              while not Eof  do        
    		  begin            
    		    SonNode:=RootNode.AddChild;
                SonNode.Texts[0]:=trim(FieldByName('SID').AsString)+'.'+FieldByName('Caption').AsString;
                SonNode.Texts[1]:=trim(FieldByName('SID').AsString);
                Next;
              end;
              EnableControls;
            end;
            Next;
          end;
          EnableControls;
        end;
      finally    
        qryRoot.Free;
        qrySon.Free;
      end;
    

      


    获取CxDBTreeList所有父节点

    function  ShowCxDBTreeListNodeValues(ACxDBTreeList: TcxDBTreeList): string; 
    var 
    S:string; 
    aNode:TcxTreeListNode; 
    i:Integer; 
    begin 
      if ACxDBTreeList.Visible then 
        if ACxDBTreeList.FocusedNode.HasChildren then //只显示最底层,如果要显示全部  去掉这个条件
         Exit; 
      aNode:=ACxDBTreeList.FocusedNode; 
      for i:=aNode.Level downto 0 do 
      begin 
      if i=ACxDBTreeList.FocusedNode.Level then 
        S:=aNode.Values[1] 
      else 
        S:=aNode.Values[1]+'->'+S; 
      aNode:=aNode.Parent; 
      Result:=S; 
      end; 
    end;


    1,在cxTreeList的treeview内添加的checkbox能否设置一下实现不联动? 我现在选中2,其子节点也全部被选中了,我想实现一个一个的单独可以选中,就是所有子节点全部被选中,其父节点也不跟随子节点的状态变化。 2,把cxTreeList某一列的properties的属性设置为RadioGroup,Items内只设置了一个值“允许” 我如何能动态设置RadioButton的选中状态? 当然properties的属性也可以设置为CheckBox,使用Newnode.Values[3] := False;就可以设置checkbox为非选中状态,但我是想学习一下RadioGroup的用法。

    咋自动选中子节点的? 俺这儿想尽了办法都选不中子节点 大哥指点俺一下! 就是你那个联动咋弄上去的?

     cxTreeList1.OptionsView.CheckGroups := True;  cxTreeList1.Root.CheckGroupType := ncgCheckGroup; var NewNode: TcxTreeListNode; begin   NewNode:=cxTreeList1.Add;   NewNode.CheckGroupType :=  ncgCheckGroup;

    顶顶,再帮忙看看

    帮忙看看,来个回复也好啊,如何让我结贴呢

    CheckGroupType := ncgCheckGroup; 除了这种属性,还有另一种类似 RadioGroup的方式。

  • 相关阅读:
    ChibiOS/RT 2.6.9 CAN Low Level Driver for STM32
    ChibiOS/RT 2.6.9 CAN Driver
    STM32F4 Alternate function mapping
    Spartan6 slave SelectMap configuration fails owing to JTAG?
    STM32F4: Generating parallel signals with the FSMC
    STM32F4xx -- Cortex M4
    STM32F4 HAL Composite USB Device Example : CDC + MSC
    AT91 USB Composite Driver Implementation
    USB组合设备 Interface Association Descriptor (IAD)
    MDK5 and STM32Cube
  • 原文地址:https://www.cnblogs.com/railgunman/p/7134537.html
Copyright © 2020-2023  润新知