好象就是速达3000里面实现的功能,肯定不是用treeview能实现的,还要涉及到画图等等,
那个联系的箭头就得费点功夫,真是头痛

解决方案 »

  1.   

    先将所有一版的内容画好作成一个图片。放一个控件image1
    从中取出需要变化的图片1,并记下位置,再做变化后的内容也画成一个图片2。再放一个image控件,鼠标移出是图片1,移入是图片2,一个个做好就是了,可能要几天功夫,还要有艺术天份,祝你成功!
      

  2.   

    //你先玩玩是不是这样
    //如果是我再升级封装//pas
    unit Unit4;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, DBTables, ExtCtrls;type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Timer1: TTimer;
        procedure Label1MouseEnter(Sender: TObject);
        procedure Label1MouseLeave(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
        FForm: TForm1;
        FLabel: TLabel;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Label1MouseEnter(Sender: TObject);
    begin
      if Assigned(FForm) then begin
        FForm.Free;
        FForm := nil;
      end;  TLabel(Sender).Color := clHighlight;
      TLabel(Sender).Font.Color := not Font.Color;
      Timer1.Enabled := False;
      FLabel := TLabel(Sender);
      Timer1.Enabled := True;
    end;procedure TForm1.Label1MouseLeave(Sender: TObject);
    begin
      TLabel(Sender).ParentColor := True;
      TLabel(Sender).Font.Color := Font.Color;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    var
      I: Integer;
      H: Integer;
    begin
      TTimer(Sender).Enabled := False;
      if not Assigned(FForm) then FForm := TForm1.Create(Self);
      FForm.BorderStyle := bsNone;
      H := FForm.Height;
      FForm.Height := FLabel.Height;
      FForm.Top := Top + FLabel.Top + 23;
      FForm.Left := Left;
      FForm.Color := RGB(Random(256), Random(256), Random(256));
      FForm.Font.Color := not Font.Color;
      FForm.Show;
      for I := 1 to Width div 2 do begin
        Application.ProcessMessages;
        FForm.Left := FForm.Left + 2;
      end;
      for I := 1 to (H - FLabel.Height - 23) div 3 do begin
        Application.ProcessMessages;
        FForm.Height := FForm.Height + 3;
      end;
    end;end.//dfm
    object Form1: TForm1
      Left = 198
      Top = 233
      Width = 149
      Height = 123
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object Label1: TLabel
        Tag = 1
        Left = 0
        Top = 0
        Width = 141
        Height = 23
        Alignment = taCenter
        AutoSize = False
        Caption = 'Label1>>>'
        Layout = tlCenter
        OnMouseEnter = Label1MouseEnter
        OnMouseLeave = Label1MouseLeave
      end
      object Label2: TLabel
        Tag = 2
        Left = 0
        Top = 25
        Width = 141
        Height = 23
        Alignment = taCenter
        AutoSize = False
        Caption = 'Label2>>>'
        Layout = tlCenter
        OnMouseEnter = Label1MouseEnter
        OnMouseLeave = Label1MouseLeave
      end
      object Label3: TLabel
        Tag = 3
        Left = 0
        Top = 49
        Width = 141
        Height = 23
        Alignment = taCenter
        AutoSize = False
        Caption = 'Label3>>>'
        Layout = tlCenter
        OnMouseEnter = Label1MouseEnter
        OnMouseLeave = Label1MouseLeave
      end
      object Label4: TLabel
        Tag = 4
        Left = 0
        Top = 73
        Width = 141
        Height = 23
        Alignment = taCenter
        AutoSize = False
        Caption = 'Label4>>>'
        Layout = tlCenter
        OnMouseEnter = Label1MouseEnter
        OnMouseLeave = Label1MouseLeave
      end
      object Timer1: TTimer
        Enabled = False
        Interval = 500
        OnTimer = Timer1Timer
      end
    end
      

  3.   

    用treeview控件和imagelist相连:
    发一个例子给你参考:
    procedure Tfrm_sendfile.settreeview;
    var
     p_data:pstring;
     first_node,two_node,three_node:ttreenode;
    begin
      query3.close;
      query3.sql.clear;
      query3.sql.add('select distinct datepart(yy,rec_date) as rec_date from t_files_manage');
      query3.open;
      new(p_data);
      p_data^:='lf_lake';
      treeview1.Items.Clear;      //第一个节点
      first_node:=treeview1.Items.Addobject(nil,'xxx文件管理',p_data);
      while not query3.eof do
      begin
        new(p_data);
        p_data^:=query3.fieldbyname('rec_date').asstring;   //第二个结点---年份
        two_node:=treeview1.Items.AddChildObject(first_node,query3.fieldbyname('rec_date').asstring,p_data);
        two_node.ImageIndex:=1;
        two_node.SelectedIndex:=3;
        query1.close;
        query1.sql.clear;
        query1.sql.add('select file_code from t_files_manage where datepart(yy,rec_date)=:fdate');
        query1.ParamByName('fdate').asstring:=query3.fieldbyname('rec_date').asstring;
        query1.open;
        while not query1.eof do
        begin
          //new(p_data);                                  //第三个结点---文件编号
          //p_data^:=query1.fieldbyname('file_code').asstring;
          three_node:=treeview1.items.AddChildObject(two_node,query1.fieldbyname('file_code').asstring,p_data);
          three_node.ImageIndex:=2;
          three_node.SelectedIndex:=3;
          query1.Next;
        end;
        query3.next;
      end;
    end;
    把你要的箭头先做好成图标,放到imagelist中
      

  4.   

    没有现成的这样的控件,至少我没有见过。
    你可以自已用menuitem动态的控制。