![]() |
Delphi-Version: 5
ListView | MakeVisible | selected und Obejcts Probleme
Hi Ihr,
ich habe folgenden Code im OnSelectItem
Delphi-Quellcode:
wenn ich normal mit der Mouse oder den Coursern in der Liste navigiere/markiere ist alles ok und bekommen den user-Namen aus dem Object!
if MyList.Selected <> nil then
begin t1 := (MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3] as TUserL).name; end; ABER wenn ich einen Eintrag lösche und wieder zum Eintrag 0 springe
Delphi-Quellcode:
Dann erhalte ich an der Stelle
MyList.HideSelection := False;
MyList.Items[0].MakeVisible(true); MyList.items.item[0].selected := true;
Delphi-Quellcode:
eine Zugriffsverletzung
t1 := (MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3] as TUserL).name;
Jemand eine Idee warum? Edit: Normaler Eintrag an der zeile in Form von
Delphi-Quellcode:
Ist dagegen ohne Probleme löst aber mein Problem nicht da ich Zugriff auf das Object brauche
t2 := MyList.Items.Item[MyList.Selected.Index].SubItems.Strings[1];
|
AW: ListView | MakeVisible | selected und Obejcts Probleme
abend, zeigst du mir mal bitte die stelle an der du das element löschst?
mfg dnub |
AW: ListView | MakeVisible | selected und Obejcts Probleme
Hi und nabend!
in der Lösch-Abteilung steht ganz simpel:
Delphi-Quellcode:
habe es schon MIT und OHNE
MyList.Selected.Delete;
MyList.HideSelection := False; MyList.Items[0].MakeVisible(true); MyList.items.item[0].selected := true; diesem zusätzlichen Eintrag versucht
Delphi-Quellcode:
zusätzlich versucht...
MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3].Free;
MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3] := nil; |
AW: ListView | MakeVisible | selected und Obejcts Probleme
Zitat:
Dort sind soviele Zugriffe verschachtelt ... da ja doch jeder dran Schuld sein. Und ohne den Schuldigen zu kennen, kann man nach keiner Lösung suchen.
Delphi-Quellcode:
Wo knallt es hier?
sel := MyList.Selected;
idx := sel.Index; itm := MyList.Items.Item[idx]; sub := itm.SubItems; obj := sub.Objects[3]; usr := obj as TUserL; t1 := usr.name; oder
Delphi-Quellcode:
Haltepunkt ins Except und dann debuggen.
try
t1 := (MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3] as TUserL).name; except t1 := (MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3] as TUserL).name; end; |
AW: ListView | MakeVisible | selected und Obejcts Probleme
Eins vorweg, ich bin Anfänger also schimpf nicht mit mir wenn ich komische Fragen stelle, ich versuche nur zu helfen ^^
Du löschst hier diesen Eintrag
Delphi-Quellcode:
aus deinem TListview oder?
MyList.Items.Item[MyList.Selected.Index].SubItems.Objects[3]
Und danach versuchst du wieder auf das gelöschte Element zuzugreifen? Das muss ja dann auch eine AV geben. Korrigiere mich, wenn ich das falsch interpretiere. mfg dnub |
AW: ListView | MakeVisible | selected und Obejcts Probleme
Zitat:
Delphi-Quellcode:
t1 := usr.name;
------ EDIT WICHTIG das komische ist ja das es normal funktioniert nur nicht wenn ich einen Eintrag lösche und dann
Delphi-Quellcode:
an 0 Springe --- lasse ich das weg mit dem Springen, kann ich normal weiter tun und einträge markieren!
MyList.HideSelection := False;
MyList.Items[0].MakeVisible(true); MyList.items.item[0].selected := true; ------------- EDIT 2: lösche ich
Delphi-Quellcode:
ist alles gut und keine Zugriffsverletzung! Komisch hatte damit noch nie ärger hmmm
MyList.HideSelection := False;
@delphinub23 nein nehme keine zugriff auf das gelöschte element ist ja weg :) "MyList.Selected.Index" sagt ja welchen eintrag ich nehmen soll |
AW: ListView | MakeVisible | selected und Obejcts Probleme
Es gibt ja auch keinen Zugriffsfehler auf das ListItem, sondern auf das angehängte Objekt
Delphi-Quellcode:
Somit solltest du vor dem Zugriff auf dieses Objekt prüfen, ob dieses auch existiert.
sub.Objects[ 3 ]
Delphi-Quellcode:
Eine weitere Möglichkeit wäre auch wenn SubItems.OwnsObjects True ist und das gelöschte Item auch dieses Objekt in den SubItems beinhaltet.
If Assigned( obj ) then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz