现在我在关闭我生成的窗口时又遇到了一个问题:
我在关闭窗口时想先判断窗口是否需要保存来进行处理。我使用的是下面的程序,现在发现这样一个问题:假设打开三个子Form,如果当前Form是不需要保存的,其他两个需要保存,用下面的程序处理时如果在消息确认框中选择取消,那么那个不需保存的Form的Caption会变成所取消关闭的Form的caption,这是为什么?怎么解决?多谢!源程序如下:procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
Var
FormChild: TForm_MainChild;
Reply:word;
I: Integer;
begin
if ( Form_Main.ActiveMDIChild <> nil ) then
begin
for I := 0 to MDIChildCount - 1 do
begin if (MDIChildren[I] as TForm_MainChild).Save_flag1 = 1 then
begin
Form_Main.ActiveMDIChild.Caption := (MDIChildren[I] as TForm_MainChild).Caption;
Reply:=MessageDlg('是否把当前“'+(MDIChildren[I] as TForm_MainChild).Caption+'”的信息保存到BIN文件中再退出?',mtConfirmation,[mbYes,mbNo,mbCancel], 0);
if (Reply=mrYes) then
begin
Form_Main.TB_SavecardClick(Self) ;
action:=CaFree;
end
else if (Reply=mrNo) then
begin
action:=CaFree;
end
else begin
action:=caNone;
exit;
end;
end;
end;
end;
end;
我在关闭窗口时想先判断窗口是否需要保存来进行处理。我使用的是下面的程序,现在发现这样一个问题:假设打开三个子Form,如果当前Form是不需要保存的,其他两个需要保存,用下面的程序处理时如果在消息确认框中选择取消,那么那个不需保存的Form的Caption会变成所取消关闭的Form的caption,这是为什么?怎么解决?多谢!源程序如下:procedure TForm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
Var
FormChild: TForm_MainChild;
Reply:word;
I: Integer;
begin
if ( Form_Main.ActiveMDIChild <> nil ) then
begin
for I := 0 to MDIChildCount - 1 do
begin if (MDIChildren[I] as TForm_MainChild).Save_flag1 = 1 then
begin
Form_Main.ActiveMDIChild.Caption := (MDIChildren[I] as TForm_MainChild).Caption;
Reply:=MessageDlg('是否把当前“'+(MDIChildren[I] as TForm_MainChild).Caption+'”的信息保存到BIN文件中再退出?',mtConfirmation,[mbYes,mbNo,mbCancel], 0);
if (Reply=mrYes) then
begin
Form_Main.TB_SavecardClick(Self) ;
action:=CaFree;
end
else if (Reply=mrNo) then
begin
action:=CaFree;
end
else begin
action:=caNone;
exit;
end;
end;
end;
end;
end;
解决方案 »
- quickreport 打印同一个字段的问题
- 我用Ehlib4.14,出现这样子错误?高手指点一下。
- DocumentProperties得不到正确的纸张设置
- 为什么我要修改记录,但保存后却增加了一条记录呢?[
- QReport如何得到总页数?
- 要使用Hash,找了半天只找到THashedStringList,但是又不能满足要求?难道Delphi没法使用Hash吗?
- swap函数的用法!
- 关于AdoQuery的Filter处理日期类型的问题.
- ServerSocket1.Socket.LocalAddress的问题
- delphi 中怎么对字符串进行操作(比如 将一个字符串放到数组中)
- 紧急菜鸟问题:把QuickRep控件的page的orientation设为横向,为什么预览的时候还是纵向?
- 向高手请教GetExitCodeProcess----急,谢谢!
Form_Main.ActiveMDIChild.Caption := (MDIChildren[I] as TForm_MainChild).Caption;
这句根本没必要!为什么去修改活动子窗体的 Caption 呢?你要在父窗体中同时显示子窗体的 Caption ,应该是
Form_Main.Caption:= MainFormCaption+' - ['Form_Main.ActiveMDIChild.Caption+']';
MainFormCaption 是一常量
而不是去修改活动子窗体的 Caption。
我用你的方法试过了,但是这样会造成Main_Form的caption的叠加,我先将Main_Form的caption设为'',但是还是会同时出现两个子窗口的Caption。这样怎么改呀?
Form_Main.Caption:= MainFormCaption+' - ['+Form_Main.ActiveMDIChild.Caption+']';
我是采用了你的方法,程序如下:
Form_Main.Caption:= 'Program'+' -['+(MDIChildren[I] as TForm_MainChild).Caption+']'; 但是会出现这样一种情况:
假设当前不需保存的活动子窗口为:test.c,这时主窗口的Caption为“Program - [ test.c ],另有两个需要保存的非活动窗口:编辑1和编辑2。这时关闭窗口时主窗口的caption变为了:Program - [ 编辑1 ] - [ test.c ]。多了后面这一部分,我不知怎么消除它。我试过将Form_Main.Caption:= ''加在上句话前,还是不行。这样怎么办?拜托!