AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MainForn StayOnTop

Offene Frage von "oki"
Ein Thema von oki · begonnen am 27. Apr 2009 · letzter Beitrag vom 28. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

MainForn StayOnTop

  Alt 27. Apr 2009, 08:44
Moin Leute,

ich möchte folgendes erreichen:

Meine Anwendung besteht aus mehreren Fenstern, wobei das MainForm die Haupt-ToolBar hält. Jetzt möchte ich, dass mein MainForm StayOnTop wird, damit die anderen Fenster nicht das MainForm überlagern können (eine MDI-Anwendung kommt nicht in frage!).

Jetzt habe ich folgendes Problem. Wenn ich meinem MainForm die Eigenschaft StayOnTop zuweise, dann scheinen alle meine Anwendungsformulare diese Eigenschaft auch zu bekommen. Nicht nur, das alle Formulare gegenüber anderen Anwendungen StayOnTop werden, sondern in der Anwendung etabliert sich eine "feste Hirarchie". Das zeigt sich darin, dass ein Fenster, dass in der Z-Liste meiner Anwendung weiter unten steht nicht mehr durch Anclicken vor ein anderes Fenster gebracht werden kann.

Kennt jemand eine Lösung, wie ich das MainForm meiner Anwendung StayOnTop bekomme, ohne dass alle anderen Fenster meiner Anwedung davon betroffen sind?

Gruß oki
42
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: MainForn StayOnTop

  Alt 27. Apr 2009, 09:12
Sollte gehen, wenn die anderen Formulare die Hauptform nicht als Owner haben.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: MainForn StayOnTop

  Alt 27. Apr 2009, 10:28
Zitat von Tyrael Y.:
Sollte gehen, wenn die anderen Formulare die Hauptform nicht als Owner haben.
Ähmm sollten sie nicht haben, werden alle mittels Application.CreateForm creiert. Entweder ich hab da einen Denkfehler oder das wars nicht.

Gruß oki
42
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 10:36
Push
42
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:23
Ich hoffe, ich hab' dich richtig verstanden.

Deine Anwendung soll gegenüber anderen Anwendungsfenstern TopMost sein, aber seine eigenen fenster normal ohne Hirarchy behandeln?

Alle Fenster auf fsNormal, denn Application ist dann das TopMost-Fenster:
SetWindowPos(Application.Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW); Wobei ich nicht weis, ob bei D2007 die Application noch als Fenster angelegt ist. Bei D5 geht das noch so...
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:26
HiSatty67,

ja, so soll es sein. Zusätzlich soll keins meiner anderen Anwendungsfenster mein Main überlagern.

Ich teste mal deinen Code.

Dank und Gruß oki
42
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:30
Top, Left und CO kann natürlich auf 0 gesetzt werden (Copy&Paste Error).

Was ich festgestellt hab', das beim ersten öffnen einer neuen Anwendung sich ein Fenster drüber schieben kann, danach aber wieder das gewünschte Verhalten. Als evtl. bei Focus-Verlust noch ein SetForegroundWindow.

Zudem kann man es in <MainForm>.OnActivate reinsetzen, dann wird es immer wieder erneuert, falls ein anderes Fenster den TopMost-Status schnappen wollte.
Zitat von oki:
Zusätzlich soll keins meiner anderen Anwendungsfenster mein Main überlagern.
Dann statt Application.Handle doch MainForm.Handle
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:34
Zitat von Satty67:
Zudem kann man es in <MainForm>.OnActivate reinsetzen, dann wird es immer wieder erneuert, falls ein anderes Fenster den TopMost-Status schnappen wollte.
wird OnActivate auch aufgerufen wenn das Fenster den Focus verliert?

oki
42
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#9

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:39
Ich hab deinen Code
SetWindowPos(Application.Handle, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE or SWP_NOMOVE or SWP_SHOWWINDOW); in mein OnActivate aufgenommen. Bezüglich des Verhaltens des MainForm hat sich zwar was geändert, aber nicht was ich wollte Das Main ist weiterhin nicht stayonTop, reagiert jetzt aber nicht mehr auf MausClicks. Ich sehe an der Toolbar den HotTrack, wenn ich mit der Maus darüber fahre, Clicks werden aber nicht verarbeitet.

Das wars nicht, oder bei mir läuft was richtig schief.

Gruß oki
42
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

Re: MainForn StayOnTop

  Alt 28. Apr 2009, 11:41
OnActivate bzw. onDeactivate wenn das Fenster den Focus bekommt bzw. verliert. Allerdings glaube ich nur beim Wechsel der Fenster innerhalb der Anwendung.

Für Wechsel aus/in die Anwendung des Focis wird man wohl ApplicationEvent (Komponente) und dort das onActivate/onDeactivate nehmen müssen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz