AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Von fremder Form auf ListView zugreifen

Ein Thema von citybreaker · begonnen am 26. Jun 2008 · letzter Beitrag vom 27. Jun 2008
Antwort Antwort
Seite 1 von 3  1 23      
citybreaker
(Gast)

n/a Beiträge
 
#1

Von fremder Form auf ListView zugreifen

  Alt 26. Jun 2008, 21:01
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:
Zugriffsverletzung bei Adresse 004AE566 in Modul 'projekt1.exe'. Lesen von Adresse 00000024
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  Label1.Caption := Form1.ListView1.Items[0].Caption;
  Form1.ListView1.Clear;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Von fremder Form auf ListView zugreifen

  Alt 26. Jun 2008, 21:12
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Von fremder Form auf ListView zugreifen

  Alt 26. Jun 2008, 21:52
Hast du mal geschaut welchen Wert Form1 hat? Die Adresse deutet darauf hinn das du auf ein Object zugreifst welches nil ist
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Von fremder Form auf ListView zugreifen

  Alt 26. Jun 2008, 22:03
Ich denke mal das ist nicht Delphi

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
42
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#5

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:16
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:22
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:23
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!
42
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:27
Form1 oder Form1.ListView1 können nicht nil sein, dafür ist die Fehleradresse viel zu niedrig.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:36
Na, wenn das so ist, dann kanns ja nur noch ein leeres ListView sein.
42
  Mit Zitat antworten Zitat
citybreaker
(Gast)

n/a Beiträge
 
#10

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:38
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. -.-
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz