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:
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;
und halt ggf. im ModalForm die gleichen CreateParams, damit es auch einen Taskbar-Button bekommt.