![]() |
Form nicht-modal mit eigenem Taskleitsten Eintrag erstellen
Hey,
wie kann ich in meinem Programm zur Laufzeit ein Formular erstellen, dass .. 1) .. einen eigenen Eintrag in der Taskleiste besitzt 2) .. nicht modal angezeigt wird 3) .. hinter das Hauptfenster "rutschen" kann
Delphi-Quellcode:
Bisher wird das Formular nicht modal angezeigt, kann aber aus irgendwelchen Gründen nicht vom Hauptfenster verdeckt werden, sprich die erzeugen Child Fenster liegen IMMER über dem Main Window. Einen eigenen Taskleisten Eintrag haben sie auch nicht.
procedure TfrmMain.bbSocketSettingsClick(Sender: TObject);
begin frmSockets := TfrmSockets.Create(Application); try frmSockets.PageControl.ActivePageIndex := 0; frmSockets.btnApply.Enabled := false; frmSockets.Show; finally end; end; Viele Grüße Zacherl |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Ich pushe hier nochmal und beschränke meine Frage folgendermaßen:
Wie kann ich verhindern, dass meine zur Laufzeit erstellten Fenster immer vor dem Hauptfenster sind und nicht dahinter rutschen können? |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
irgendwie wiederspricht sich hier einiges ... Modal bedeutet ja, daß die anderen (Parent)Forms nicht aktiv sind ... also wozu soll man dann die einzig aktive Form dann hinter diesen verstecken wollen?
|
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Nein pass auf ich habe mein TfrmMain, welches das Hauptfenster ist. Dann erstelle ich ein TfrmSubForm. Als Parent nehme ich Application und ich zeige das Fenster mit der Show() [nicht der ShowModal()] Methode an.
Dieses Fenster liegt nun allerdings IMMER über TfrmMain. Selbst wenn ich TfrmMain anklicke und somit den Fokus gebe, bleibt TfrmSubForm immer vor TfrmMain im Vordergrund. Dieses Verhalten würde ich gerne abschalten. |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Hallo,
hat die Eigenschaft FormStyle von TSubForm eventuell den Wert fsStayOnTop? Dann musst du den wieder auf fsNormal stellen. Um dem zweiten Fenster einen eigenen Eintrag in der Taskleiste zu spendieren, musst du folgende Funktion z.B. im FormCreate aufrufen:
Delphi-Quellcode:
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
Ciao Chris |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Danke dir für deine Antwort, das mit der Taskleiste funktioniert schonmal. Der Wert von FormStyle war allerdings auf fsNormal (hatte da auch nichts dran geändert). Das Formular ist ja auch nicht im Vordergrund aller geöffneten Fenster.
Sagen wir ich erstelle 2 SubForms, dann kann ich durch Anklicken entweder das eine oder das andere Fenster in den Vordergrund holen. Währenddessen wird das jeweils andere SubForm verdeckt oder zumindest teilweise verdeckt. Klicke ich aber auf das MainForm, so wird dieses zwar aktiviert, die zwei SubForms bleiben aber dennoch im Vordergrund =/ |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Ist TSubForm direkt von TForm abgeleitet? Wurde in dem Formular die Funktion CreateParams überschrieben?
Hast du mal eine leere Form hinzugefügt und mal probiert, ob die sich genauso verhält? btw: fsStayOnTop bedeutet nicht, das das Fenster über allen Fenstern liegt, sondern nur über allen Fenstern deiner Anwendung. Ciao Chris |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Zitat:
Zitat:
Zitat:
|
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Hallo,
kannst du mir evtl mal ein kleines Projekt hochladen, das den Fehler demonstriert? Es reicht, wenn nur eine Hauptform mit Button drauf ist, das ein SubForm anzeigt. Bei mir kann ein SubForm auch hinter dem MainForm liegen. Ciao Chris |
Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel
Liste der Anhänge anzeigen (Anzahl: 1)
Hier die kleine Demo. EXE liegt auch bei. Vielleicht ist es ja ein generelles Problem unter D2010?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz