Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: ListView+Pointer lässt Anwendung manchmal crashen

  Alt 4. Jul 2007, 07:40
Herzlich willkommen in der Delphi-PRAXiS, dp_user.

Ein Problem mit dem von dir gezeigten Code ist, dass du zwar 601 Items erzeugst, aber nur das erste Item hat einen gültigen Data-Pointer.

Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  ListDataEntry: PListViewData;
begin
  with Sender do
  begin
    ListDataEntry := Item.Data;
    if Assigned(ListDataEntry) and ListDataEntry.Eintrag1
      then Canvas.Font.Style := [fsbold]
      else { ... };
    // ...
  end;
end;
Außerdem ist es besser, wenn du den typisierten Zeiger ListDataEntry lokal deklarierst. Und die Abfrage einer Variablen des Typs Boolean auf True ist bestenfalls ungeschickt - die Variable selbst ist schon ein perfekter "logischer Ausdruck".

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat