delphi 7 怎样制作一步步提示的界面
类似安装程序、SQL SERVER 的DTS导入导出,某些软件的操作提示等。。用什么控件?
怎样实现?

解决方案 »

  1.   

    没有控件,你就弄form一个接一个的弄
      

  2.   

    要不就在一个窗体上,放许多类似panel的容器,每次只一个看见,其它隐藏
      

  3.   

    PageControl,隐藏标签就可以了(TabSheet.TabVisible = false)
    然后切换页的时候,指定PageControl.ActivePageIndex就可以了。
      

  4.   

    用pagecontrol来实现,点下一步就显示下一个tab其余的隐藏.
      

  5.   

    同意楼上的,弄3个panel(数目随你自己定),第一个panel上放一个按钮(button),caotion设置为“下一步”,其他的几个panel上放两个按钮,caotion分别设置为“上不步”和“下一步”,最后一个panel放置两个按钮,caotion分别设置为“上一步”和“完成”。然后除了第一个panel外,其他panel的visible属性全部设置为“false”,并且把所有的panel重叠放置,保持它们的大小和位置完全一致,表面上只能看到第一个panel。panel1中“下一步”按钮的onclick事件的代码为:
    panel2.show;
    panel1.hide;
    ......
    paneln.hide;panel2中“上一步”的按钮的代码为:
    panel1.show;
    panel2.hide;
    ......
    paneln.hide;panel2中“下一步”按钮的onclick事件的代码为:
    panel3.show;
    panel1.hide;
    ......
    paneln.hide;以此类推就可以了。关键是要所有的panel的大小和位置要一致,可以按住“Ctrl”键的同时,再按键盘上的方向键来仔细调整,或者在属性里直接设置相同的位置属性top、left等
      

  6.   

    用PageContorl简单做了一个。1.建立一个form
    2.在form上放一个PageControl1,然后点右键new page建立四个页面。
    3.在第一页上放一个按钮 caption 为"下一步"
      在第二三页上放两个按钮  caption 为"下一步","上一步"
      在最后一个页上放两个按钮 caption 为“上一步",“完成"
    4.选中每个TabSheet 将它们的tabvisible设置为false。
    5.在下一步中写代码:PageControl1.ActivePageIndex := 1或2或3
      在上一步中写代码: PageControl1.ActivePageIndex := 2或1或0
      完成中写Close;
    6.将pagecontrol1的Activepage设为TabSheet1然后执行,试试。
      

  7.   

    其实最好是动态创建,无论是用pagecontrol还是panel,至于界面,保存一个类似dfm文件数据结构的ini文件就好了
      

  8.   

    pagecontrol可以写上一页下一页,很好用
      

  9.   

    不是有frame吗,设计好每一步,然后调就可以了。
      

  10.   

    cnpack.org
    好像有这个,可是没有用过!
    不过赞成用pageControl
      

  11.   

    给你一个通用类:
    unit FormGuide;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, dxSkinsCore, dxSkinsDefaultPainters, dxSkinscxPCPainter, Menus,
      cxLookAndFeelPainters, StdCtrls, cxButtons, cxPC, cxControls, ExtCtrls,
      jpeg;type
      TFormGuideCustom = class(TForm)
        cxPageControlGuide: TcxPageControl;
        cxTabSheet1: TcxTabSheet;
        cxButton1: TcxButton;
        ButtonPrior: TcxButton;
        ButtonNext: TcxButton;
        cxButtonExecute: TcxButton;
        Image1: TImage;
        procedure ButtonPriorClick(Sender: TObject);
        procedure ButtonNextClick(Sender: TObject);
        procedure cxButtonExecuteClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
      private
        FFinalExecute: boolean;
        function GetStepIndex: integer;
      protected
        procedure MoveTo(Value: integer);
        procedure SetButton;
      public
        constructor Create(AOwner: TComponent); override;
        procedure Init; virtual;
        procedure doExecute; virtual; abstract;
        procedure Next; virtual;
        procedure Prior; virtual;
        property StepIndex: integer read GetStepIndex;
        property FinalExecute: boolean read FFinalExecute write FFinalExecute default True;
      end;var
      FormGuideCustom: TFormGuideCustom;implementation{$R *.dfm}{ TFormGuideCustom }procedure TFormGuideCustom.Init;
    var
      i: integer;
      vPageCount: integer;
    begin
      vPageCount := cxPageControlGuide.PageCount;
      if vPageCount >= 2 then
        for i := vPageCount - 1 downto 1 do
          cxPageControlGuide.Pages[i].TabVisible := false;
      cxPageControlGuide.ActivePageIndex := 0;
      SetButton;
    end;procedure TFormGuideCustom.MoveTo(Value: integer);
    var
      vIndex: integer;
    begin
      vIndex := cxPageControlGuide.ActivePageIndex + Value;
      cxPageControlGuide.ActivePageIndex := vIndex;
      cxPageControlGuide.Pages[vIndex].TabVisible := true;
      cxPageControlGuide.Pages[vIndex - Value].TabVisible := false;
      SetButton;
    end;procedure TFormGuideCustom.Next;
    begin
      MoveTo(1);
    end;procedure TFormGuideCustom.Prior;
    begin
      MoveTo(-1);
    end;procedure TFormGuideCustom.SetButton;
    begin
      ButtonPrior.Enabled := cxPageControlGuide.ActivePageIndex > 0;
      ButtonNext.Enabled := (cxPageControlGuide.ActivePageIndex < (cxPageControlGuide.PageCount - 1));
      if FFinalExecute then
        cxButtonExecute.Enabled := not ButtonNext.Enabled
      else
        cxButtonExecute.Enabled := ButtonPrior.Enabled;
    end;procedure TFormGuideCustom.ButtonPriorClick(Sender: TObject);
    begin
      Prior;
    end;procedure TFormGuideCustom.ButtonNextClick(Sender: TObject);
    begin
      Next;
    end;procedure TFormGuideCustom.cxButtonExecuteClick(Sender: TObject);
    begin
      doExecute;
    end;procedure TFormGuideCustom.FormShow(Sender: TObject);
    begin
      Init;
    end;function TFormGuideCustom.GetStepIndex: integer;
    begin
      result := cxPageControlGuide.ActivePageIndex;
    end;constructor TFormGuideCustom.Create(AOwner: TComponent);
    begin
      inherited;
      FFinalExecute := True;
    end;
    这里使用的是TcxPageControl,你可以直接换成TPageCotrol就可以了
      

  12.   

    上面的TAB怎么样隐藏??????谢啦。
      

  13.   

    将tabsheet的属性tabvisible改为false
      

  14.   

    最好最快最省资源就是用THREAD类 动态创建 控件,然后事件自己写一个 比如 NEXT 事件!
     
    procedure Mybutton1Onclick(Send: TObject);
    begin
      ...
    end;Mybutton := TButton.Create(nil);
    Mybutton.parent := form1;
    Mybutton.OnClick := Mybutton1Onclick;
    其它类似的控件采用这种方法搞顶咯!!
      

  15.   

    我用类似
    if form1.showmodal = mrOK then form2.showmodal
    其中 form1上有个按钮,一点就执行 form1.modalresult :=mrOk
      

  16.   

    前段时间写了一个安装程序,觉得用notebook不错,上一步,下一步只要改变activepage属性值即可,初次使用的话,小心些就好(如果是用ctrl+v更要小心,别跑到其它页去了),你会喜欢它的.
      

  17.   

    pagecontrol,利用它的indexpage改变
      

  18.   

    PageControl,隐藏标签就可以了(TabSheet.TabVisible = false) 
    然后切换页的时候,指定PageControl.ActivePageIndex就可以了。
    多好啊,设计时也方便。
      

  19.   

    用DELPHI自带的TNoteBook就可以了
      

  20.   

    panel1中“下一步”按钮的onclick事件的代码为: 
    panel2.showmodal; panel2中“上一步”的按钮的代码为: 
    modalresult:=mrcancel;panel2中“下一步”按钮的onclick事件的代码为: 
    panel3.showmodal; 
    .
    .
    .
    所有窗体一样大就可以了,自己试试看吧
      

  21.   

    Win3.1面板上的Notebook组件即可编辑添加Pages,Click Button事件里每次切换ActivePage即可。
      

  22.   

    notebook不错,只要改变activepage,可以结合IF判断,刚用不久,觉 得不错
      

  23.   

    pagecontrol  一步一步来  也不错。。