比如一个窗体,编辑一条记录,一定要有两种状态的,一种是浏览状态,一种是编辑状态.在编辑状态上才能修改,然后保存,现在的问题是通过什么来判断当前处于哪种状态.
1.通过按钮的标题,比如按钮开始为"编辑",按下后就变成"保存",假如用户不小心,在编辑时未保存就想关闭窗体,我可以判断一个按钮的标题,如果是"保存",则说明还没有保存,要提示用户先保存再退出.
这种办法可能,但是总觉得不太好,毕竟用按钮的标题来判断有点不太规范.
2.建一个窗体级的变量,是逻辑型,表示是否为编辑状态.当用户按下"编辑"按钮时,这是令这个变量为true,表示处理编辑,还没保存,这种办法也行,可是还在一个问题,就是此时这个窗体级变量与按钮的标题是同时存在的.而且起到相同的作用.如何保证二者是一致的呢?
总觉得窗体级变量有点多余.还有就是:这二者是谁决定谁呢?[窗体级变量与按钮的标题]

解决方案 »

  1.   

    这个有谈论的必要吗,你想怎么写代码都行
    ---------------
    实现一个思路有多种方式,从你家到你单位比如有1里路,走5分钟就到,你也可以先到南非再到单位.我告诉你,要找一条更近的路,你告诉我:这个有谈论的必要吗,想怎么走都行,
    我无言了.
    顺便说一下:如果不想探讨问题,别回垃圾贴,占用csdn的资源.
      

  2.   

    如果就两种状态的话,建议用BOOLEAN型
      

  3.   

    type  TMyFormStatus = (mfsBrowse,mfsEdit,mfsNew)  TForm1=class(TForm)  private
        FMyFormStatus:TMyFormStatus;
        procedure SetMyFormStatus(value:TMyFormStatus );
      public
        property MyFormStatus:TMyFormStatus read FMyFormStatus write SetMyFormStatus;  end;
    ....  procedure TForm1.SetMyFormStatus(Value:TMyFormStatus);
      begin
        case Value of 
          mfsNormal:Button1.caption := 'Edit';
                    DBEdit1.readonly:=True;.......
          mfsEdit:Button1.Caption := 'Save';
                    DBEdit1.readonly:=False;.......
        end;
    .....
      end;
      

  4.   

    ????????
    难道你不能用DataSet.State属性来判断?
    if DataSet.State in [dsinsert,dsedit] then
      DataSet.Post;
    为什么你要用一个按钮呢,用两个按钮,编辑的时候把自己不可用和启用保存,保存之后反过来.
      

  5.   

    难道你不能用DataSet.State属性来判断?
    if DataSet.State in [dsinsert,dsedit] then
      DataSet.Post;
    为什么你要用一个按钮呢,用两个按钮,编辑的时候把自己不可用和启用保存,保存之后反过来.
    -------------
    要让用户知道当前的状态呀,比如编辑时,按钮变成"保存",这时用户就知道要进行保存操作.
    浏览状态时按钮变成"编辑",告诉用户这时点下按钮就会进行编辑状态.
    接着探讨...
      

  6.   

    你到馒头的群里来,申请时说明找finger,群号码16497064