AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

Ein Thema von LTE5 · begonnen am 13. Nov 2017 · letzter Beitrag vom 16. Nov 2017
Antwort Antwort
Seite 1 von 3  1 23   
LTE5

Registriert seit: 13. Nov 2017
51 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 22:15
Nach einigem Herumgeteste habe ich eine für mich fast funktionierende Lösung gefunden, um ein Delphifenster über allen anderen externen Fenstern zu halten, da fsStayOnTop scheinbar nur innerhalb der eigenen Anwendung gilt.

Was sagt ihr dazu? Ist das ein ganz böser und dirty Hack oder brauchbar?

Delphi-Quellcode:
TaskStayOnTop := TTask.Create(
 procedure
  begin
   Sleep(5);

   while Bedingung do
    begin
     if FormStyle = fsStayOnTop then
      ForceForegroundWindow(Handle);
    end;
  end);

TaskStayOnTop.Start;
ForceForegroundWindow kommt von hier http://www.swissdelphicenter.com/de/showcode.php?id=261
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
396 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 22:48
Gibt es einen Grund dafür das Du das brauchst?
Das fsStayOnTop nur auf die Application zielt, hat einen Sinn.
Das System gehört dem Anwender und nicht Dir!!!!!! Wenn der aus welchen Gründen auch immer gerade was anderes machen will, so ist das sein Recht!
Bei mir würde jede Anwendung die sich so verhält rausfliegen.
Fritz Westermann
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
51 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 22:52
Es handelt sich um ein kleines Statusfenster im Systembereich. Ob es oben gehalten werden soll oder nicht, kann der Nutzer selber entscheiden.
Aber wenn es oben gehalten werden soll, dann wirklich oben. Während das Fenster unten im Systembereich sichtbar ist, läuft ein Verarbeitungsprozess, den der Nutzer auch selber startet.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
396 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 23:05
Nun ja,
Das Hauptproblem ist wenn Du das Fenster nach vorne holst, wird eventuell auch der Focus auf dieses Fenster verschoben.

Ich denke mal das es nicht ganz einfach ist, das so zu lösen da Windows selber das Konzept für Fenster so nicht kennt.
Muss aber gestehen das sich für mich das Problem noch nie gestellt hat.
So weit ich das überblicke ist es auch von der Windowsversion abhängig was da genau passiert bei ForceForegroundWindow,
ich wäre da sehr vorsichtig...
Fritz Westermann
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
51 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 23:15
Wie machen es Produkte wie Avira oder andere Antiviren-Firmen denn?
Speziell Avira zeigt häufig Werbung an, die immer oben ist.
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
4.292 Beiträge
 
Delphi 2010 Architect
 
#6

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 23:33
HWND_TOPMOST ?
HWND_TOP = fsStayOnTop

gruss
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
51 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 23:44
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); und SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); hab ich schon durch. Funktioniert leider genau so wenig wie fsStayOnTop.
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
4.292 Beiträge
 
Delphi 2010 Architect
 
#8

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 13. Nov 2017, 23:46
tja wenn man die Anwendung in den Hintergrund setzt dann nicht Richtig! (HWND_NOTOPMOST)
Dachte eigentlich du wolltest das Gegenteil erreichen.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

gruss

Geändert von EWeiss (13. Nov 2017 um 23:50 Uhr)
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
51 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 14. Nov 2017, 00:01
Ich weiß nicht wovon du schreibst.
Ich habe einen Button wo ich hin- und herwechseln kann. Entweder immer vorne oder nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.127 Beiträge
 
Delphi 5 Professional
 
#10

AW: Form wirklich oben halten, Alternative zu FormStyle fsStayOnTop

  Alt 14. Nov 2017, 00:07
Ich nutze dafür folgende Funktion
Delphi-Quellcode:
function SetWindowAlwaysOnTop(const AForm: TForm; AOnTop: Boolean): Boolean;
var
  Lattr: HWND;
begin
    if AOnTop then
        Lattr:= HWND_TOPMOST
    else
        Lattr:= HWND_NOTOPMOST;

    Result:= SetWindowPos(AForm.Handle, // handle to window
                 Lattr, // placement-order handle {*}
                 AForm.Left, // horizontal position
                 AForm.Top, // vertical position
                 AForm.Width,
                 AForm.Height,
                 // window-positioning options
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
Aufgerufen z.B. mit SetWindowAlwaysOnTop(Self, True); wird dieses Fenster im Vordergrund gehalten. Natürlich kann es von anderen Fenstern, die ebenfalls TOPMOST sind, überdeckt werden, aber das ist ja klar und wohl bekannt.

Grüße
Dalai
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf