Einzelnen Beitrag anzeigen

Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Problem mit TListview-OnDrawItem

  Alt 28. Dez 2003, 10:10
Hi,
ich versuche gerade einzelne Items der Listview zu im Stil zu verändern.
Ich versuche das so:
Ich habe ein kleines Record, in dem ich den stil (z.B. fsbold oder was auch immer) eintragen kann. Wenn ich nun ein Item hinzufüge, dann füge ich per AddObject als erstes SubItem praktisch einen Pointer auf das Object, also auf das Record.
Das funktioniert auch soweit.
Nur versuche ich jetzt dementsprechend zu "malen". Doch das wiederum klappt nicht so ganz :Sad:
Ich mal das Record und die OnDraw-Methode der Listview:
Delphi-Quellcode:
  TToDo = record
    Style: TFontStyle;
   end;
  PToDo = ^TToDo;

{ Ein Item hinzufügen: }
procedure TEditorWND.Button2Click(Sender: TObject);
var
 ToDo1 : PToDo;
begin
  new(ToDo1);
  Item := MainForm.EDIT_ToDo.Items.Add;
  Item.Caption := Editor.Text;
  Item.SubItems.AddObject(Editor.Text, TObject(ToDo1))
end;
{...}
procedure TMainForm.Edit_ToDoDrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
 with Sender as TListview do
  begin
   Canvas.Brush.Color := clYellow;
   Canvas.FillRect(Rect);
   Canvas.Font.Style := [PToDo(Item.SubItems.Objects[0])^.Style];
   Canvas.TextOut(Rect.Left + 2, Rect.Top, Item.Caption);
  end;
end;
Ich glaube das war alles. Es gibt auch keine Fehler bis auf, dass halt nicht funktioniert...
Ich hoffe ihr könnt mir helfen
Alexander
  Mit Zitat antworten Zitat