Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#1

Vista-Focusbalken in eigener Anwendung/Controls

  Alt 18. Jan 2007, 10:54
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.
Miniaturansicht angehängter Grafiken
vista-focusbalken_165.png  
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat