Einzelnen Beitrag anzeigen

dp_user

Registriert seit: 3. Jul 2007
1 Beiträge
 
#1

ListView+Pointer lässt Anwendung manchmal crashen

  Alt 3. Jul 2007, 21:45
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;
  Mit Zitat antworten Zitat