![]() |
kurze Frage zu Listview und Programmabsturz
Hallo, ich verwende in meinem Programm eine Listview. Immer wenn ein Eintrag angeklickt wird, wird ein Bild von einem Server geladen und in TImage angezeigt. Dabei stehe ich aber leider vor einem Problem:
Wenn ich die Procedure ListviewClick aufrufe, funktioniert zwar alles Prima, aber sobald man auf eine Leere Spalte klickt, stürzt das Programm mit einem Memory Access Fehler ab. Wenn man das gleiche mit der Procedure OnSelectItem macht, passiert der Fehler zwar nicht wenn man in eine leere Spalte klickt, aber er kommt sobald man das 2te mal einen Eintrag auswählen will. D.h. Wenn man das erste mal Klickt funktioniert alles Super. Klickt man das 2te mal etwas an, Crasht das Programm. Ich poste einfach mal den Codefetzen, vielleicht weiß ja irgentwer woran es liegen könnte.
Delphi-Quellcode:
Maplist = Listview
procedure TForm3.MaplistSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean); var Stream : TFileStream; begin Maplist.Enabled := false; // soll verhindern das geklickt wird während ein Download läuft. ( Programmabsturz ) Stream := TFileStream.Create(Maplist.Selected.Caption+'.png', fmCreate); // Cache erstellen ( Windows Temp führt bei Vista zu Problemen ka wieso ) Downloadstatus.Get('http://***/'+Maplist.Selected.Caption+'.png', Stream); // Dateidownload Stream.free; Minimap.Picture.LoadFromFile(Maplist.Selected.Caption+'.png'); // Cache laden deletefile(Maplist.Selected.Caption+'.png'); // Nach dem Laden löschen Maplist.Enabled := true; // Eintrag wieder freigeben end; Minimap = TImage Downloadstatus = IdHttp Hoffe mir kann jemand helfen :mrgreen: |
Re: kurze Frage zu Listview und Programmabsturz
Das ist ein Bug der ListView bei den ältern Delphiversionen. Schreib einfach in die erste Zeile deines OnClick Ereignises:
Delphi-Quellcode:
Dann dürfte das Problem umgangen sein.
if ListView1.Selected = nil then exit;
|
Re: kurze Frage zu Listview und Programmabsturz
Danke, das hat das Problem gelöst. Irgentwie habe ich aber das Gefühl das die Ladezeiten jetzt zu lang sind.
Bei einem Listview wechsel vergehen zwischen Bild download und Anzeigen teilweise fast 3 Sekunden ( Habe DSL 16000 und keines der PNG Bilder ist größer als 40 KB ) Woran kann das liegen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:14 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