如何从 ListBox 中获取所有选定的项目到 EditBox 中?
How to get ALL selected items from ListBox into an EditBox?
我正在尝试(第一次)使用 ListBox 而不是 ComboBox 到 select 字符串,然后它将填充一个编辑框,该编辑框将用于构建 SQL 字符串.
我将 ListBox 设置为 MultiSelect
,ExtendedSelect
都设置为 True
。但是,当我 运行 下面的代码时,我只从列表框到编辑框得到一个 selected 项目。
过去 48 小时我一直在寻找帮助,但没有任何效果。我错过了什么或做错了什么?
procedure TfrmQuery.lbSelectExit(Sender: TObject);
var
i : integer;
begin
for i := 0 to lbSelect.SelCount -1 do
begin
if lbselect.selected[i] then
begin
edQryScript.Text := 'Select ' + lbSelect.items.Strings[i] + ' from ';
end;
end;
end;
我了解到您 select 必须出现在 ListBox 的 SELECT
子句中的字段,然后组成 SELECT
语句。
您正在浏览所有 selected 项目,但您每次只将一个项目放入 SELECT
中,然后在下一次迭代中,您会丢失之前的信息。
正如@amigoJack 提到的,我猜是 lbSelected.Count
而不是 lbSelected.SelCount
会在遍历 selected 项而不是总数时停止迭代的项目,其中它仍然必须决定是否 selected 或不(如果 lbselect.selected[i] then ...
)。
尝试这样的事情:
procedure TfrmQuery.lbSelectExit(Sender: TObject);
var
i : integer;
begin
for i := 0 to lbSelect.Count -1 do
begin
if lbselect.selected[i] then
begin
if edQryScript.Text <> '' then
edQryScript.Text := edQryScript.Text + ', ';
edQryScript.Text := edQryScript.Text + lbSelect.items.Strings[i];
end;
edQryScript.Text := 'Select ' + edQryScript.Text + ' from ';
end;
end;
这样每次迭代都会将字段添加到之前 edQryScript.Text
中的字段中。当我们已经拥有 select
语句的所有字段时,更容易打扰 Select ... from
。
我正在尝试(第一次)使用 ListBox 而不是 ComboBox 到 select 字符串,然后它将填充一个编辑框,该编辑框将用于构建 SQL 字符串.
我将 ListBox 设置为 MultiSelect
,ExtendedSelect
都设置为 True
。但是,当我 运行 下面的代码时,我只从列表框到编辑框得到一个 selected 项目。
过去 48 小时我一直在寻找帮助,但没有任何效果。我错过了什么或做错了什么?
procedure TfrmQuery.lbSelectExit(Sender: TObject);
var
i : integer;
begin
for i := 0 to lbSelect.SelCount -1 do
begin
if lbselect.selected[i] then
begin
edQryScript.Text := 'Select ' + lbSelect.items.Strings[i] + ' from ';
end;
end;
end;
我了解到您 select 必须出现在 ListBox 的 SELECT
子句中的字段,然后组成 SELECT
语句。
您正在浏览所有 selected 项目,但您每次只将一个项目放入 SELECT
中,然后在下一次迭代中,您会丢失之前的信息。
正如@amigoJack 提到的,我猜是 lbSelected.Count
而不是 lbSelected.SelCount
会在遍历 selected 项而不是总数时停止迭代的项目,其中它仍然必须决定是否 selected 或不(如果 lbselect.selected[i] then ...
)。
尝试这样的事情:
procedure TfrmQuery.lbSelectExit(Sender: TObject);
var
i : integer;
begin
for i := 0 to lbSelect.Count -1 do
begin
if lbselect.selected[i] then
begin
if edQryScript.Text <> '' then
edQryScript.Text := edQryScript.Text + ', ';
edQryScript.Text := edQryScript.Text + lbSelect.items.Strings[i];
end;
edQryScript.Text := 'Select ' + edQryScript.Text + ' from ';
end;
end;
这样每次迭代都会将字段添加到之前 edQryScript.Text
中的字段中。当我们已经拥有 select
语句的所有字段时,更容易打扰 Select ... from
。