delphi 7 怎样制作一步步提示的界面 delphi 7 怎样制作一步步提示的界面类似安装程序、SQL SERVER 的DTS导入导出,某些软件的操作提示等。。用什么控件?怎样实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有控件,你就弄form一个接一个的弄 要不就在一个窗体上,放许多类似panel的容器,每次只一个看见,其它隐藏 PageControl,隐藏标签就可以了(TabSheet.TabVisible = false)然后切换页的时候,指定PageControl.ActivePageIndex就可以了。 用pagecontrol来实现,点下一步就显示下一个tab其余的隐藏. 同意楼上的,弄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等 用PageContorl简单做了一个。1.建立一个form2.在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然后执行,试试。 其实最好是动态创建,无论是用pagecontrol还是panel,至于界面,保存一个类似dfm文件数据结构的ini文件就好了 pagecontrol可以写上一页下一页,很好用 不是有frame吗,设计好每一步,然后调就可以了。 cnpack.org好像有这个,可是没有用过!不过赞成用pageControl 给你一个通用类: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就可以了 上面的TAB怎么样隐藏??????谢啦。 将tabsheet的属性tabvisible改为false 最好最快最省资源就是用THREAD类 动态创建 控件,然后事件自己写一个 比如 NEXT 事件! procedure Mybutton1Onclick(Send: TObject);begin ...end;Mybutton := TButton.Create(nil);Mybutton.parent := form1;Mybutton.OnClick := Mybutton1Onclick;其它类似的控件采用这种方法搞顶咯!! 我用类似if form1.showmodal = mrOK then form2.showmodal其中 form1上有个按钮,一点就执行 form1.modalresult :=mrOk 前段时间写了一个安装程序,觉得用notebook不错,上一步,下一步只要改变activepage属性值即可,初次使用的话,小心些就好(如果是用ctrl+v更要小心,别跑到其它页去了),你会喜欢它的. pagecontrol,利用它的indexpage改变 PageControl,隐藏标签就可以了(TabSheet.TabVisible = false) 然后切换页的时候,指定PageControl.ActivePageIndex就可以了。多好啊,设计时也方便。 用DELPHI自带的TNoteBook就可以了 panel1中“下一步”按钮的onclick事件的代码为: panel2.showmodal; panel2中“上一步”的按钮的代码为: modalresult:=mrcancel;panel2中“下一步”按钮的onclick事件的代码为: panel3.showmodal; ...所有窗体一样大就可以了,自己试试看吧 Win3.1面板上的Notebook组件即可编辑添加Pages,Click Button事件里每次切换ActivePage即可。 notebook不错,只要改变activepage,可以结合IF判断,刚用不久,觉 得不错 pagecontrol 一步一步来 也不错。。 关于字符数组和字符串的问题 在线求助 关于一个ADO的简单的小问题,Up有分 我这样的学历,在北京或上海能找到工作吗? 作一个这样的数据库程序难吗?有没有类似的,给看看。 配件进销存,有没有需要的 请大家帮帮忙忙,看看这到底是那错了! 用ado连接数据库后,需要在用户界面中改变路据库的路径及名称,请问用什么方式最好? 初学者的一个简单问题 怎样调用浏览文件夹? 如何在程序文件名下添加其他信息 兄弟们此问题有点棘手。高手们快来,解决不了。是不是delphi 的问题?
然后切换页的时候,指定PageControl.ActivePageIndex就可以了。
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等
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然后执行,试试。
好像有这个,可是没有用过!
不过赞成用pageControl
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就可以了
procedure Mybutton1Onclick(Send: TObject);
begin
...
end;Mybutton := TButton.Create(nil);
Mybutton.parent := form1;
Mybutton.OnClick := Mybutton1Onclick;
其它类似的控件采用这种方法搞顶咯!!
if form1.showmodal = mrOK then form2.showmodal
其中 form1上有个按钮,一点就执行 form1.modalresult :=mrOk
然后切换页的时候,指定PageControl.ActivePageIndex就可以了。
多好啊,设计时也方便。
panel2.showmodal; panel2中“上一步”的按钮的代码为:
modalresult:=mrcancel;panel2中“下一步”按钮的onclick事件的代码为:
panel3.showmodal;
.
.
.
所有窗体一样大就可以了,自己试试看吧