| Autor |
Beitrag |
floppy_
Hält's aus hier
Beiträge: 3
WinXP Pro SP2
Delphi 7 Enterprise
|
Verfasst: Di 24.10.06 13:21
Moinsen
Ist mein erster Post, hoffe das ist der richtige Bereich hier, aber ich denke schon, passte sonst nirgends...
Also ich möchte, dass eine Form immer OnTop ist. Nach ein wenig suchen im Forum hab ich das auch erfolgreich gelöst, indem ich FormStyle := fsStayOnTop gemacht habe und einen Timer erstellt hab, der mit 1ms Interval Form3.BringToFront macht.
Funktioniert wie gesagt auch, das Problem ist aber, dass die Form immer die "Aufmerksamkeit" hat. Wenn ich also z.B. ein anderes Programm starte und da klicken möchte geht die Maus immer zur Form (die ja ontop ist) und minimiert das neue Programm.
Konkret, wie im Topic: Es soll zwar OnTop sein, aber nicht die Aufmerksamkeit (kA, hat das was mit dem Fokus zu tun?) bekommen. Geht das überhaupt? Wenn ja: wie? 
|
|
Danny87
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: Di 24.10.06 13:54
Hi und  in der EE,
probier mal den Timer auszulassen.
Normalerweise braucht man, wenn das Formular auf fsStayOnTop steht, keinen Timer, der es immer wieder nach vorne bringt.
Das ist meiner Meinung nach auch der Grund, warum das Formular ständig den Fokus hat.
Also: testweise den Timer auslassen/wegmachen und gucken obs geht
Gruss
Daniel
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Di 24.10.06 14:05
wenn du es immer *ganz* oben willst (bis das nächste andere Programm TopMost verwendet):
Delphi-Quelltext 1: 2: 3:
| SetWindowPos(Form.Handle, HWND_TOPMOST, 0 , 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); SetWindowPos(Form.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); |
das SWP_NOACTIVATE bewirkt, dass das form nicht aktiviert wird. SWP_NoSize und SWP_NoMove dafür (wie der Name schon sagt, damit die Größe/Position nicht geändert wird und man bei diesen Werten 0 benutzen kann)
aber das mit dem timer halte ich auch nicht für ne gute Idee...wirde das z.B. ins onShow packen...
HTH Frank
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Di 24.10.06 14:13
_frank_ hat folgendes geschrieben: | wenn du es immer *ganz* oben willst (bis das nächste andere Programm TopMost verwendet):
Delphi-Quelltext 1:
| SetWindowPos(Form.Handle, HWND_TOPMOST, 0 , 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); |
das SWP_NOACTIVATE bewirkt, dass das form nicht aktiviert wird. SWP_NoSize und SWP_NoMove dafür (wie der Name schon sagt, damit die Größe/Position nicht geändert wird und man bei diesen Werten 0 benutzen kann)
aber das mit dem timer halte ich auch nicht für ne gute Idee...wirde das z.B. ins onShow packen...
HTH Frank |
bei mir funktioniert das leider nicht: das form ist zwar immer im vordergrund, aber man kann es aktivieren, die größe verändern und verschieben ?!
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Di 24.10.06 14:46
sicherlich kannst *DU* es aktivieren, aber der setwindowpos-Befehl tut das nicht (die 4 0en sind große und position).
du willst komplett verhindern, dass man das Form aktivieren, verschieben und Größe ändern kann?
einfachste Möglichkeit wäre
Delphi-Quelltext 1: 2: 3:
| form.borderstyle:=bsNone; form2.setfocus; |
HTH Frank
|
|
floppy_ 
Hält's aus hier
Beiträge: 3
WinXP Pro SP2
Delphi 7 Enterprise
|
Verfasst: Di 24.10.06 16:24
Hab alle Antworten in allen Möglichkeiten ausprobiert, hilft leider nichts.
Und zwar war das ganze dafür gedacht, dass eine Anzeige (z.B. von dem Lied was grad läuft) bei Counter-Strike (das genannte neue Programm was ich öffne ^^) angezeigt wird.
Aber spätestens wenn man schießt geht der Fokus wieder auf die Form und wenn man dann nochmal schießt, wird das Spiel minimiert...
Wahrscheinlich liegt das am Spiel und ist deshalb nicht realisierbar... trotzdem danke für die Hilfe =)
|
|
Lurnon
      
Beiträge: 33
|
Verfasst: Fr 27.10.06 19:50
Das ist der Cheat-Schutz von Counterstrike. Du hast dein Form wohl im Zentrum des Bildschirms, oder?
Da ich so was "ähnliches", auch mal mit Counterstrike ausprobiert habe, konnte ich feststellen, dass die Maus nicht hinspringt, wenn sich das Fenster nicht zentral sondern in einer Ecke befindet (bei mir unten rechts).
|
|
floppy_ 
Hält's aus hier
Beiträge: 3
WinXP Pro SP2
Delphi 7 Enterprise
|
Verfasst: Sa 28.10.06 02:12
|
|
|