AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form nicht-modal mit eigenem Taskleitsten Eintrag erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Form nicht-modal mit eigenem Taskleitsten Eintrag erstellen

Ein Thema von Zacherl · begonnen am 21. Sep 2009 · letzter Beitrag vom 4. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Form nicht-modal mit eigenem Taskleitsten Eintrag erstellen

  Alt 21. Sep 2009, 17:59
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:
procedure TfrmMain.bbSocketSettingsClick(Sender: TObject);
begin
  frmSockets := TfrmSockets.Create(Application);
  try
    frmSockets.PageControl.ActivePageIndex := 0;
    frmSockets.btnApply.Enabled := false;
    frmSockets.Show;
  finally

  end;
end;
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.

Viele Grüße
Zacherl
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 29. Sep 2009, 21:12
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 29. Sep 2009, 21:30
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?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 29. Sep 2009, 21:33
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.
  Mit Zitat antworten Zitat
Chris.R

Registriert seit: 8. Sep 2009
Ort: Nürnberg
68 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 08:38
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:

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
Ciao Chris
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 11:59
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 =/
  Mit Zitat antworten Zitat
Chris.R

Registriert seit: 8. Sep 2009
Ort: Nürnberg
68 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 12:40
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 15:39
Zitat von Chris.R:
Ist TSubForm direkt von TForm abgeleitet?
Jap

Zitat von Chris.R:
Wurde in dem Formular die Funktion CreateParams überschrieben?
Nein

Zitat von Chris.R:
Hast du mal eine leere Form hinzugefügt und mal probiert, ob die sich genauso verhält?
Jap, verhält sich genauso. Auch in einem komplett neuen Projekt, können die SubForms niemals hinter das MainForm rutschen.
  Mit Zitat antworten Zitat
Chris.R

Registriert seit: 8. Sep 2009
Ort: Nürnberg
68 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 17:53
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: Form nicht-modal mit eigenem Taskleitsten Eintrag erstel

  Alt 30. Sep 2009, 18:42
Hier die kleine Demo. EXE liegt auch bei. Vielleicht ist es ja ein generelles Problem unter D2010?
Angehängte Dateien
Dateityp: rar formtest_208.rar (302,1 KB, 6x aufgerufen)
  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 23:02 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