AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Vista-Focusbalken in eigener Anwendung/Controls
Thema durchsuchen
Ansicht
Themen-Optionen

Vista-Focusbalken in eigener Anwendung/Controls

Ein Thema von Bernhard Geyer · begonnen am 18. Jan 2007 · letzter Beitrag vom 28. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Vista-Focusbalken in eigener Anwendung/Controls

  Alt 18. Jan 2007, 11: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
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 31. Mai 2008, 23:10
Hi,

mal als Nachtrag zu Bernhards Thread:

mit
DrawThemeBackground(ThemeServices.Theme[teMenu], TargetCanvas.Handle, MENU_POPUPITEM, MPI_HOT, ItemRect, nil) geht es soweit, der Ansatz war richtig, jedoch nicht den Button nehmen

Problem: Das teMenu kennt nur Hot/Normal/Disabled, aber nicht Selected/SelectedNotFocused wie im Explorer Listview unter Vista. Das ganze Layout vom Selected/Focused-Style im Explorer ist natürlich nicht published im SDK...

Der Trick mit dem 'explorer' als Handle geht auch nur bedingt, soweit das Control von TTreeView ableitet - BDS nutz hier intern ja 'SysTreeView32'.

Gruß Assertor

Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 2. Jun 2008, 09:35
Danke. Mit deinem Tipp hab ich es hin bekommmen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 2. Jun 2008, 10:23
Hi Bernhard,

Zitat von Bernhard Geyer:
Danke. Mit deinem Tipp hab ich es hin bekommmen
Da nicht für Du hilfst mir hier auch so oft

Aber eine Rückfrage: Hast Du auch nur den "einen" State hinbekommen? Ich suche für ein Grid noch eine Variante, die die States SelectedNotFocused, Hot, SelectedHot etc. verarbeitet - also den Vista Explorer-Stil vollständig nachahmt.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 2. Jun 2008, 10:46
Was ist ein Focusbalken?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#6

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 2. Jun 2008, 10:49
Zitat von Luckie:
Was ist ein Focusbalken?
Hast ja recht, aber Bernhards Titel ist ja schon über ein Jahr alt - da war das alles noch nicht so klar

Richtiger wäre sicherlich "Microsoft Windows Vista Explorer Treeview Style Gradient Selection and Focused Bar" - oder einfach den Screenshot aus dem ersten Post ansehen.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 2. Jun 2008, 19:05
Zitat von Assertor:
Aber eine Rückfrage: Hast Du auch nur den "einen" State hinbekommen? Ich suche für ein Grid noch eine Variante, die die States SelectedNotFocused, Hot, SelectedHot etc. verarbeitet - also den Vista Explorer-Stil vollständig nachahmt.
Ok, 100%ig ist es noch nicht gelößt, aber halbwegs. Konnte heute aber nicht zu lange damit herumexperimentieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 25. Jun 2008, 11:33
Hallo Berhard,
mich würde das Thema auch interessieren, deshalb die Frage, wenn du es hinbekommen hast, ob du dies hier veröffentlichen wirst? Wär super!

Viele Grüsse
s!
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#9

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 25. Jun 2008, 11:44
Zitat von stOrM:
Hallo Berhard,
mich würde das Thema auch interessieren, deshalb die Frage, wenn du es hinbekommen hast, ob du dies hier veröffentlichen wirst? Wär super!
Ähm,

Zitat von Assertor:
DrawThemeBackground(ThemeServices.Theme[teMenu], TargetCanvas.Handle, MENU_POPUPITEM, MPI_HOT, ItemRect, nil)
Zitat von Bernhard Geyer:
Danke. Mit deinem Tipp hab ich es hin bekommmen
Ich hab doch die Lösung für Bernhard's Problem/Idee schon gepostet. Mußt Du nur noch selbst einbauen Die restlichen States sind scheinbar nicht dokumentiert, daher wird es hier vermutlich keine weiteren Lösungen geben... - Das ist wohl was, was MS nur für sich und den Explorer haben will.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Vista-Focusbalken in eigener Anwendung/Controls

  Alt 28. Jun 2008, 08:32
Zitat von Assertor:
Ich hab doch die Lösung für Bernhard's Problem/Idee schon gepostet. Mußt Du nur noch selbst einbauen Die restlichen States sind scheinbar nicht dokumentiert, daher wird es hier vermutlich keine weiteren Lösungen geben... - Das ist wohl was, was MS nur für sich und den Explorer haben will.
Das ElPack wurde mit letzten Build entsprechend erweitert. Jedoch sind auch hier noch nicht die weiters Mouse-Over-States implementiert (aus obigen Grund).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz