Weiß jemand wie man den neuen Vista-Focusbalken hinbekommt.
Mein bisheriger Erfolg mit folgenden Code (Noch in Entwicklung) ist als Dateianhang sichtbar.
Delphi-Quellcode:
procedure DrawVistaThemedFocusBar(Grid: TListView; Surface: TCanvas; R: TRect); overload;
var
pid, sid: Integer;
Bitmap: TBitmap;
CheckRect: TRect;
i: Integer;
CheckTheme: HTheme;
begin
Bitmap := TBitmap.Create;
try
Bitmap.Width := R.Right - R.Left;
Bitmap.Height := R.Bottom - R.Top;
pid := LVP_LISTITEM;
if Grid.Focused then
sid := LIS_SELECTED
else
sid := LIS_NORMAL;
CheckRect := Rect(0, 0, Bitmap.Width, Bitmap.Height);
CheckTheme := OpenThemeData(Grid.Handle, 'button');
try
DrawThemeBackground(CheckTheme, Bitmap.Canvas.Handle, pid, sid, CheckRect, nil);
finally
CloseThemeData(CheckTheme);
end;
bitblt(Surface.Handle, R.Left, R.Top, R.Right - R.Left,
R.Bottom - R.Top, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
finally
Bitmap.Free;
end;
end;
Der Austausch von 'button' in der Zeile:
CheckTheme := OpenThemeData(Grid.Handle, 'button');
mit 'listview' ist noch weniger erfolgreich.
Windows Vista - Eine neue Erfahrung in Fehlern.