![]() |
Problem mit Vista und Taskbar-Preview
Hallo DPler,
ich habe da ein Problem. Es geht um Vista und die Taskbar-Preview. Ich verwende eine AboutBox mit dem BorderStyle "bsNone". Wenn ich nun die Taskbar und/oder Flip3D Preview durchgehe, wird nur ein Teil meines MainForms in der Größe der AboutBox gezeigt. Ach ja: Ich habe die "Korrekturen" für die Delphi Form Aktivierung richtig drin, wirklich ;) Von beiden Seiten bei InstallationExcellence. Die normale Preview klappt ja auch, aber sobal ein Modalform mit Borderstyle bsNone auf ist, wird der Ausschnitt kleiner. Ich habe dann testhalber dem Modalform mal ein eigenen Taskbarbutton verpasst und dann ist es so, daß der Preview des Modals perfekt ist (wie sonst auch beim MainForm), aber das MainForm dann plötzlich im Preview nur einen Ausschnitt in der Größe der AboutBox zeigt. :?: Was kann man da machen? Gruß winkel79 Hier die üblichen bekannten: MainForm:
Delphi-Quellcode:
und halt ggf. im ModalForm die gleichen CreateParams, damit es auch einen Taskbar-Button bekommt.
procedure TForm1.CreateParams(var Params: TCreateParams);
begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle and not WS_EX_TOOLWINDOW or WS_EX_APPWINDOW; end; procedure TForm1.WMSyscommand(var Message: TWmSysCommand); begin case (Message.CmdType and $FFF0) of SC_MINIMIZE: begin ShowWindow(Handle, SW_MINIMIZE); Message.Result := 0; end; SC_RESTORE: begin ShowWindow(Handle, SW_RESTORE); Message.Result := 0; end; else inherited; end; end; procedure TForm1.WMActivate(var Message: TWMActivate); begin if (Message.Active = WA_ACTIVE) and not IsWindowEnabled(Handle) and not (IsWindowEnabled(Application.Handle)) then begin SetActiveWindow(Application.Handle); Message.Result := 0; end else inherited; end; ... procedure TForm1.Create(Sender: TObject); begin ... if not (csDesigning in ComponentState) then begin ShowWindow(Application.Handle, SW_HIDE); SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW or WS_EX_TOOLWINDOW); ShowWindow(Application.Handle, SW_SHOW); end; ... end; |
Re: Problem mit Vista und Taskbar-Preview
Ich habe gerade rausgefunden, daß es nur zu einem falschen Preview kommt, wenn die AboutBox als BorderStyle "bsNone" und als Position "poMainFormCenter" oder "poOwnerFormCenter" hat...
Ich suche jetzt in der Forms.pas nach den Unterschieden, denke aber das hat irgendwas mit VCL Eigenheiten zu tun (SetBounds für das Modal). Edit: Es ist tatsächlich ein Problem mit SetBounds. Wenn ich als Position "poDefaultPosOnly" eingebe und manuell im OnShow: SetBounds(300, 500, Width, Height) aufrufe, tritt das Problem auch auf. :wall: Also geht die Suche in Controls.pas los... |
Re: Problem mit Vista und Taskbar-Preview
Das Problem tritt tatsächlich in dieser Konstellation immer auf.
Für alle anderen, die etwas langsamer sind und erst in ein paar Monaten überhaupt auf das Problem aufmerksam werden (so wie mit meinen Threads über Indy oder die Vista Tooltips/QC bei Codegear) jetzt die Erklärung und Lösung ;) Betroffen: Alle Pre-D2007, Getestet mit leerer Installation Konstellation: 1) Applikation enthält Fix von InstallationExcellence, um TaskBarPreview zu ermöglich 2) ModalForm hat BorderStyle "bsNone" und Position "poMainFormCenter"/"poScreenCenter". Das Parent wird vor ShowModal korrekt festgelegt (unerheblich für den Fehler) Auswirkung: MainForm erhält im Taskbar Preview/Flip3D ein Cropped-Thumbnail (also nur in der Größe des Modals und zusätzlich seitlich verschoben). Lösung: Im CreateParams des Modals fest einstellen:
Delphi-Quellcode:
Dann geht alles!
procedure TfrmMyModal.CreateParams(var Params: TCreateParams);
begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW; end; Gruß winkel79 :dp: Edit: Hat das eigentlich was zu bedeuten, wenn man die meisten seiner Threads selber beantwortet, insbesondere immer bei diesen komplizierten Bugs? ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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