有以下按钮,
预览,打印,增加,修改,删除,刷新,退出,首笔,上笔,下笔,最后笔等在一个PageControl1 放有两个TabSheet,分别是TabSheet1,TabSheet2,在TabSheet1上有DBGrid1,显示一个表或视图的内容,然后单击增加按钮,就切换到TabSheet2界面上,分别是各个输入的Edit,此时要求除退出按钮都为 灰色。怎样来做呢,谢谢,

解决方案 »

  1.   

    用TAG,设退出为0,增加为1;
    procedure ButtonDisplay(btn:TWinControl;boo:boolean);
    var j:integer;
    begin   
    with btn do
      begin
        for  j:=0 to  Controlcount-1 do
        begin
          if (controls[j] as  TControl).tag<>0 then
          begin
            if (controls[j] as  TControl).tag=1  then
            begin
              if boo then
              (controls[j] as  TControl).Enabled:=true
              else
              (controls[j] as  TControl).Enabled:=false;
            end;
       end;
    end;
      

  2.   

    按“增加”或“修改”后,将
    PageControl1.ActivePageIndex设置1(默认0)进入TabSheet2
    预览,打印,增加,修改,删除,刷新,退出,首笔,上笔,下笔,最后笔等按钮的Enabled设为False;
    增加一“保存”按钮,正常Enabled设为False;进入“增加”或“修改”后Enabled设为true,
    按“保存”按钮后,将
    PageControl1.ActivePageIndex设置0进入TabSheet1
    预览,打印,增加,修改,删除,刷新,退出,首笔,上笔,下笔,最后笔等按钮的Enabled设为True;
      

  3.   

    建议用个actionlist和toolbar,在不同的操作时,设置actAction.enabled:=false/true;
      

  4.   

    1、在看《Delphi进销存程序设计》的代码时在,Simple里有如下代码:
    procedure TfmSimple.SetButton;
    begin
      sbExit.Enabled := (dsMaster.DataSet.State in [dsBrowse]);
      sbCancel.Enabled := (dsMaster.DataSet.State in [dsInsert, dsEdit]);
      sbAppend.Enabled := (dsMaster.DataSet.State in [dsBrowse]);
      if qyMaster.State in [dsInsert, dsEdit] then
      begin
        sbEdit.Enabled := False;
        sbDel.Enabled := False;
      end
      else
      begin
        sbEdit.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                           (not dsMaster.DataSet.Eof) or
                           (not dsMaster.DataSet.Bof));
        sbDel.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                          (not dsMaster.DataSet.Eof) or
                          (not dsMaster.DataSet.Bof));
      end;
      sbSave.Enabled := (dsMaster.DataSet.State in [dsInsert, dsEdit]);
      sbFirst.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                          (not dsMaster.DataSet.Bof));
      sbPrior.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                          (not dsMaster.DataSet.Bof));
      sbNext.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                         (not dsMaster.DataSet.Eof));
      sbLast.Enabled := ((dsMaster.DataSet.State in [dsBrowse]) and
                         (not dsMaster.DataSet.Eof));
      sbRefresh.Enabled := (dsMaster.DataSet.State in [dsBrowse]);  SetMenuItem;
    end;A)、这时dsMaster对应的qyMaster并没有打开,也没有数据,我自己按照这样的代码写下来总是出错,而作者的编译好的文件也不能用,不知道错在哪?