Einzelnen Beitrag anzeigen

schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#1

TListview - EAccessViolation

  Alt 25. Nov 2004, 10:53
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
  Mit Zitat antworten Zitat