AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MainForm immer hinten?

Ein Thema von himitsu · begonnen am 12. Feb 2012 · letzter Beitrag vom 12. Feb 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
26.472 Beiträge
 
Delphi XE3 Professional
 
#1

MainForm immer hinten?

  Alt 12. Feb 2012, 13:00
In "neueren" Delphi-Versionen ist die MainForm immer hinten.
Also nur auf die Forms der eigenen Anwendung bezogen. Auf Fremdprogramme hat es keinen Einfluß.

Wird das in Zukunft (Win8) auch so bleiben und funktioniert das auch in allen Windows-Versionen so? (vorwiegend ab Win2K/XP)
Man kann den Eingabefokus auf die MainForm geben und dennoch bleiben die ChildForms davor liegen.

Delphi-Quellcode:
// 'nen Button auf die Form und dann noch diese beiden Methoden rein

var
  FormCounter: Integer = 0;

procedure TForm5.FormCreate(Sender: TObject);
begin
  if (Self <> Application.MainForm) and (Application.MainForm <> nil) then begin
    Inc(FormCounter);
    Caption := (Owner as TForm).Caption + ' - Form' + IntToStr(FormCounter)
  end else
    Caption := 'MainForm';
end;

procedure TForm5.Button1Click(Sender: TObject);
begin
  (TComponentClass(ClassType).Create(Self) as TForm).Show;
end;
Grund: Wir haben ein Programm (war vorher in/bis D7 entwickelt) und dort wird noch über fsStayOnTop dafür gesorgt, daß die MainForm immer hinter den ChildForms liegt.
Leider hat fsStayOnTop einige Probleme, so daß z.B. manchmal irgendwelche Dialoge nicht sichtbar sind. Außerdem bereitet es beim Debuggen gerne mal Probleme, da die IDE auch nicht sichbar ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2013

Geändert von himitsu (12. Feb 2012 um 13:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
2.639 Beiträge
 
Delphi XE5 Architect
 
#2

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 13:39
Wird das in Zukunft auch so bleiben und funktioniert das auch in allen Windows-Versionen so? (vorwiegend ab Win2K/XP)
Das Verhalten kann ich unter XE2 nachvollziehen, wenn MainFormOnTaskBar := true gesetzt ist, sonst nicht. Ob das so korrekt ist, mag dahingestellt sein - das kann die allenfalls Embarcadero beantworten. Ich meine mich erinnern zu können, daß das schon seit D2007 so ist und ein QC dazu als "as designed" geschlossen wurde (kann ich aber gerade nicht finden). Insofern hast du gute Chancen, daß das so bleibt.

XE/XE2-Programme laufen soweit ich weiß eh nur ab Win2K oder gar XP.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
4.650 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 13:54
Wird das in Zukunft (Win8) auch so bleiben
Bisher sieht es dort ja genauso aus und ich glaube kaum, dass sich das in der RTM noch ändert. Zudem ist das ja vor allem von der Implementierung in Delphi abhängig. Schließlich hängt das ganze ja mit der Änderung des Application-Window zusammen (schrieb Uwe Raabe ja auch schon). Solange sich diese Implementierung (oder deine Einstellung in Delphi) nicht wieder ändert (warum sollte sie?), wird das auch weiter so funktionieren.

und funktioniert das auch in allen Windows-Versionen so? (vorwiegend ab Win2K/XP)
Welche meinst du denn sonst? Aktuelle Delphiversionen unterstützen doch ohnehin erst Windows 2000 oder höher.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
26.472 Beiträge
 
Delphi XE3 Professional
 
#4

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 14:20
Aktuell haben unsere Kunden wohl vorwiegend XEP und Win7.
Im Windows Server 2008 mit XE konnte ich das auch soweit bestätigen.

Im Prinzip ist es ja genau das Verhalten, welches für uns nötig ist. Das "as designed" wäre somit vollkommen OK.
Wäre nur blöd, wenn man ein Programm nun umbaut, da es jetzt ja nativ geht und dann geht es in XE3, in einer 64 Bit-App oder in Win8 plötzlich nicht mehr.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2013

Geändert von himitsu (12. Feb 2012 um 14:22 Uhr) Grund: XE ... XP ... klingt ja alles gleich :oops:
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
4.650 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 15:00
Wäre nur blöd, wenn man ein Programm nun umbaut, da es jetzt ja nativ geht und dann geht es in XE3, in einer 64 Bit-App oder in Win8 plötzlich nicht mehr.
Naja, es ist ja nicht so, dass man das Verhalten nicht auch schon in Delphi 7 hätte bauen können. Es war nur der entsprechende Aufwand nötig die ganzen Fensterstile umzubauen und noch ein paar andere Tricks. Zur Not könnte man das bei neueren Delphiversionen ja genauso. Aber das wird wohl kaum nötig werden.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#6

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 18:34
Die Reihenfolge von "gestapelten" Fenstern kann man doch seit einigen Versionen mit Form.PopupParent kontrollieren und Einfluss darauf nehmen. Damit sollte das Verhalten von himitsu abbildbar sein.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
26.472 Beiträge
 
Delphi XE3 Professional
 
#7

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 20:48
Bei dem Namen PopupParent wäre ich nie auf sowas hier gekommen.
Aber sieht gut aus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2013
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
165 Beiträge
 
Delphi XE Enterprise
 
#8

AW: MainForm immer hinten?

  Alt 12. Feb 2012, 22:52
ich habe auch festgestellt, das die neuen dialogforms diese probleme scheinbar nicht mehr haben.

TTaskMessageDialog.

die klassische CreateMessageDialog funktion verursacht diverse effekte.

und in Dialogs.MessageDlg wird ja automatisch die neue TaskMessageDialog aufgerufen, insofern man Windows Vista ff verwendet.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf