我尝试在if
检测到已插入另一个列表框的名称的情况下显示消息。这是我到目前为止所尝试的:
procedure TFrmProjetos.buttonaddusersClick(Sender: TObject);
var
item: string;
i: integer;
begin
for i := 0 to listxallusers.Items.Count - 1 do
begin
item:= listxallusers.Items[i];
if listxallusers.Selected[i] and (listtxusersinproj.Items.IndexOf(item) = -1) then
begin
listtxusersinproj.Items.Add(item);
end
else
Application.MessageBox('User already record.','Warning!',MB_OK+MB_ICONWARNING);
Abort;
end;
end;
答案 0 :(得分:2)
您也可以循环进入列表并仅在记录中添加不存在的用户,并显示未插入记录中的用户。
procedure TForm1.Button1Click(Sender: TObject);
var
lstUserRecord: TStringList;
i: Integer;
begin
lstUserRecord:= TStringList.Create();
try
for i := 0 to listxallusers.Items.Count - 1 do
begin
if listxallusers.Selected[i] then
begin
if (UserInList(listxallusers.Items[i])) then
begin
lstUserRecord.add(listxallusers.Items[i]);
end;
end;
end;
if (lstUserRecord.count>0) then
begin
raise Exception.Create(format('Users already in record: %s',[lstUserRecord.CommaText]));
end;
finally
lstUserRecord.Free;
end;
end;
function TForm1.UserInList(AUser: String): Boolean;
begin
Result:= (listtxusersinproj.Items.IndexOf(AUser) > -1);
if not Result then
begin
listtxusersinproj.Items.Add(AUser);
end
end;
答案 1 :(得分:1)
if
子句包含and
。这意味着如果其中一个条件为假,即listxallusers.Selected[i]
为假,则会发出警告。这就是你想要的吗?
我认为这就是你想要的:
item:= listxallusers.Items[i];
if listxallusers.Selected[i] then
begin
if listtxusersinproj.Items.IndexOf(item) = -1 then
begin
listtxusersinproj.Items.Add(item);
end
else
begin
Application.MessageBox('User already record.','Warning!',MB_OK+MB_ICONWARNING);
Abort;
end;
end;
就个人而言,我认为Abort
是一种非常严厉的反应。我会删除它。