Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mal wieder StayOnTop (https://www.delphipraxis.net/52345-mal-wieder-stayontop.html)

SirThornberry 19. Okt 2005 05:40

Re: mal wieder StayOnTop
 
das, das fenster dann nicht im Vordergrund liegt hängt höchstwahrscheinlich damit zusammen das, das fenster nochmal neu creiert wird (RecreateWnd). Man sollte also sicherstellen das solche Sachen wie "FormStyle", "Position" etc. des Formulars auf Standard stehen damit eben sowas nicht passiert. Oder eben diese Anweisungen erst dann ausführen wenn all diese Sachen abgearbeitet wurden (also frühestens nach dem ersten OnShow)

n0b0dy 19. Okt 2005 10:49

Re: mal wieder StayOnTop
 
das ist ein fenster, was je nach wunsch angezeigt werden kann. es wird mit .Hide versteckt und mit .Show wieder angezeigt...

n0b0dy 19. Okt 2005 14:41

Re: mal wieder StayOnTop
 
Liste der Anhänge anzeigen (Anzahl: 1)
also bin bald am verzweifeln :?

habe mal ein bspprog angehängt.
die form1 hat keinen taskbareintrag.
ruft man Form2.Show auf, hat ist es zwar "Immer im Vordergrund", aber hat einen Taskbareintrag. dieser taskbareintrag soll jedoch auch nicht vorhanden sein. Kann mir jemand helfen?

Khabarakh 19. Okt 2005 14:49

Re: mal wieder StayOnTop
 
Von meinen hüpfenden Viechern:
Delphi-Quellcode:
procedure TBlobForm.FormShow(Sender: TObject);
begin
  // Setzt Fenster an die vorderste Front
  SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  // Setzt Parent auf den Desktop
  SetWindowLong(Handle, GWL_HWNDPARENT, 0);
  // Versteckt das Fenster in der Taskleiste
  SetWindowLong(Handle, GWL_EXSTYLE,
    GetWindowLong(Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;
Da das aber mein erster richtiges Projekt mit direkter WinAPI-Nutzung war, bin ich mir nicht sicher, ob ich dieser damit nicht irgendwie ans virtuelle Schienbein trete :stupid: .
Funktionieren tut es aber.

n0b0dy 19. Okt 2005 14:54

Re: mal wieder StayOnTop
 
hm. habs versucht aber genau das gleiche prob.... :(

[Edit]
Die Viecher sind genial :D

holliesoft 19. Okt 2005 15:22

Re: mal wieder StayOnTop
 
Hallo,

liest denn keiner mein Posting oben dazu? Ich hatte 2 Links gepostet... :roll:

Zitat von dem einen Link:

You may try adding Application->RestoreTopMosts(); to the OnDeactivate
event handler.

Also, bei TApplication.OnDeactivate sollte ein Application.RestoreTopMosts ausgeführt werden. Dann reicht auch

Delphi-Quellcode:
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
bei der Form2 und es gibt keinen Eintrag in der Taskbar. Hab das so bei meinem Programm Klebezettel für die Notizen gemacht und es funktioniert einwandfrei :)

Gruß
Patrick

n0b0dy 19. Okt 2005 19:18

Re: mal wieder StayOnTop
 
naja,

das funktioniert innerhalb der Anwendung aber nicht überall. mit diesem Code ist Form2 innerhalb der Anwendung StayonTop und das auch ohne Taskbareintrag, aber damit ist nicht das forumlar für windows "Immer im Vordergrund"....


habs eben getestet

holliesoft 19. Okt 2005 19:54

Re: mal wieder StayOnTop
 
Hi n0b0dy,

hast Du denn beim
Delphi-Quellcode:
TApplication.OnDeactivate
ein

Delphi-Quellcode:
Application.RestoreTopMosts
ausgeführt?

n0b0dy 19. Okt 2005 20:24

Re: mal wieder StayOnTop
 
ja hab ich. will trotzdem net. ich habe die befürchtung dass meine style komponente (sry, vergessen zu erwähnen) das irgendwie verändert...
ich mach den style mal weg und teste es nochmal.

n0b0dy 19. Okt 2005 21:31

Re: mal wieder StayOnTop
 
also, habs nochmal probiert und holliesoft's lösung funzt einwandfrei.
das lag an meinem style, der das wieder rückgängig gemacht hat.

also einfach im OnShow folgendes ausführen ...
Delphi-Quellcode:
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
... und im Application.OnDeactivate das hier ausführen:
Delphi-Quellcode:
Application.RestoreTopMosts

Ciao


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Seite 2 von 2     12   

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