Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Kein Taskbarbutton bei Application.MainFormOnTaskbar := True
galagher - Mo 11.06.12 19:39
Titel: Kein Taskbarbutton bei Application.MainFormOnTaskbar := True
Hallo!
Ich möchte keinen Taskbar-Button, weil mein Programm "auf der Oberfläche" eines anderen läuft, so, als wäre es ein Teil dieses anderen Programms. Also F1 gedrückt und MainFormOnTaskbar gefunden.
Hat jemand eine Idee, warum bei mir der Taskbar-Button nur dann nicht angezeigt wird, wenn ich es so mache:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormCreate(Sender: TObject); begin Application.MainFormOnTaskbar := True; |
Zitat Delphi XE2-Hilfe:
| Zitat: |
| [...] sollte MainFormOnTaskBar in der .dpr-Datei nach Application.Initialize und vor der Erstellung des Hauptformulars gesetzt werden |
Da sollte ja doch wohl
Application.MainFormOnTaskbar := False gesetzt werden, oder? Aber da funktioniert es nicht. Es funktioniert mit False
überhaupt nicht, und mit True funktioniert es nur in diesem einen Programm! :eyecrazy:
In meinem anderen Programm funktioniert es auch nicht, wenn ich es so, wie lt. Delphi empfohlen, mache.
Die Einstellungen im OI habe ich wie vorgegeben belassen.
Natürlich freut es mich, dass es jetzt klappt, aber ich verstehe es nicht!
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 11.06.2012 um 22:44
SvenAbeln - Di 12.06.12 09:00
Über Application.MainFormOnTaskbar wird
nicht der Eintrag in der Taskbar versteckt, sondern es wird festgelegt welches Fenster dort dargestellt wird.
Aus dem
Docwiki [
http://docwiki.embarcadero.com/Libraries/XE2/de/Vcl.Forms.TApplication.MainFormOnTaskBar]
| Zitat: |
Wenn die Eigenschaft True ist, repräsentiert eine Taskleisten-Schaltfläche das Hauptformular einer Anwendung und zeigt dessen Titel an. Bei False repräsentiert eine Taskleisten-Schaltfläche das (verborgene) Hauptfenster einer Anwendung und zeigt den Anwendungstitel an.
MainFormOnTaskBar muss True sein, damit die Aero-Effekte aus Windows Vista oder Windows 7 verwendet werden können. Dazu zählen: LiveTaskbar-Miniaturansichten, dynamische Fenster, Windows-Flip und Windows-Flip-3D. |
galagher - Di 12.06.12 19:52
Docwiki [
http://docwiki.embarcadero.com/Libraries/XE2/de/Vcl.Forms.TApplication.MainFormOnTaskBar]
| Zitat: |
| Wenn die Eigenschaft True ist, repräsentiert eine Taskleisten-Schaltfläche das Hauptformular einer Anwendung und zeigt dessen Titel an. Bei False repräsentiert eine Taskleisten-Schaltfläche das (verborgene) Hauptfenster einer Anwendung und zeigt den Anwendungstitel an. |
Dann verstehe ich nicht, warum bei meinem Programm
True das Nicht-Anzeigen eines Titels/Buttons bewirkt, denn es gibt ein Hauptfenster und dieses hat einen Titel!
False bewirkt wie beschrieben und wie erwartet das Anzeigen des Titels des verborgenen Anwendungs-Hauptfensters.
Ich habe den gesamten Code auskommentiert bis auf
Application.MainFormOnTaskbar := True;, auch in der .dpr ist nichts aussergewöhnliches drin, andere Units hat das Projekt nicht, und auch der uses-Abschnitt bindet keine besonderen Dateien ein.
Nach obigem Text müsste True jedenfalls auch einen Button in der Taskleiste bewirken, aber es ist nicht so! True = nix, False = Button!
jaenicke - Di 12.06.12 22:12
Soweit ich das verstehe bettest du dein Hauptformular mit SetParent oder so in ein anderes ein. Dementsprechend hat es keinen Taskleistenbutton mehr.
Wenn du nun MainFormOnTaskBar auf True hast, ist also keines da, da deines ja in einem anderen Fenster als Child drin sitzt. Setzt du es aber auf False, wird in der Taskleiste das versteckte Application Window angezeigt und das hat mit dem eingebetteten Hauptfenster ja nix zu tun, ist also normal da. Und damit auch der Taskleisteneintrag.
galagher - Mi 13.06.12 18:56
jaenicke hat folgendes geschrieben : |
| Soweit ich das verstehe bettest du dein Hauptformular mit SetParent oder so in ein anderes ein. Dementsprechend hat es keinen Taskleistenbutton mehr. |
Nein, ich starte es mit ShellExecute aus meinem Programm, es ist ein eigener Prozess, eine eigene Instanz und wird auch im Taskmanager aufgelistet.
jaenicke hat folgendes geschrieben : |
| da deines ja in einem anderen Fenster als Child drin sitzt. |
Genau das eben nicht: kein Child oder irgendwie ein Teil des aufrufenden Programms. Es läuft selbständig und kann per Taskmanager auch beendet werden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!