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