Hallo Gustav,
erstmal danke für die Antwort. Hab es wie in deinem Tipp umgesetzt (sollte öfter mal über den Tellerrand der
VCL in Richtung
API schauen. Lernt man immer was neues). Hab mir dann SetWindowPos bei
MSDN angeschaut und via Googel noch zwei drei ähnliche Varianten gefunden, die zusätzlich noch SWP_NOACTIVATE als weiteres Flag benutzen und wo das immer zu klappen scheint.
Wie ich es aber auch mache, das Fenster bleibt nicht im Vordergrund. Es scheint zunächset so, aber mach ich irgendein anderes Fenster auf, z.B. Firefox, Explorer, ..., so verschwindet meines doch wieder dahinter.
Woran kann das liegen?
Hier die Codestelle, wo ich das umswitche:
Delphi-Quellcode:
procedure TMain.ApplyOptionen;
//var i,
// iwidth: integer;
begin
if Optionen.StayOnTop
then
begin
// self.FormStyle := fsStayOnTop;
// DisplayForm.FormStyle := fsStayOnTop;
SetWindowPos(
Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE+swp_NoMove + swp_NoSize);
SetWindowPos(DisplayForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE+swp_NoMove + swp_NoSize);
end
else
begin
// self.FormStyle := fsNormal;
// DisplayForm.FormStyle := fsNormal;
SetWindowPos(
Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE+swp_NoMove + swp_NoSize);
SetWindowPos(DisplayForm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE+swp_NoMove + swp_NoSize);
end;
DisplayForm.AlphaBlend:= Optionen.hgDurchscheinend;
DisplayForm.TransparentColor:=Optionen.hgdurchsichtig;
if DisplayForm.TransparentColor
then
DisplayForm.Color:=DisplayForm.TransparentColorValue
else
DisplayForm.Color:=Optionen.hgFarbe;
end;
Edit:
Hab jetzt diesen bei
delphi about gefundenen Codeschnipsel in mein Form eingebaut und da sowieso bereits ein Timer eingebaut war nutze ich diesen zusätzlich um immer wieder Gustav's Code auszuführen.
Eine der beiden Maßnahmen, oder beide Zusammen, habens dann gebracht.
Einzig die Delphi-
IDE drängelt sich immer noch in den Vordergrund (k.A. wieso), auch wenn ich das Prog. ausserhalb der
IDE starte, aber damit kann ich leben, da das ja den Normaluser nicht betrifft.