AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

Ein Thema von juergen · begonnen am 10. Apr 2018 · letzter Beitrag vom 10. Aug 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#1

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 11. Apr 2018, 09:52
Ich denke er meint das, was "Aero Peek" macht. (wenn es aktiviert ist)
Das Vorschaubild des Fensters, da über den Control-Buttons (Taskleisten-Schaltflächen).
Windows-Aero.jpg
Einige Mediaplayer zeigen da gern nur das Cover der abgespielten CD an.
[edit] Jupp, klingt nach ThumbPreview. [/edit]

Im winzigen Taskleistenbutton das Cover anzeigen ... da erkennt man doch nichts.
Außerdem würde es dann reichen, wenn er dann einfach nur ein TIcon erstellt und das dort anzeigt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 11. Apr 2018, 11:34
Hallo zusammen,

Danke für die Tipps.
Habe nun eine Lösung erarbeitet die zu funktionieren scheint.
Meine Festlegung dabei ist, dass die anzuzeigenden Cover quadratisch sind und ich deswegen eine feste Konstante dem PreviewBitmap.Width zuordne.


Delphi-Quellcode:
procedure Tfrm_Main.Taskbar1ThumbPreviewRequest(Sender: TObject; APreviewHeight, APreviewWidth: Integer; PreviewBitmap: TBitmap);
var
 R : TRect;
begin
  PreviewBitmap.PixelFormat := pf32bit;
  PreviewBitmap.Width := 80;
  PreviewBitmap.Height := APreviewHeight;

  PreviewBitmap.Canvas.FillRect(TRect.Create(0, 0, APreviewWidth, APreviewHeight));
  R := TRect.Create(0, 0, PreviewBitmap.Width, PreviewBitmap.Height);
  PreviewBitmap.Canvas.StretchDraw(R, cxImage1.Picture.Bitmap);
end;
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 11. Apr 2018, 13:08
Ja sorry, ich dacht wegen Namensgebung wären die Links passend aber gut das es nun klappt was Du vorhattest!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#4

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 10. Aug 2022, 09:18
Hat jemand eine Idee wie man in der Vorschau alle sichtbaren auch die modalen Fenster anzeigt?

Es ist auch möglich modale Fenster mit Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; auch in der Taskbar anzuzeigen, diese werden dann aber als einzelne Einträge in der Taskleiste angezeigt.

Ich würde gerne auf dem Thumbnail/Vorschau des Hauptmenüs auch die modalen Fenster die vom Hauptmenü aus geöffnet wurden sehen können.

Ich hätte gedacht vielleicht mit TTaskBar und OnThumbPreviewRequest selber eine Vorschau zu erstellen, das Event wird aber nur einmal ausgelöst und dann nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#5

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 10. Aug 2022, 09:42
MSDN-Library durchsuchenSetWindowLong, bzw. bereits in MSDN-Library durchsuchenCreateWindowEx oder eben Delphi-Referenz durchsuchenTCustomForm.CreateParams
WS_EX_APPWINDOW
WS_EX_TOOLWINDOW
WS_EX_NOACTIVATE

https://docs.microsoft.com/en-us/win...-window-styles

Wie man in der Hilfe rauslesen kann, gibt es meherere Eigenschaften, um zu steuern, ob oder ob nicht eine Form in der Taskleiste sichtbar sein soll. (lässt sich auch mannigfaltig in der SuFu entdecken)


Delphi-Quellcode:
procedure TYourForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

// bzw. alternativ später auch noch in
procedure TYourForm.CreateWindowHandle(const Params: TCreateParams);
procedure TYourForm.CreateWnd;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
296 Beiträge
 
Delphi 12 Athens
 
#6

AW: TTaskBar: zur Laufzeit ein Vorschau-Bild zuweisen

  Alt 10. Aug 2022, 12:03
MSDN-Library durchsuchenSetWindowLong, bzw. bereits in MSDN-Library durchsuchenCreateWindowEx oder eben Delphi-Referenz durchsuchenTCustomForm.CreateParams
WS_EX_APPWINDOW
WS_EX_TOOLWINDOW
WS_EX_NOACTIVATE

https://docs.microsoft.com/en-us/win...-window-styles

Wie man in der Hilfe rauslesen kann, gibt es meherere Eigenschaften, um zu steuern, ob oder ob nicht eine Form in der Taskleiste sichtbar sein soll. (lässt sich auch mannigfaltig in der SuFu entdecken)


Delphi-Quellcode:
procedure TYourForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

// bzw. alternativ später auch noch in
procedure TYourForm.CreateWindowHandle(const Params: TCreateParams);
procedure TYourForm.CreateWnd;
Damit bekomme ich aber ein weiteres Thumbnail.
Wenn die Form nicht modal ist, ist es auch in Ordnung dann kann man ja auch auf beide zugreifen.

Wird jedoch ein modales Fenster geöffnet möchte gerne nur ein Thumbnail haben, da ja auch nur ein Fenster aktiv ist.
Nur das aktive würde mir schon reichen.

Ich hab es hinbekommen, wenn man die TTaskBar einfach nur erzeugt mit dem aktiven Form als Owner dann ist es eigentlich schon das, was ich möchte.
Nur leider bis zur zweiten Ebene, wenn ich im modalen Fenster dann nochmal eins modal öffne wird das nicht mehr angezeigt in der Taskleiste.

Alternative wäre auch CustomizedPreview und die Events OnThumbPreviewRequest, OnWindowPreviewItemRequest zu verwenden.
Da bekomme ich es aber nicht hin mit GetFormImage ein Bitmap in PixelFormat 32bit zu kriegen ohne das die Farben verfälschen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz