![]() |
Form unschliessbar und onTop machen?
Ich möchte eine Form2 unschliessbar machen
und sie onTop anzeigen, das die immer zu sehen ist! Habe viele codes versucht, alle funktionieren nur halb... der eine Code eght, allerdings kann ich es nicht mehr rückgängig machen, ausser, ich starte das Programm neu... Wie kann ich eine Form 2 dazu bringen, immer oben zu sein? Mfg novo [edit=SirThornberry]Buchstabendreher im Titel korrigiert - Mfg, SirThornberry[/edit] |
Re: Form unschliessbar udn onTop machen?
Das geht gar nicht. Es gibt kein Fenster was immer oben ist. Das ist kein Problem von Windows sondern ein logisches. Wenn man 2 solche Programme hätte welches wäre dann immer oben?!
Und "unschließbar" geht auch nicht. Ein Programm ist nur eine Befehlsfolge die abgearbeitet wird. Sobald der Computer herunter gefahren wird bzw. der Prozessor abgeschalten wird läuft dein Programm nicht mehr. Ebenso kann man bei eigentlichen allen Programmen einen Prozess auch einfach entfernen was auch notwendig ist damit instabile Programme beendet werden können und nicht das ganze System mit in die Tiefe gerissen wird. Sobald du es einigermaßen schaffst ein Programm unschließbar zu machen kann der Nutzer sich nicht mehr abmelden weil die Abmeldung erst abgeschlossen ist wenn alle Programme des Nutzers geschlossen wurden. Du siehst - das was du erreichen willst geht aus rein logischen Gründen nicht zu bewerkstelligen. |
Re: Form unschliessbar udn onTop machen?
Okay aber kann man unterbinden, dass mit WIN + D die Form minimiert wird?
Und es ist sehr wohl möglich, eine Form StayOnTop mäßig im Vordergrund zu halten! Nur wie? Hab schon 4 Lösungen probiert, alle gehen nicht optimal! |
Re: Form unschliessbar udn onTop machen?
Es ist eben nicht möglich eine Anwendung IMMER im Vordergrund zu halten. Zumindest wüsste ich nicht wie das physich gehen soll wenn man 2 Anwendungen aht das beide immer über der anderen sind ;-)
|
Re: Form unschliessbar udn onTop machen?
??? natürlich geht das mit
Delphi-Quellcode:
klappt es ja auch einigermaßen.
Application.NormalizeAllTopMosts;
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); Aber nciht so perfekt wie es sein sollte. und dann gäbe es noch
Delphi-Quellcode:
fsOnTop
aber wie gesagt, da gibt es 5 verschiedene Codes, die ich gefunden habe und will halt von jemandem, der Ahnung hat, wissen, welches davon am Besten geeignet ist! Mfg novo |
Re: Form unschliessbar udn onTop machen?
also bei mir geht es nicht. Entweder Programm1 ist vor Programm2 oder Programm2 vor Programm1 beide können nicht ganz oben sein.
|
Re: Form unschliessbar udn onTop machen?
Zitat:
Ich will doch bloss eine Form im Vordergrund (StayOnTop) machen! Dieses Feature haben so viele Programme! |
Re: Form unschliessbar udn onTop machen?
Was dir Jens klar zu machen versucht ist, dass nur ein fenster das oberste sein kann. Wenn schon eins ganz oben ist, kann deins nicht mehr nach ganz oben kommen und umgekehrt.
Und warum soll man dein Fenster nicht minimieren können? Falls das was werden soll, um den Computer zu sperren, vergiss es und benutz die dafür vorgesehene Windows API-Funktion ![]() |
Re: Form unschliessbar udn onTop machen?
Zitat:
a) sich als "Superuser" anzumelden und dann mit einem Button den es gitb die App zu schliessen und dann wieder auf dem Desktop zu sein b) die Reset Taste zu druecken c) den PC auszuschalten Die Taskleiste ist verdeckt durch unsere App, alle Tastenkombinationen sind unterdrueckt die den TM aufrufen koennten, die ein schliessen der App erzwingen koennten wie Alt+F4 und weitere. Das ganze ist auch so gewollt damit Leute wirklich mit dem PC nur arbeiten fuer das was er in diesem Produkt verbaut ist und nicht irgendwelchen anderen Firelefanz veranstaltet. |
Re: Form unschliessbar udn onTop machen?
Euer System läuft damit in einem Kiosk Mode, dass es dann möglich ist, haben wir auchnicht angezweifelt. Aber es ging wohl eher um ein normal eingerichtetes Windows.
|
Re: Form unschliessbar udn onTop machen?
Zitat:
|
Re: Form unschliessbar udn onTop machen?
Wobei, wenn sowas wirklich erreicht werden soll, es wohl einfachher wäre sich die kostenlose Kiosk Software für XP von Microsoft zu installieren.
|
Re: Form unschliessbar udn onTop machen?
Ich will einfach ein kleines Fenster rechts unten über der Uhr einblenden, dass kontinuierlich bestimmte Werte anzeigt!
Es soll durchs TraySymbol ein/ausgeblendet werden können, und: Es soll im Vordergrund angezeigt werden, d.h. wenn ich Firefox im Vollbildmodus gestartet habe, soll die kleine Form AUF dem Firefox zu sehen sein! Mfg Novo |
Re: Form unschliessbar udn onTop machen?
hallo zusammen,
so zwei Programme hab ich heute auf einem Rechner erlebt. Sieht gut aus wie sich die beiden Fenster immer wieder gegenseitig überschreiben. Am besten war, wie die Performance in den Keller ging. Erinnerte mich an kleine Kinder die die ganze Zeit "ich will aber" schreien. Ich hab dem Anwender geraten das eine (Virenscanner) vom Rechner zu schmeißen und sich eins zu besorgen, daß sich etwas kooperativer verhält. Gruß K-H |
Re: Form unschliessbar udn onTop machen?
Liste der Anhänge anzeigen (Anzahl: 1)
...
|
Re: Form unschliessbar udn onTop machen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich glaube, ihr missversteht mich alle!
Ich habe jetzt ein Flash video hochgeladen (als .exe) Dort wird ein programm gezeigt, dass ein 2. Form startet und diese immer onTop hält! Egal, was ich starte, wieviele Fenster ich öffne, das kleine Fenster bleibt immer im vordergrund! PS: Das Tool im Video ist auch in Delphi geschrieben! ja und so will ich das auch !!! |
Re: Form unschliessbar udn onTop machen?
Zitat:
selbstverständlich missverstehen dich alle: die meisten hier argumentieren logisch, während du krakeelst wie ein kleines Kind, das seine Schokolade nicht bekommt - wobei die Kinderforderung nach Schokolade immerhin logisch noch erfüllbar wäre, im Gegensatz zu deiner. Die Diskussion startet hier immer wieder neu, aber selten wurde so klar herausgestellt, warum es das Immer Vorne Programm nicht geben kann, das macht wohl die Übung. Die Uneinsichtigkeit mancher Programmierer ist wahrscheinlich darauf zurückzuführen, dass jemand, der so etwas fordert, von vornherein ein krankhafter Egozentriker ist und garnicht auf die Idee kommt, dass ein anderer das Gleiche fordern könnte, und das womöglich noch zu recht. Also Novo: reiss dich mal zusammen und schau wenigstens soweit von deinem Egozentrum weg, dass du dir vorstellen kannst, du bekommst hier, mit oder ohne unsere Hilfe, den ultimativen StayOnTop-Mechanismus hin - und dann schreibt ihn jemand ab und lädt das Programm zusätzlich zu deinem. Gruss Reinhard |
Re: Form unschliessbar udn onTop machen?
2. Form? Immer onTop? Ist das .ShowModal was du von redest!
|
Re: Form unschliessbar udn onTop machen?
Zitat:
du meinst wahrscheinlich SysModal - aber das stoppt ALLE Applikationen auf dem PC und darf nur im Katastrophenfall verwendet werden. In 32bit-Systemen eigentlich garnicht mehr ausser vom System selbst. Gruss Reinhard |
Re: Form unschliessbar udn onTop machen?
@Reinhard Kern
Nu mach mal einen Punkt mit deiner Kinderschokolade Theorie da! Hättest du dir das Video angesehen, wüsstest du auch, dass sowas geht. Mein Gott, das haben so viele Programme als Option, es muss gehen! Und es geht mir auch nicht darum, welches von 2 OnTop Fenstern die Oberhand gewinnt, es geht mir darum, ein Fenster erstmal onTop zu bekommen! @Mackhack Das machts OnTop bei deienr eigenen Application, stimmt, ich meine aber OnTop auf dem Dektop! |
Re: Form unschliessbar udn onTop machen?
Zitat:
|
Re: Form unschliessbar udn onTop machen?
Zitat:
Einfach ganz normal OnTop, dass neu geöffnete fenster und Programme DRUNTER sind reicht doch voll! |
Re: Form unschliessbar udn onTop machen?
Zitat:
Delphi-Quellcode:
Form.FormStyle:=fsStayOnTop;
|
Re: Form unschliessbar udn onTop machen?
Zitat:
Denn: ich zitiere mal: Zitat:
Delphi-Quellcode:
funktionieren auch nicht!
SetWindowLong(Handle, GWL_HWNDPARENT, 0);
oder SetForeGroundWindow(frmAnzeige.Handle); |
Re: Form unschliessbar udn onTop machen?
Diese Lösungen funktionieren nicht weil sie eben etwas anderes machen als du willst. Das was du willst geht einfach nicht. Man kann nicht sicher stellen dass, das eigene Programm immer ganz oben bleibt.
|
Re: Form unschliessbar udn onTop machen?
Zitat:
Ihr wollt mich irgendwie veräppeln oder sowas, ka. Weil diese Option haben so viele Programme, ihr müsst das doch kennen! Die Option: Im Vordergrund bleiben |
Re: Form unschliessbar udn onTop machen?
Ja, es gibt solche Programme. Die benutzen dann fsStayOnTop. Dann hast du genau das Verhalten dieser Programme. Wenn du jetzt zwei solche Programme hast, die beide fsStayOnTop sind, haben beide die gleiche Berechtigung oben zu stehen und reagieren untereiander so wie normale Fenster. Beide stehen aber immer vor den normalen Fenstern. Was geht daran jetzt nicht?
|
Re: Form unschliessbar udn onTop machen?
Zitat:
|
Re: Form unschliessbar udn onTop machen?
Zitat:
Delphi-Quellcode:
und wie gesagt, mancham geht es, manchmal nicht!
procedure TfrmOnTopForm.chkBoxOnTopClick(Sender: TObject);
begin if chkBoxOnTop.Checked=true then begin SetWindowPos(frmOnTopForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end else begin SetWindowPos(frmOnTopForm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); end; Application.NormalizeAllTopMosts; end; Dann muss man 3-4x haken setzen udn lösen, bis es wieder funktioniert! ach erm und hier: ![]() wurde das ganze schonmal durchgekaut, aber wie gesagt, es funktioniert mal, und mal nicht! |
Re: Form unschliessbar udn onTop machen?
Liste der Anhänge anzeigen (Anzahl: 1)
so, Novo, probiers mal so:
Delphi-Quellcode:
Und damit wir uns nicht missverstehen hab ich mal nen Beispiel angehäng wie sowas aussieht
if chk1.Checked then
FormStyle := fsStayOnTop else FormStyle := fsNormal; |
Re: Form unschliessbar udn onTop machen?
Zitat:
Zitat:
Zitat:
Die Windows-API sieht solch einen Fall nicht vor. Ja, man kann auch tricksen mit unsauberen Mitteln was ich dir aber nicht zeige, da so etwas Murx ist. Man kann ermitteln welches Fenster in oberster Ebene sitzt und seines darübersetzen. Das kann bei Fullscreenanwendungen zu unschöhnen Effeckten wie flackern etc. führen. Also, mache es so wie die meisten (guten) Programierer und nutze einfach "fsStayOnTop". Gruss... |
Re: Form unschliessbar udn onTop machen?
Zitat:
Aber frmAnzeige bzw. Form2 da funktioniert es nicht, auch wenn man
Delphi-Quellcode:
macht!
procedure TfrmAnzeige.chkBoxTopClick(Sender: TObject);
begin if chkBoxTop.Checked then frmAnzeige.FormStyle := fsStayOnTop else frmAnzeige.FormStyle := fsNormal; end; Das ist es ja was ich die ganze zeit versuche, eine 2.Form, die nicht die MainForm ist, onTop zu bringen! |
Re: Form unschliessbar udn onTop machen?
Vlt. mal ein ganz trivialer Ansatz, bevor ihr euch noch gegenseitig die Köpfe einschlagt:
Novo, wäre es für dich vlt. möglich, das Fenster was oben bleiben soll, als MainForm zu machen? So musst du zwar ein paar andere Probleme umgehen (zB. das deine Applikation beim schließen der eigentlichen Hauptform jetzt nicht mehr ausgeht), aber das hier wäre gelöst :-D (Weiß ya nicht, wie groß und wichtig das Projekt ist) [edit] Oder wo wir schon dabei sind: Je nachdem könnte man aus der "kleinen Form" eine eigene Applikation machen. Ich weiß ya nicht woher sie ihre Daten bezieht. Sollte sie diese vom Hauptprogramm bekommen, so müssten diese natürlich noch über einen der vielen Wege übergeben werden. Aber das Problem, dass fsStayOnTop nur bei der Hauptform funktioniert, wäre somit erledigt - und das auch noch auf eine recht elegante Weise. [/edit] |
Re: Form unschliessbar udn onTop machen?
Zitat:
sollte bei 2Forms möglich sein xD Damit wäre das Problem nicht wirklich gelöst, sondern umgangen. Es kann doch nicht wahr sein, dass man nicht eine x beliebige Form onTop machen kann! Mfg novo |
Re: Form unschliessbar udn onTop machen?
Liste der Anhänge anzeigen (Anzahl: 1)
@Novo:
möchtest du sowas machen? Siehe Anhang: (nicht mit WIN + D minimierbar, jedenfalls bei mir, WinXP) |
Re: Form unschliessbar udn onTop machen?
Zitat:
nu erzähl mal, wie du das angestellt hast!!! :cheers: |
Re: Form unschliessbar udn onTop machen?
Das ist nicht schwer:
Delphi-Quellcode:
Durch das Setzen von Params.WndParent auf "Desktop" erscheint für eine Form ein neuer Eintrag in der Taskleiste. Das kannst du auch verhinden, jedoch möcht ich dir das nicht vorkauen.
type
TForm1 = class(TForm) { ... } procedure FormCreate(Sender: TObject); private { Private-Declarations } protected procedure CreateParams(var Params: TCreateParams); override; end; implementation { ... } var MitRand : boolean = True; procedure TForm1.FormCreate(Sender: TObject); begin if MitRand then // Wenn du nen Fensterrahmen haben willst, dann musst du "Minimieren" deaktivieren BorderIcons := BorderIcons - [biMinimize] else // Oder gleich "Keinen Fensterrahmen" setzen BorderStyle := bsNone; // Nun noch nach ganz oben FormStyle := fsStayOnTop; end; procedure TForm1.CreateParams(var Params: TCreateParams); begin inherited; // Flags setzen Params.Style := Params.Style or WS_OVERLAPPED; // Parent auf "Desktop" setzen Params.WndParent := GetDesktopWindow; end; Grüße |
Re: Form unschliessbar udn onTop machen?
Danke danke danke!
Es funktioniert! Hat sich die mühe doch gelohnt, 3 Seiten lang drauf zu beharren, dass sowas geht! PS: habe hier nützliche Codeschnipsel zum mannipulieren von Windows, Fenster und co gepostet! ![]() Mfg novo //Thema beantwortet! |
Re: Form unschliessbar und onTop machen?
das so etwas geht hat niemand abgetrtitten. Es ging immer nur um die Behauptung das es möglich ist das ein Fenster IMMER ganz oben bleibt.
|
Re: Form unschliessbar und onTop machen?
Hallo,
Entschuldigung, dass ich diesen alten, emotionalen Thread wieder aufgreife, aber ich habe da mal eine Frage zu: Kann man zur Laufzeit des Programmes diese Einstellung (Form immer im Vordergrund) auch wieder rückgängig machen, wenn man z.B. möchte, dass der Benutzer dies auswählen kann (immer Vordergund ja oder nein)? CreateParams wird ja nur bei Erstellung der Form aufgerufen, und da ich eher Hobbyprogrammierer bin habe ich keinen Ahnung wie man es anstellt die Parameter neu einzulesen. Wäre für einen Tipp sehr dankbar. Mit freundlichen Grüssen, PinKing2. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
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