Hallo,
ich male in meiner (virtuellen) ListView, ViewStyle = vsReport, mit folgendem Code Sterne in eine meiner Spalten:
Delphi-Quellcode:
procedure TfrmMain.lvTasksAdvancedCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var Task: TTask;
Rect: TRect;
i: integer;
begin
if Stage = cdPostPaint then
if SubItem = 2 then begin
Task := Item.Data;
// Obtain column rectangle for this item:
Rect := Item.DisplayRect(drBounds);
for i := 0 to SubItem - 1 do
Rect.Left := Rect.Left + Sender.Column[i].Width;
Rect.Right := Rect.Left + Sender.Column[SubItem].Width;
for i := ord(low(TTaskPriority)) to ord(Task.Priority) do begin
Sender.Canvas.Draw(Rect.Left,Rect.Top,FStarBitmap);
Rect.Left := Rect.Left + FStarBitmap.Width;
end;
end;
end;
Das funktioniert auch prima. Nur wird jetzt plötzlich die Schrift in der Spalte rechts davon in einer anderen Schrift dargestellt. Scheint nur eine neue Schriftgröße zu sein.
Das seltsame daran: Beim Auswerten des Sender.Canvas.Font-Objekts werden mir die ganz normalen Werte angezeigt, und sogar eine Neuzuweisung der Schriftgröße bringt mir die vorgesehene Schriftart nicht wieder zurück!
Das Problem tritt auf, sobald irgendeine Zeichenoperation mit dem Canvas durchgeführt wird.
Kennt jemand das Problem, und weiß vielleicht sogar eine Lösung? Schaut mir doch
sehr nach einem Bug in Delphi aus!