求个 RzPageControl 标签页上面的关闭按钮

屠龙刀 2014-01-02 05:59:16
http://yunpan.cn/QD4GjbgVfnFFS 我想了几个办法。可以关闭。但是关闭5-6次后(打开再关闭.打开再关闭)就会出错误.请高手帮忙.求个完美的关闭按钮代码。(简单高效的)
...全文
703 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxy281596118 2015-04-14
  • 打赏
  • 举报
回复
这种问题也困扰我很久,最后用消息传递可以完美解决。 主窗体 Const WM_XMSG = WM_USER + 100; private procedure DoMsg(var msg :TMsg); message WM_XMSG; // procedure TfrmMain.DoMsg(var msg: TMsg); begin rzpgcntrl1.CloseActiveTab; rzpgcntrl1.SelectNextPage(True); end; 子窗体中按钮的onClick事件 procedure TFrmChild.btn1Click(Sender: TObject); begin PostMessage(frmMain.Handle,WM_XMSG,0,0); end;
屠龙刀 2014-01-15
  • 打赏
  • 举报
回复
出错信息

也许是我的电脑的问题才会出这情况么。开关多次就会出现这问题.

我在主窗口上放个按钮
procedure TForm1.Button3Click(Sender: TObject);
begin
RzPageControl1.CloseActiveTab;
end;


然后我在子窗口中调用他,也还是开关多次就那个错误.但是我开很多窗口。按主窗口这个按钮关闭就不会出错误.选项卡上的窗口调用主窗口的按钮。直接调用不行吗.
屠龙刀 2014-01-15
  • 打赏
  • 举报
回复
我看了我用的是Raize.v5.5 找了下。5.5.1没有d7版啊
屠龙刀 2014-01-15
  • 打赏
  • 举报
回复
我用的是delphi 7.0 +RC5啊。我找个5.5.1试验下
npkaida 2014-01-13
  • 打赏
  • 举报
回复
估计楼主的Raize控件版本太低。我用楼主的代码,没有做任何修改,重新编译一次,问题就解决了。我的版本:delphi 2006,Raize 5.5.1。
bladz 2014-01-13
  • 打赏
  • 举报
回复
还有,楼主最好把出错的信息贴出来,有出错信息就容易判断出错原因。
bladz 2014-01-13
  • 打赏
  • 举报
回复
我是在6楼给的地址上下载的代码,用的是DelphiXE2,反复关闭了几十次,也没出问题。 看到你说会出错,我又试了几十次,还是没有发现问题。 我觉得你还要找一找其他方面的原因。
屠龙刀 2014-01-13
  • 打赏
  • 举报
回复
bladz 谢谢万忙帮我回答。但是问题依然存在。你的方法.关闭打开连续几次还是会出错,请你调试看看. 我用下面的方法也可以关闭。但是问题也一样。 就是来回关闭几次就会出错.
procedure TForm3.Button2Click(Sender: TObject);
begin
Form1.RzPageControl1.CloseActiveTab;
end;
继续求高手帮忙.关闭按钮.打开关闭很多次都不会出错的。
bladz 2014-01-12
  • 打赏
  • 举报
回复
你的方法有问题,这样就行了。
procedure TForm2.Button1Click(Sender: TObject);
var
  b : Boolean;
begin
  form1.RzPageControl1Close(Sender,b);
end;
屠龙刀 2014-01-12
  • 打赏
  • 举报
回复
高分继续求解啊。高手快快显身.......................................................................................................................
屠龙刀 2014-01-12
  • 打赏
  • 举报
回复
procedure TRzPageControl.DestroyActiveTab;
var
  Idx: Integer;
begin
  if FActivePage <> nil then
  begin
    Idx := TabIndex;
    FActivePage.Free;
    if Idx > 0 then
      Dec( Idx );
    TabIndex := Idx;
  end;
end;
这是RzPageControl控件里面关闭按钮的代码.我自己用 FActivePage.Free; 关闭选项卡的时候。开关很多次.就会出错。 ,
屠龙刀 2014-01-12
  • 打赏
  • 举报
回复
这个我知道啊。
procedure TRzPageControl.DestroyActiveTab; var Idx: Integer; begin if FActivePage <> nil then begin Idx := TabIndex; FActivePage.Free; if Idx > 0 then Dec( Idx ); TabIndex := Idx; end; end; 这是控件里面关闭按钮的代码.问题是我现在在页面上做个关闭按钮的。就是搞不定啊。谁行.
屠龙刀 2014-01-11
  • 打赏
  • 举报
回复
继续求RzPageControl 选项页面上的关闭按钮代码 我试验了很多.估计是释放的问题,总是按多了就出错.(问题就出在 form1.RzPageControl1.Pages[Index].Free; 上.这个运行次数多了就出错......求个完美的按钮代码.关闭后的ActivePageIndex定位准确,按多也不出错......这个问题很难吗。还是分少.80分了应该不少了。也许这个问题太难了?没高手? http://yunpan.cn/QD4GjbgVfnFFS 上有原始的,能帮解决点关闭很多次不出错就好。
CZP98168 2014-01-11
  • 打赏
  • 举报
回复
TRzPageControl控件有两个属性:ShowCloseButton、ShowCloseButtonOnActiveTab,设置ShowCloseButton = True就可以在Sheet上显示关闭按钮,设置ShowCloseButtonOnActiveTab = True仅在活动Sheet上显示关闭按钮。点击关闭按钮会触发TRzPageControl的OnClose事件。
屠龙刀 2014-01-10
  • 打赏
  • 举报
回复
我那存的一个例子.你下了测试下。我怎么用的关几次就失败。开了再关。 5-6次就错误了。 不知道什么原因。你的语句我加进去也还是出错误.
DelisPhi 2014-01-10
  • 打赏
  • 举报
回复
出的什么错误?总感觉先Free有点不靠谱啊,建议先获取你现在的页面和要跳转到的页面,跳过去,再Free。另外按我的直觉,PageCount=0还Free怪怪的。。我小改一下试试。
procedure TForm15.RzToolButton6Click(Sender: TObject);
var
  index: integer;
begin
  Index := form1.RzPageControl1.ActivePageIndex;
  if form1.RzPageControl1.PageCount > 1 then
  begin
    if index < form1.RzPageControl1.PageCount - 1 then
    begin
      form1.RzPageControl1.ActivePage := form1.RzPageControl1.Pages[index+1];
      form1.RzPageControl1.Pages[Index].Free;
    end
    else
    begin
      form1.RzPageControl1.ActivePage := form1.RzPageControl1.Pages[index - 1];
      form1.RzPageControl1.Pages[Index].Free;
    end;
  end
  else
    if Assigned(form1.RzPageControl1.Pages[0]) then
      form1.RzPageControl1.Pages[0].Free;
end;
最后小小吐槽一下没有格式化的代码真的很难看清楚。。
屠龙刀 2014-01-09
  • 打赏
  • 举报
回复
怎么没个人帮啊。持续加分中............................................................................................
屠龙刀 2014-01-04
  • 打赏
  • 举报
回复
没嵌套啊,都是单独的页.就是上面搞个按钮.要他关闭,,不出错误就行.而且不要影响别的页,关闭了本页后.焦点窗口移动到前一个窗口.要是只有1个窗口。就直接关闭窗口. procedure TForm15.RzToolButton6Click(Sender: TObject); var index:integer; begin Index :=form1.RzPageControl1.ActivePageIndex; if form1.rzpagecontrol1.PageCount >0 then begin if index<form1.rzpagecontrol1.PageCount-1 then begin form1.RzPageControl1.Pages[Index].Free; form1.RzPageControl1.ActivePage :=form1.RzPageControl1.Pages[index]; end else begin form1.RzPageControl1.Pages[Index].Free; form1.RzPageControl1.ActivePage :=form1.RzPageControl1.Pages[index-1]; end; end else form1.RzPageControl1.Pages[Index].Free; end; 我用这么关.开关几次就出错误了。
奔雷手 2014-01-03
  • 打赏
  • 举报
回复
这个关闭按钮仅仅关闭SHEET页,你是不是有其他作用哦,比如SHEET里嵌套了FORM之类的。 仅仅是关闭没有问题的。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧