Hallo!
Ich habe mal wieder ein Problem. Ich hab auf meiner Form ein Listview, dem Listview habe ich zwei Columns zugeordnet.
Das Listview befülle ich mit folgender Procedure:
Delphi-Quellcode:
procedure AllUser(Listview: TListView);
var ADODataSet: TADODataSet;
ListItem : TlistItem;
begin
ADODataSet:= TADODataSet.Create(
nil);
ADODataSet.Connection:=DataModule_DBConnect.ADOConnection1;
try
ADODataSet.CommandText:='
SELECT * from tbl_username order by username';
ADODataSet.Open;
rs:=ADODataSet.Recordset;
Listview.Items.BeginUpdate;
while not rs.EOF
do
begin
ListItem:=Listview.Items.Add;
ListItem.Caption:=VarToStr(rs.Fields['
username'].Value);
ListItem.SubItems.Add(VarToStr(rs.Fields['
admin'].Value));
rs.MoveNext;
end;
Listview.Items.EndUpdate;
except
on E:
Exception do
begin
MDialog(E.
Message, mtError, [mbOK]);
end;
end;
ADODataSet.Close;
ADODataSet.Free;
end;
Und nun mein Problem:
Wenn ich beim Listview in einem Bereich klicke wo nix ist, also keine Spalte, bekomme ich eine EAccessViolation! Wieso?
Woran liegt das? Das OnClick-Event behandle ich so:
Delphi-Quellcode:
procedure TForm_UserAnlegen.ListView1Click(Sender: TObject);
var
i: integer;
begin
i:=ListView1.Selected.Index;
if ListView1.Items.Count>=0
then begin
Edit2.Text:=ListView1.Items[i].Caption;
if ListView1.Items[i].SubItems[0] = '1'
then CheckBox2.Checked:=True
else CheckBox2.Checked:=False;
end;
end;
So sieht die Fehlermeldung aus:
http://home.arcor.de/andre.rauls/EAccessViolation.jpg
MfG
schuetze09