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写出代码?
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写出代码?
解决方案 »
- 用什么方法可以取得一个控件在屏幕上的位置?
- 各位Delphi的前辈和后起之秀进!尤其杭州的朋友!
- 问题,不知道怎么回事?
- 怎样进行rgb亮度调节??
- 求一个详细一点的企业MIS系统或者ERP系统的需求分析文档。
- tclientdataset出错 type mismatch string widestring
- 奇怪的连接数据库问题?
- oracle中數據庫的blob字段保存的exe文件,在下載時出錯. 就時這一條語句有問題;BS.SaveToFile(sFileName);
- 公司化之路
- delphi疯了,还是偶疯了,这问题没有再简单的了,可为什么就通不过,1+1为什么就不等于2,起了怪了,有没有天理了?//牛虻
- update多个字段
- 哪里有关于“编写游戏修改器”的资料?
begin
if ((a=nil) and (b=nil)) then
begin
//不能都为空
end;
end;是不是这意思
我用的是这个方法,但是就是少了一种情况:(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
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写出代码?
if ((a<>'') or (b<>'') or (c<>'') or (d<>'')) xor ((e<>'') or (f<>'')) then
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不能为空不知道你表达的意思?
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不能为空。
if ((a <>'') or (b <>'') or (c <>'') or (d <>''))
xor
((e <>'') or (f <>'') or (g<>'') or (h<>'')) then
不是少了,就是多了。 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;
这是偶写的那段代码,我把它贴出来。
你们帮我想想办法,我都快崩溃了。
不如把条件分开,在每个edit的exit中做判断了~~
if(A+B<>)AND(e+f='')then
就ok!