2013-12-17 67 views
0

我想获得一些文字以粗体显示。德尔福ListView字符串在大胆

下面是代码:

if (mfDeleted in flags) then 
     begin 
     //Font.Style:=[fsBold]; //This is just changing all to bold not just this row 
     s := s + 'Deleted,'; //I need this Deleted string or whole row to be bold. 
     end; 

我怎样才能做到这一点?

注:参见注释代码

回答

6

您需要处理OnAdvancedCustomDrawItemOnAdvancedCustomDrawSubItem。像这样:

procedure TMyForm.ListViewAdvancedCustomDrawItem(Sender: TCustomListView; 
    Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; 
    var DefaultDraw: Boolean); 
begin 
    Sender.Canvas.Font.Style := [fsBold]; 
end; 

procedure TMyForm.ListViewAdvancedCustomDrawSubItem(Sender: TCustomListView; 
    Item: TListItem; SubItem: Integer; State: TCustomDrawState; 
    Stage: TCustomDrawStage; var DefaultDraw: Boolean); 
begin 
    Sender.Canvas.Font.Style := [fsBold]; 
end; 

很明显,您需要将这些事件处理程序挂接到适当的事件。你需要添加一些逻辑来确保你只对你打算突出显示的行/列做这些事情。