Guten Abend,
bin neu hier in der
DP und weiss noch nicht genau, in welches Forum ich meine Anfrage posten soll, da sie irgendwie nirgends richtig reinpasst.
Mein Problem ist folgendes:
Ich möchte bei einem ListView im "Data" Feld verschiedene Werte Speichern, um später beim "CustomDrawItem" darauf zugreifen zu können.
Das ganze funktioniert auch soweit ganz gut, in bestimmten Fällen treten jedoch massenweise "AccessViolations" auf - dies passiert z.B. IMMER dann
wenn ich den Windows Taskmanager aufrufe und die Prozessliste nach CPU- oder Speicherauslastung neu sortiere während das ListView sich noch aufbaut.
Habe das so gelöst:
Delphi-Quellcode:
PListViewData = ^TListViewData;
TListViewData = Record
Eintrag1: boolean;
Eintrag2: string;
end;
var
ListDataEntry: PListViewData;
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
i:integer;
begin
New(ListDataEntry);
ListDataEntry.Eintrag1=true;
for i:=0 to 600 do begin
Listview1.Items.Insert(0);
[..]
Listview1.Items[0].Data:=ListDataEntry;
end;
end;
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with Sender do begin
ListDataEntry:=Item.Data;
if ListDataEntry.Eintrag1=true then Canvas.Font.Style:=[fsbold];
end;
end;