e
A    B    f
          g
C    D    h
(A,B)个当中任意一个有值则后面e或者f不能为空;
(C,D)个当中任意一个有值则后面e或者f不能为空;
(A,B,C,D)当中要是(A,C)或者(B,D)……有值则e或者f不能为空且e或者f不能为空。按照以上用delphi写出代码? 

解决方案 »

  1.   

    倒过来解,如果E与F都为空,则A或B不能为空if ((e=nil) and (f=nil)) then
    begin
      if ((a=nil) and (b=nil)) then
         begin  
              //不能都为空
          end;
    end;是不是这意思
      

  2.   


    我用的是这个方法,但是就是少了一种情况:(A,B,C,D)当中要是(A,C)或者(B,D)……有值则e或者f不能为空且e或者f不能为空。if not((((a <>'') or (b <> '')) and ((g<>'') or (h<>'')))or
          (((c <> '') or (d <> '')) and ((e<>'') or (f<>'')))) then
      

  3.   

    这个不是表来的,都是lable控件。不能为空:就该地方要有值。
      

  4.   

    分开写,每个条件写一个if语句,不要写在一起,乱死了(A,B)个当中任意一个有值则后面e或者f不能为空; 
    if (A<>'') or (B<>'') then
    begin
      if f='' then
        ShowMessage('f不能为空');
      else 
        ShowMessage('ok');
    end;以下类似,自己写吧(C,D)个当中任意一个有值则后面e或者f不能为空; 
    (A,B,C,D)当中要是(A,C)或者(B,D)……有值则e或者f不能为空且e或者f不能为空。按照以上用delphi写出代码? 
      

  5.   

    试试
    if ((a<>'') or (b<>'') or (c<>'') or (d<>'')) xor ((e<>'') or (f<>'')) then
      

  6.   

    可以变通一下(A,B)个当中任意一个有值
    if trim(a+b)<>''(C,D)个当中任意一个有值
    if trim(c+d)<>''(A,B,C,D)当中要是(A,C)或者(B,D)……有值
    if (trim(a+c)<>'') or (trim(b+d)<>'') 则e或者f不能为空且e或者f不能为空不知道你表达的意思?
      

  7.   

    刚刚我说错了,那几个控件都是edit则e或者f不能为空且e或者f不能为空不知道你表达的意思?这个也就是当A和C或者B和D有值时那么e或者f且g或者h不能为空。 
      

  8.   


                 if not ((((a <>'') or ( b<> '')) and ((g<>'') or (h<>''))) or
                        (((c <> '') or (d <> '')) and ((e<>'') or (f<>''))))then
                  messagedlg('show message!', mtinformation, [mbok], 0)
      这是我写的那段代码。
      按照要求基本功能已经实现了,但就是少了一种情况。
      当A和C或者B和D……有值时那么e或者f且g或者h不能为空。
      

  9.   

    if ((trim(a+b) <>'') and (trim(g+h) <>'')) or  ((trim(c+d) <>'') and (trim(e+f) <>''))  or ((trim(a+c) <>'') or (trim(b+d) <>'')and(trim(e+f) <>'')and(trim(g+h) <>'')) then
      

  10.   


    if ((a <>'') or (b <>'') or (c <>'') or (d <>'')) 
       xor 
       ((e <>'') or (f <>'') or (g<>'') or (h<>'')) then
      

  11.   

    都不可以哦。
    不是少了,就是多了。     if State <> 'B' then
           begin
             a:=ClientDataSet_ECM03010.FieldByName('PLATE_GOLD_PLY_MIN').asstring;//max
             b:=ClientDataSet_ECM03010.FieldByName('PLATE_GOLD_PLY_MAX').asstring;//min
             g:=ClientDataSet_ECM03010.FieldByName('PLATE_GOLD_AREA').asstring;//
             h:=ClientDataSet_ECM03010.FieldByName('PLATE_NI_AREA').asstring;//
             c:=ClientDataSet_ECM03010.FieldByName('HJ_GOLD_PLY_MAX').asstring; //min
             d:=ClientDataSet_ECM03010.FieldByName('HJ_GOLD_PLY_MIN').asstring;//max
             e:=ClientDataSet_ECM03010.FieldByName('HJ_NI_AREA').asstring; //
             f:=ClientDataSet_ECM03010.FieldByName('HJ_GOLD_AREA').asstring; //
             begin
                with clientdataset_ecm03015 do
                if ((pos( 'A',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'B',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'D',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'F',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'G',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'H',fieldbyname('productid').asstring ) > 0) or
                   (pos( 'I',fieldbyname('productid').asstring ) > 0))and
                   ((a<>'')or (b<>'')or(c<>'')or  (d<>''))then
                 begin
                 ToolButton7.Enabled:=false;
                 if not ((((a <>'') or ( b<> '')) and ((g<>'') or (h<>''))) or
                        (((c <> '') or (d <> '')) and ((e<>'') or (f<>''))))then
                  messagedlg('show message!', mtinformation, [mbok], 0)
                 else if((((a <>'') or ( b<> '')) and ((g<>'') or (h<>''))) or
                        (((c <> '') or (d <> '')) and ((e<>'') or (f<>'')))) then
                 ToolButton7.Enabled:=true
                 end
               end
             end;
    这是偶写的那段代码,我把它贴出来。
    你们帮我想想办法,我都快崩溃了。  
      

  12.   


    不如把条件分开,在每个edit的exit中做判断了~~
      

  13.   

     我已经找到了解决的方法:
        if(A+B<>)AND(e+f='')then
     就ok!