procedure TForm1.FormCreate(Sender: TObject);const
Names: array[0..5, 0..1] of string = (
('Rubble', 'Barney'),
('Michael', 'Johnson'),
('Bunny', 'Bugs'),
('Silver', 'HiHo'),
('Simpson', 'Bart'),
('Squirrel', 'Rocky')
);var
I: Integer;
NewColumn: TListColumn;
ListItem: TListItem;
begin
with ListView1 do
begin
ViewStyle := vsReport;
NewColumn := Columns.Add;
NewColumn.Caption := 'Last';
NewColumn := Columns.Add;
NewColumn.Caption := 'First'; for I := Low(Names) to High(Names) do
begin
ListItem := Items.Add;
ListItem.Caption := Names[I][0];
ListItem.SubItems.Add(Names[I][1]);
end;
end;
end;procedure TForm1.ListView1Click(Sender: TObject);
begin
if listview1.Selected.Focused=true then
edit1.Text :=listview1.Items[listview1.Selected.Index].Caption
else
Exit;
end;问题:运行以上程序时,点击listview的空白行处就会出错。谁知道是怎么回事啊??请帮忙解决,一定给分,谢谢了。
Names: array[0..5, 0..1] of string = (
('Rubble', 'Barney'),
('Michael', 'Johnson'),
('Bunny', 'Bugs'),
('Silver', 'HiHo'),
('Simpson', 'Bart'),
('Squirrel', 'Rocky')
);var
I: Integer;
NewColumn: TListColumn;
ListItem: TListItem;
begin
with ListView1 do
begin
ViewStyle := vsReport;
NewColumn := Columns.Add;
NewColumn.Caption := 'Last';
NewColumn := Columns.Add;
NewColumn.Caption := 'First'; for I := Low(Names) to High(Names) do
begin
ListItem := Items.Add;
ListItem.Caption := Names[I][0];
ListItem.SubItems.Add(Names[I][1]);
end;
end;
end;procedure TForm1.ListView1Click(Sender: TObject);
begin
if listview1.Selected.Focused=true then
edit1.Text :=listview1.Items[listview1.Selected.Index].Caption
else
Exit;
end;问题:运行以上程序时,点击listview的空白行处就会出错。谁知道是怎么回事啊??请帮忙解决,一定给分,谢谢了。
这样
if (listview1.selected <> nil) and (listview1.Selected.Focused=true) then
edit1.Text :=listview1.Items[listview1.Selected.Index].Caption
else
Exit;建议放在
ListView1的OnChange里写procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if ListView1.Selected <> nil then
edit1.Text :=listview1.Items[listview1.Selected.Index].Caption
end;
if ListView1.Selected = nil then Exit;
if listview1.ItemIndex>=0 then
begin
.......
end;
就可以了。