case只能使用Ordinal类型,如整数,枚举等,字符串在Delphi中不行。
只能这样:
if  bitton.caption='增加' then
begin
end
else if bitton.caption='修改' then
begin
end

解决方案 »

  1.   

    我只见过case 数值的没有见字符用case的。
      

  2.   

    是的,case语句中不能使用字符串的。
      

  3.   

    如果你一定要用Case可以这样:case Integer(bitton.caption='增加') of
      1: //增加
      0: //修改
    end;—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  4.   

    但是这样写的话,好像如果‘修改是没有用的?!’
    源码!
    var
      f1,f2:string;
    begin
      query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('select * from data where d_logname=:t1 and d_back=:t2');
      query_data.ParamByName('t1').AsString:=login_unit.logname;
      query_data.ParamByName('t2').AsString:=listbox1.Items.Strings[listbox1.itemindex];
      query_data.Open;
      f1:=query_data.fieldbyname('d_title').AsString;
      f2:=query_data.fieldbyname('d_memo').AsString;
      e_title.Text:=f1;
      memo1.Text:=f2;
      bitbtn10.Caption:='修改';
      bitbtn11.Enabled:=true;
    {  query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('select * from data where d_date=:t1');
      query_data.ParamByName('t1').AsDate:= now();
      query_data.Open;}
    end;procedure TFrm_dhcxxt.BitBtn12Click(Sender: TObject);
    begin
      frm_add.ShowModal;
    end;procedure TFrm_dhcxxt.DBGrid1DblClick(Sender: TObject);
    begin
    //  if query1.Close then exit;
      Frm_query.ShowModal;
    end;procedure TFrm_dhcxxt.BitBtn10Click(Sender: TObject);
    var
      j1:string;
    begin
    if  bitbtn10.Caption='写好了' then  //增加一条记录!
      begin
      query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('insert into data(d_title,d_date,d_memo,d_back,d_logname) values(:t1,:t2,:t3,:t4,:t5)');
      query_data.ParamByName('t1').AsString:=trim(e_title.Text);
      query_data.ParamByName('t2').AsDatetime:= datetimepicker1.Date;
      query_data.ParamByName('t3').AsString:= trim(memo1.Text);
      query_data.ParamByName('t4').AsString:= datetostr(datetimepicker1.Date)+'  '+trim(e_title.Text);
      query_data.ParamByName('t5').AsString:=login_unit.logname;
      query_data.execsql;
      j1:=datetostr(datetimepicker1.Date)+'  '+trim(e_title.Text);
      e_title.Text:='';
      memo1.Text:='';
      listbox1.Clear;      //刷新listbox的内容!
      query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('select * from data where d_logname=:t1');
      query_data.ParamByName('t1').AsString:=login_unit.logname;
      query_data.Open;
      if query_data.RecordCount>0 then
      begin
        while not query_data.Eof do
        begin
          listbox1.Items.Add(query_data.fieldbyname('d_back').asstring);
          query_data.Next;
        end;
      end;
      end
    else if  bitbtn10.Caption='修改' then//修改一条记录!
      begin
      query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('update data set d_title=:t1,d_date=:t2,d_memo=:t3,d_back=:t4,d_logname=:t5 where d_logname=:t6 and d_title=:t7');
      query_data.ParamByName('t1').AsString:=trim(e_title.Text);
      query_data.ParamByName('t2').AsDatetime:= datetimepicker1.Date;
      query_data.ParamByName('t3').AsString:= trim(memo1.Text);
      query_data.ParamByName('t4').AsString:= datetostr(datetimepicker1.Date)+'  '+trim(e_title.Text);
      query_data.ParamByName('t5').AsString:=login_unit.logname;
        query_data.ParamByName('t6').AsString:=login_unit.logname;
          query_data.ParamByName('t7').AsString:=j2;
          listbox1.Clear;      //刷新listbox的内容!
      query_data.Close;
      query_data.SQL.Clear;
      query_data.SQL.Add('select * from data where d_logname=:t1');
      query_data.ParamByName('t1').AsString:=login_unit.logname;
      query_data.Open;
      if query_data.RecordCount>0 then
      begin
        while not query_data.Eof do
        begin
          listbox1.Items.Add(query_data.fieldbyname('d_back').asstring);
          query_data.Next;
        end;
      end;
      end;
    end;
      

  5.   

    定义一个整型tmp_int
    if bitbtn.caption:='增加' then tmp_int:=1;
    .......
    之后就可以用
    Case tmp_int of 
    1:
    begin
    end
    else
    begin
    end;
    end;
      

  6.   

    var 
       mycase:integer;
    if bitbtn1.caption:='增加' then mycase:=0;
    .......
    case mycase of
    1:
    begin
    ........
    end;
    else
    begin
    end;
    end;
      

  7.   

    用Case的完整解决方案:定义一个MyCaptionList: TStringList ,里面按照你定义的顺序放入字符串:增加、修改……case MyCaptionList.IndexOf(bitton.caption) of 
      0: //增加
      1: //修改
      ……
      -1: //没有这个按钮
    end;
     
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  8.   

    这里好象完全可以不用 case 的, if 语句足够了啊?