当我单击 TListBox 中的任何项目时,索引超出范围 (-1)
Index out of range (-1) when I click on any item in the TListBox
名为 lboMtrlList
的 TListBox
由数据库中的记录填充。当我 运行 应用程序时,数据显示正确。当我单击列表中的任何项目时,显示错误:
Index out of range (-1)
尽管列表不是空的。
这是填充 lboMtrlList
的代码:
procedure TfrmMakeQuote.FormCreate(Sender: TObject);
begin
con := TFDConnection.Create(nil);
query := TFDQuery.Create(con);
con.LoginPrompt := false;
con.Open('DriverID=SQLite;Database=C:\Users\katiee\Documents\Embarcadero\Studio\Projects\ProgramDatabase;');
query.Connection := con;
performQuery;
query.SQL.Text :=
'SELECT [Material Description] FROM MtrlDatabase ORDER BY MtrlID';
try
query.Open;
lboMtrlList.Items.Clear;
while not query.EOF do
begin
lboMtrlList.Items.Add(query.Fields[0].AsString);
query.Next;
end;
finally
query.Close;
end;
//ledtDesc.Height := 81;
//ledtNotes.Height := 51;
end;
我希望能够双击 lboMtrlList
中的一个项目并将其移动到另一个名为 lboSelectedMtrl
的 TListBox
。这是代码:
procedure TfrmMakeQuote.lboMtrlListDblClick(Sender: TObject);
begin
lboMtrlList.Items.Add(lboSelectedMtrl.Items.Strings[lboSelectedMtrl.ItemIndex]);
end;
I want to be able to double click on an item in the lboMtrlList
and move it to another TListBox
called lboSelectedMtrl
.
您的代码与此相反。它正在尝试将项目从 lboSelectedMtrl
移动到 lboMtrlList
。您收到边界错误是因为 lboSelectedMtrl
中没有选择任何项目(lboSelectedMtrl.ItemIndex
是 -1)。
交换 ListBox 变量,并添加一些错误检查:
procedure TfrmMakeQuote.lboMtrlListDblClick(Sender: TObject);
var
Idx: Integer;
begin
Idx := lboMtrlList.ItemIndex;
if Idx <> -1 then
lboSelectedMtrl.Items.Add(lboMtrlList.Items.Strings[Idx]);
end;
名为 lboMtrlList
的 TListBox
由数据库中的记录填充。当我 运行 应用程序时,数据显示正确。当我单击列表中的任何项目时,显示错误:
Index out of range (-1)
尽管列表不是空的。
这是填充 lboMtrlList
的代码:
procedure TfrmMakeQuote.FormCreate(Sender: TObject);
begin
con := TFDConnection.Create(nil);
query := TFDQuery.Create(con);
con.LoginPrompt := false;
con.Open('DriverID=SQLite;Database=C:\Users\katiee\Documents\Embarcadero\Studio\Projects\ProgramDatabase;');
query.Connection := con;
performQuery;
query.SQL.Text :=
'SELECT [Material Description] FROM MtrlDatabase ORDER BY MtrlID';
try
query.Open;
lboMtrlList.Items.Clear;
while not query.EOF do
begin
lboMtrlList.Items.Add(query.Fields[0].AsString);
query.Next;
end;
finally
query.Close;
end;
//ledtDesc.Height := 81;
//ledtNotes.Height := 51;
end;
我希望能够双击 lboMtrlList
中的一个项目并将其移动到另一个名为 lboSelectedMtrl
的 TListBox
。这是代码:
procedure TfrmMakeQuote.lboMtrlListDblClick(Sender: TObject);
begin
lboMtrlList.Items.Add(lboSelectedMtrl.Items.Strings[lboSelectedMtrl.ItemIndex]);
end;
I want to be able to double click on an item in the
lboMtrlList
and move it to anotherTListBox
calledlboSelectedMtrl
.
您的代码与此相反。它正在尝试将项目从 lboSelectedMtrl
移动到 lboMtrlList
。您收到边界错误是因为 lboSelectedMtrl
中没有选择任何项目(lboSelectedMtrl.ItemIndex
是 -1)。
交换 ListBox 变量,并添加一些错误检查:
procedure TfrmMakeQuote.lboMtrlListDblClick(Sender: TObject);
var
Idx: Integer;
begin
Idx := lboMtrlList.ItemIndex;
if Idx <> -1 then
lboSelectedMtrl.Items.Add(lboMtrlList.Items.Strings[Idx]);
end;