Hiho zusammen,
ich stolpere gerade über diverse merkwürdige Effekte, die meiner Einschätzung nach alle damit zusammenhängen, dass Delphi für eine Anwendung neben dem eigentlichen Hauptformular auch immer ein zweites, unsichtbares Formular erzeugt, das für die Taskleiste zuständig ist. Dadurch tritt ja z.B. gerne der Effekt auf, dass
nicht alle Einträge im Kontextmenü der Anwendung in der Taskleiste erscheinen, wie sie bei Nicht-Delphi-Anwendungen erscheinen würden.
Zunächst mal hierzu eine spannende Beobachtung: Erstelle ich mit D2009 eine funkelnigelnagelneue Anwendung, dann tritt dieser Effekt nicht mehr auf. Auch die Delphi-Anwendung hat dann alle Einträge, die ich erwarten würde.
Aber: Nehme ich eine schon etwas ältere Anwendung, die unter D2007 begonnen wurde, schmeiße alles raus, bis auch hier nur noch das "nackte" Form erscheint, entferne alle anderen Units, dann habe ich auch hier immer noch nur das eingeschränkte Kontextmenü.
Also so: Links die ganz neue Anwendung, rechts die ältere:
Erstmal die wichtigste Frage, die alles andere vielleicht löst: Hat irgendwer eine Ahnung, an welchen Einstellungen es noch liegen kann, dass Delphi die beiden Anwendungen so unterschiedlich behandelt? Beides sind leere Forms, beide Haupt-Units enthalten keinen Code, beide
dfm-Dateien sehen gleich aus. Nur das "alte" Form stammt halt aus einer D2007-Anwendung, bei der ich alle anderen Kompontenten und den Code für diesen Test gelöscht habe.
Hintergrund der ganzen Geschichte:
Ein Kunde möchte mein Programm per "ShowWindow" fernsteuern, es also aus seiner Anwendung heraus anzeigen und verstecken. Das funktioniert auch wunderbar, allerdings kommt Windows oder meine Anwendung dadurch so durcheinander, dass nach solch einer Fernsteuerung das normale, manuelle Minimieren und Maximieren des Fensters nicht mehr funktioniert.
Ich konnte das hier auch nachstellen: Schicke ich von einer anderen Test-Anwendung aus an das Programm per ShowWindow den Befehl zum Minimieren, dann verschwindet das Programm auch ganz brav. Ich kann es dann allerdings nicht mehr über die Taskleiste wiederherstellen oder maximieren - nur noch wenn ich das Fenster über die Test-Anwendung direkt maximiere. Ursache scheint zu sein, dass das Haupt-Form innerhalb dieses unsichtbaren Delphi-Forms minimiert wird und damit kommt Windows dann wohl nicht mehr klar.
Jetzt aber das Schöne: Bei der komplett neuen D2009-Anwendung, bei der auch das Menü in der Taskleiste komplett ist, funktioniert alles tadellos. Ich kann per "Fernsteuerung" minimieren und maximieren, aber auch über die Taskleiste funktioniert nachher noch alles.
Hat irgendwer die zündende Idee?
Bis denn
Bommel