hallo. ich habe momentan ein ganz seltsames problem. so etwas habe ich noch nie erlebt.
ich habe eine form mit einer listview. die items sind mit checkboxen versehen.
parallel gibt es eine stringlist in welcher die selben "werte" zu finden sind.
in einem ListView1MouseUp() ist nun folgende schleife enthalten:
Delphi-Quellcode:
Item := ListView1.GetItemAt(X, Y);
// ...
for i := 0 to WerteListe.Count - 1 do
begin
if ItemGefunden(Item, i) then begin
break;
end;
end;
der funktion ItemGefunden wird "i" übergeben und in der funnktion gibt es dann soetwas wie
{* ... *}Zeile := WerteListe.Strings[i];
in der weteren ausfhrung wird einfach nur geguckt ob dieser wert "Zeile" ein "_" als erstes zeichen hat oder nicht.
wenn ja, wird es entfernt anderenfalls wird es hinzugefügt:
Delphi-Quellcode:
if WerteListe.Strings[i][1] = '_' then
WerteListe.Strings[i] := Copy(WerteListe.Strings[i], 2, Length(WerteListe.Strings[i]))
else
WerteListe.Strings[i] := '_' + WerteListe.Strings[i];
und genau da ist das seltsame problem:
wenn ich alles so belasse wird der code niemals ausgeführt bzw. die liste WerteListe wird niemals geupdatet.
wenn ich aber vor dem if ein
showmessage();
setze wird die if-bedingung abgerabritet und die liste WerteListe ändert sich.
aber ohne showmessage() funktioniert es nicht, warum?
ich kann showmessage() auch in
ListView1MouseUp()
unter die for-schleife packen, dann funktioniert es auch.
aber ohne showmessage() ändert sich nichts.
ich habe schon daran gedacht dass das vielleicht etwas mit dem abarbeten der messages zu tun haben könnte, aber da kenne ich mich nicht aus.