Einzelnen Beitrag anzeigen

tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#1

OnAdvancedCustomDrawSubitem ändert nachfolgende Spalten

  Alt 30. Apr 2006, 15:32
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!
Miniaturansicht angehängter Grafiken
screenshotdp_216.jpg  
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat