Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 11.06.12 20:39 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
begin
  {Ja! Hier und True, nicht in der .dpr nach Application.Initialize und False!}
  Application.MainFormOnTaskbar := True;  // <-- kein Taskbar-Button!

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 user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 11.06.2012 um 22:44

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Di 12.06.12 10:00 
Über Application.MainFormOnTaskbar wird nicht der Eintrag in der Taskbar versteckt, sondern es wird festgelegt welches Fenster dort dargestellt wird.

Aus dem Docwiki
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 12.06.12 20:52 
Docwiki
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!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19316
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.06.12 23: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 13.06.12 19:56 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!