![]() |
Von fremder Form auf ListView zugreifen
Hallo!
Wieder einmal macht es Delphi mir nicht leicht. Wenn ich von einer fremden Form ein ListView leeren will passiert einfach nichts. Möchte ich den Text vom ersten Item in einem Label anzeigen bekomme ich folgende Fehlermeldung: Zitat:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin Label1.Caption := Form1.ListView1.Items[0].Caption; Form1.ListView1.Clear; end; |
Re: Von fremder Form auf ListView zugreifen
Hallo Alexander,
möglich ist es, aber die feine Art ist es nicht, wenn du auf diese Art auf UI-Controls zugreifst. Bei deinem Beispielcode musst du nur darauf achten, dass die andere Form (Form1) auch bereits instanziert wurde. Vermutlich hast du sie aus der Liste der automatisch erstellten Formulare heraus genommen. Grüße vom marabu |
Re: Von fremder Form auf ListView zugreifen
Hast du mal geschaut welchen Wert Form1 hat? Die Adresse deutet darauf hinn das du auf ein Object zugreifst welches nil ist
|
Re: Von fremder Form auf ListView zugreifen
Ich denke mal das ist nicht Delphi :mrgreen:
Entweder es trifft das zu was meine Vorredner gesagt habe, oder du hast vielleicht auch den Button zwei mal geklickt. Nach dem Zugriff löscht du ja das ListView. Danach ist Items[0] nil. Gruß oki |
Re: Von fremder Form auf ListView zugreifen
Habe definitiv nur einmal auf den Button geklickt. Sobald ich die ganze aktion
in der eigenen Form starte funktioniert es. Wobei kann es passieren, dass mein Object nil wird bzw. womit verhinder ich es? |
Re: Von fremder Form auf ListView zugreifen
Frag erst einmal ab, ob überhaupt Items vorhanden sind.
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin if Form1.ListView1.Items.Count > 0 then begin Label1.Caption := Form1.ListView1.Items[0].Caption; Form1.ListView1.Clear; end; end; |
Re: Von fremder Form auf ListView zugreifen
Hi,
die Frage ist, was nil ist. Es kann sowohl die Form wie auch das Item sein. Die Form ist nil, wenn du wie schon erwähnt das Formular nicht automatisch erstellt wird. Da deine Form aber Form1 heißt, nehme ich mal an, dass das dein Hauptformular ist. Starte einfach mal das Programm aus der IDE und setze vorher einen Breakpoint in die erste Zeile deiner Ereignisbehandlung für Button Klick. Drücke auf den Button und die IDE geht in den Vordergrund. Dann kannst du mit der Maus über Form1 und den Eintrag Caption gehen. Schau mal, was der Debugger dazu sagt. Gruß Oki PS. Mann, wird zeit, dass wir ein Smiley für roten Kasten bekommen! |
Re: Von fremder Form auf ListView zugreifen
Form1 oder Form1.ListView1 können nicht nil sein, dafür ist die Fehleradresse viel zu niedrig.
|
Re: Von fremder Form auf ListView zugreifen
Na, wenn das so ist, dann kanns ja nur noch ein leeres ListView sein.
|
Re: Von fremder Form auf ListView zugreifen
Der Fehler kommt tatsächlich nur, wenn ich ein 2 mal auf den Button klicke. (grad noch einmal ausprobiert)
Das liegt ja dann daran das ich die ListView geleert habe. Allerdings stehen weiterhin alle einträge in der ListView. Wird die Komponente nicht aktualisiert oder was ist da bei der Anzeige los? Edit Vielleicht auch nicht leer, wenn ich nach dem leeren auf eins der Items da drinne klicke kann ich mir die Caption und ItemIndex anzeigen lassen. Versteh das grad alles nicht. -.- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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