5,388
社区成员
发帖
与我相关
我的任务
分享
var
lpRect: TRect;
X, Y: Integer;
Icon: TIcon;
p: PItemData;
sName: string;
begin
if (Item = nil) or (Item.Data = nil) then
Exit;
p := Item.Data;
lpRect := Item.DisplayRect(drBounds);
if cdsSelected in State then
FPicture.Draw2(ACanvas, lpRect, 'Selected', 0);
Icon := GetFileIconEx(p^.Path, 1, itLargeIcon);
if Icon <> nil then
try
// 画图标
X := (RectWidth(lpRect) - Icon.Width) div 2 + lpRect.Left - 3;
Y := lpRect.Top + 2;
ACanvas.Brush.Style := bsClear;
ACanvas.Draw(X, Y, Icon);
finally
FreeAndNil(Icon);
end;
// 画文字
SetBkMode(ACanvas.Handle, TRANSPARENT);
ACanvas.Brush.Style := bsClear;
lpRect := Item.DisplayRect(drLabel);
lpRect.Bottom := lpRect.Top + ACanvas.TextHeight(Item.Caption) * 2;
sName := ExtractFileName(p^.Path);
sName := GetShort(ACanvas, lpRect, sName);
DrawString(ACanvas, sName, lpRect, DT_CENTER or DT_WORDBREAK);