关于Delphi的PageControl使用问题!
在Delphi写的数据库管理系统中,想把主界面做成像浏览器一样的多页面模式,即在主窗体上放一个PageControl设为P1,每打开一个窗体就在就在P1上动态新添一个页,...
在Delphi写的数据库管理系统中,想把主界面做成像浏览器一样的多页面模式,即在主窗体上放一个PageControl设为P1,每打开一个窗体就在就在P1上动态新添一个页,然后把打开的窗体置于页中!现在的问题是数据刷新的问题,假设说P1已打开了两个页,对应的窗体为f1和f2,窗体中有数据控件为AdoQ1和AdoQ2,AdoQ1和AdoQ2数据源均来自同一个表,两个窗体中均有一个button为b1和b2可以点击刷新当前窗体数据,怎样在f2更新了数据后切换到f1的时候自动调用f1的b1事件来刷新f1的数据?
因为TabSheet是动态创建的,所以不是说每个sheet一定对应某个窗体的,比如说sheet1现在可能是对应“职员资料”窗体,关了重新打开的时候可能就是“客户资料”窗体了!不过每打开一窗体,PageControl的sheet标题就是该窗体的caption标题! 展开
因为TabSheet是动态创建的,所以不是说每个sheet一定对应某个窗体的,比如说sheet1现在可能是对应“职员资料”窗体,关了重新打开的时候可能就是“客户资料”窗体了!不过每打开一窗体,PageControl的sheet标题就是该窗体的caption标题! 展开
展开全部
在TabSheet1上放置button2,TabSheet2上放置button1。one和two都是全局变量!然后在TabSheet SHOW时间中就可以实现了!
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
if one then
begin
ShowMessage('1');//换成你刷新数据的动作
one:=false;
end;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
if two then
begin
ShowMessage('2');//换成你刷新数据的动作
two:=false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
one := true;
two := false;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
one := false;
two := false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
two := true;
one := false;
end;
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
if one then
begin
ShowMessage('1');//换成你刷新数据的动作
one:=false;
end;
end;
procedure TForm1.TabSheet2Show(Sender: TObject);
begin
if two then
begin
ShowMessage('2');//换成你刷新数据的动作
two:=false;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
one := true;
two := false;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
one := false;
two := false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
two := true;
one := false;
end;
更多追问追答
追问
可能这个P1会产生很多个TabSheet,不固定的,不过会限制在一定的数量内,比如最多只能同时打开8个。。。
追答
写一个过程procedure,这个过程用来实现分别对特定窗体的数据刷新,过程里要用根据标签页的标题做个判断,例如if caption ='客户资料' then ,然后执行相应的操作。
在TabSheet 创建的时候,这个TabSheet的名字应该可以设定的吧。当这个页面点击数据提交时,就可以赋值在另外的页面TabSheet的SHow事件 赋过程的吧,
展开全部
调用f1所在的Sheet的Show事件,在Show事件里面调用Button事件
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
//在这里调用刷新事件
end;
procedure TForm1.TabSheet1Show(Sender: TObject);
begin
//在这里调用刷新事件
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在 P1 的 OnEnter 事件里面写代码.
begin
b1.click;
end;
begin
b1.click;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在button的事件里面加入如下过程
for循环遍历每个tabsheet,判断是不是要进行更新的页面,如果是,则调用当前页面的按钮过 程
for循环遍历每个tabsheet,判断是不是要进行更新的页面,如果是,则调用当前页面的按钮过 程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询