AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Nachricht NACH dem Löschen eines ListView.Item erhalten?
Thema durchsuchen
Ansicht
Themen-Optionen

Nachricht NACH dem Löschen eines ListView.Item erhalten?

Ein Thema von PeterPanino · begonnen am 5. Aug 2012 · letzter Beitrag vom 6. Aug 2012
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#21

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 08:48
Ich hatte meinen Beitrag 2 mal geändert, in der letzen Version gibt es ein OnItemDeleted-Event, hier kannst Du über Sender gehen ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 09:09
Ich hatte meinen Beitrag 2 mal geändert, in der letzen Version gibt es ein OnItemDeleted-Event, hier kannst Du über Sender gehen ....
Ja, du hast Recht, vielen Dank!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 10:22
Wie kann ein Anwender Einträge aus einer ListView löschen? Welche Tasten muss man da drücken?
ListView1.Items.Delete(0);
Oder in von ListView abgeleiteten Klassen könnte es andere Möglichkeiten geben, ein Item zu löschen.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 10:39
Wie kann ein Anwender Einträge aus einer ListView löschen? Welche Tasten muss man da drücken?
ListView1.Items.Delete(0);
Oder in von ListView abgeleiteten Klassen könnte es andere Möglichkeiten geben, ein Item zu löschen.
Anwender <> Programmierer!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 12:01
Anwender <> Programmierer!
Korrektur: Oder in von ListView abgeleiteten Klassen könnte es für den Programmierer andere Möglichkeiten geben, dem Anwender die Löschung eines Items zu ermöglichen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 13:34
Korrektur: Oder in von ListView abgeleiteten Klassen könnte es für den Programmierer andere Möglichkeiten geben, dem Anwender die Löschung eines Items zu ermöglichen.
Sicher, aber das ist genau der Punkt:
Der Befehl kommt aus der Anwendung. Dort wird ja explizit das Löschen aufgerufen.

Deshalb wird dafür eigentlich gar kein Event benötigt, da Events nur gebraucht werden, wenn der Programmierer etwas mitbekommen muss, von dem er sonst nicht mitbekommen würde, dass es passiert. Da die Aktion hier selbst per Quelltext gestartet wird, weiß man das aber schon.

Deshalb ist die Logik schon etwas seltsam, aber letztlich schadet ein solches Event auch nicht. Es ist nur rein logisch überflüssig.

Damit ist die Lösung, die du jetzt benutzt, schon ok, wenn auch nicht optimal.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 13:52
Sicher, aber das ist genau der Punkt:
Der Befehl kommt aus der Anwendung. Dort wird ja explizit das Löschen aufgerufen.

Deshalb wird dafür eigentlich gar kein Event benötigt, da Events nur gebraucht werden, wenn der Programmierer etwas mitbekommen muss, von dem er sonst nicht mitbekommen würde, dass es passiert. Da die Aktion hier selbst per Quelltext gestartet wird, weiß man das aber schon.

Deshalb ist die Logik schon etwas seltsam, aber letztlich schadet ein solches Event auch nicht. Es ist nur rein logisch überflüssig.

Damit ist die Lösung, die du jetzt benutzt, schon ok, wenn auch nicht optimal.
Wenn der Anwender etwas will, dann heißt das nicht, dass das Programm das auch tut. Deshalb ist es bei einer "Vorhersage" gut möglich, dass die Anzeige vorschnell eine falsche Änderung anzeigt, diese aber aus irgendeinem Grund nicht durchgeführt werden konnte. Das kann dann zu einem Programm-, Anwendungs- oder Daten-Fehler führen. Auch ist denkbar, dass neben dem Anwender und dem Programm eine dritte Ebene (z.B. das Dateisystem oder eine Datenbank) beteiligt ist, welche wiederum in die Ausführung eingreifen kann. Aus all diesen Gründen ist es im allgemeinenn ratsam, nur mit Tatsachen zu arbeiten. Etwa bei dem Listview-Beispiel abzuwarten, bis Items.Count wirklich um die Zahl der gelöschten Items vermindert wurde. Alles andere ist unsauberer Programmierstil. Aus diesem Grund gibt es bei Datenbanken auch das Transaktions-Prinzip, um Inkonsistenzen zwischen verschiedenen Bereichen (etwa Client und Server) zu verhindern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 14:46
Darum geht es ja gerade gar nicht. Der Punkt ist, dass der Quelltext so aussieht:
Delphi-Quellcode:
procedure A;
begin
  xy.DeleteItem;
end;

procedure OnDeleted;
begin
  ShowMessage('Ha, gelöscht');
end;
Statt ganz einfach und simpel:
Delphi-Quellcode:
procedure DeleteMyItem;
begin
  xy.DeleteItem;
  ShowMessage('Ha, gelöscht');
end;
Aber wenn es dir so lieber ist, ist das ja deine Sache. Genauso die Wahl der Komponente an sich.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 14:55
Der Punkt ist, dass der Quelltext so aussieht:
Bei mir sieht der Quelltext ganz anders aus ...

Und ich verwende ja in meinem Code auch nicht TListView, sondern eine davon abgeleitete Klasse. Dass wir hier bei der Diskussion TListView nennen, ist ja nur eine Abstraktion.

Geändert von PeterPanino ( 6. Aug 2012 um 14:58 Uhr)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#30

AW: Nachricht NACH dem Löschen eines ListView.Item erhalten?

  Alt 6. Aug 2012, 17:08
Aus all diesen Gründen ist es im allgemeinenn ratsam, ... bei dem Listview-Beispiel abzuwarten, bis Items.Count wirklich um die Zahl der gelöschten Items vermindert wurde. Alles andere ist unsauberer Programmierstil. Aus diesem Grund gibt es bei Datenbanken auch das Transaktions-Prinzip, um Inkonsistenzen zwischen verschiedenen Bereichen (etwa Client und Server) zu verhindern.
Du wirst zwar etwas durcheinander, aber letztendlich hältst Du Deine Vorgehensweise für guten Programmierstil. Ich nicht, und zwar aus folgendem Grund:

Der ListView-Container ist eine Abbildung/Darstellung einer Liste. Du führst die Löschoperationen jedoch auf der Liste durch, und nicht auf der ListView selbst. Ich würde also der Liste (also der Datenstruktur) das Event "OnDeleted" bzw. "OnItemCountChanged" spendieren bzw. dort ansetzen.

Grundsätzlich ist deine Vorgehensweise aber ok, denn in deiner Sichtweise wird die ListView verändert und soll immer und überall eine verbindliche und korrekte Aussage über die in ihr gespeicherten Daten geben können (hier: Anzahl), und zwar irgendwann auch, wenn die Löschoperation abgeschlossen ist. Derart (korrekt) mitteilsam ist die LV leider nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 18:26 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