我要实现这样的功能:左边是一个treeview,显示的是产品结构的层次结构树,右边是一个根据选择的零部件,撰写不同的工艺,总共有11列的内容。我想做成最上面一行显示列的名称,然后可以在下一行填写具体的内容,列的名称分别是:序号、紧急程度、编号、名称、工艺文件类型、设计、计划结束时间、校对、计划结束时间、批准、计划结束时间等。其中有一些列的内容是从ComboBox中选择,该如何实现那?
我现在用的是ListView,由于我是个新手,不知道该怎么实现了?还有ListView可不可实现这个功能?我的信箱是[email protected]

解决方案 »

  1.   

    新手就能写这样的程序啦?晕……ListView 当然可以实现,设置 ViewStyle = vsReport ,再添加列就行了,不过这么多列,我怕你放不下。好了,给分。
      

  2.   

    如果你的列是固定的,可以设计的时候在ListView的Columns属性里加就行了,加好后,你可以在TreeView的事件中处理到底如何处理ListView中的信息。比如:
    type
      PMapNode = ^TMapNode;
      TMapNode = record
        fIndex:Integer;//图片编号
        fCode:String;//图片编码
        fName:String;//图片名称
        fType:Integer;
        FileName:String;//文件名
      end;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        ListView1: TListView;
        procedure TreeView1Click(Sender: TObject);
      private
        { Private declarations }
        function AddRootNode(MapType:Integer):TTreeNode;
        procedure AddChildNode(RootNode:TTreeNode;fIndex:Integer;fCode,fName:String;fType:Integer;FileName:String);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    function TForm1.AddRootNode(MapType:Integer):TTreeNode;
    var
      RootNode:TTreeNode;
    begin
      TreeView1.Items.Clear;
      case MapType of
        0://单位方位图
          begin
            RootNode := TreeView1.Items.Add(nil,'单位方位图');
          end;
        1://建筑平面图
          begin
            RootNode := TreeView1.Items.Add(nil,'建筑平面图');
          end;
        2://建筑立面图
          begin
            RootNode := TreeView1.Items.Add(nil,'建筑立面图');
          end;
        3://楼层平面图
          begin
            RootNode := TreeView1.Items.Add(nil,'楼层平面图');
          end;
        4://消防部署图
          begin
            RootNode := TreeView1.Items.Add(nil,'消防部署图');
          end;
        5://最佳路径图
          begin
            RootNode := TreeView1.Items.Add(nil,'最佳路径图');
          end;
      end;
      Result := RootNode;
    end;{***************************************************************
     * 方 法 名  : TfrmMap.AddChildNode
     * 编写目的   :
     * 作    者  : 黄仁光
     * 参    数  : RootNode:TTreeNode;fIndex:Integer;fCode,fName:String;FileName:String
     * 结    果  : None
     * 编写日期   :2002年12月18日
     ****************************************************************}
    procedure TForm1.AddChildNode(RootNode:TTreeNode;fIndex:Integer;fCode,fName:String;fType:Integer;FileName:String);
    var
      ChildNode:TTreeNode;
      pMapChild:PMapNode;
    begin
      new(pMapChild);
      pMapChild^.fIndex := fIndex;
      pMapChild^.fCode := fCode;
      pMapChild^.fName := fName;
      pMapChild^.fType := fType;
      pMapChild^.FileName := FileName;
      ChildNode := TreeView1.Items.AddChildObject(RootNode,fCode,pMapChild);
    end;procedure TForm1.TreeView1Click(Sender: TObject);
    var
      SlectNode:TTreeNode;
      pMapChild:PMapNode;
      ListItem: TListItem;
    begin
      SlectNode := TreeView1.Selected;
      new(pMapChild);
      pMapChild := PMapNode(SlectNode.Data);
      ListView1.Items.Clear;
      ListItem := ListView1.Items.Add;
      ListItem.Caption := pMapChild.fName;
      ListItem.SubItems.Add(pMapChild.fCode);
      ListItem.SubItems.Add(pMapChild.FileName);
      ....
      //你仿照这样做应当说是很容易的。
    end;