Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi D2007 Anwendung unter Win98 doppelter Task in Taskbar (https://www.delphipraxis.net/111253-d2007-anwendung-unter-win98-doppelter-task-taskbar.html)

TUX_der_Pinguin 1. Apr 2008 10:33


D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine "VLC-Formularanwendung - Delphi für Win32" erstellt mit Delphi 2007 für Win32 Professional R2,
um zu testen ob die Software unter Windows 98 läuft habe ich das Program auf einem Win98SE Rechner gestartet
dort fiel mir sofort auf das plötzlich zwei Tasks in der Taskleiste auftauchen eines leer das andere korrekt
mit Namen der Software. Zum besseren Verständnis habe ich gleich einen Screenshot erstellt und diesen angefügt
dazu habe ich schnell ein neues Projekt erstellt um sicher zugehen das es nicht irgendwo an meinem Program
liegt, ich habe das Projekt erstellt gespeichert und sofort ausgeführt ohne an der Anwendung etwas zu verändern.

Ich hatte vermutet das es evtl am XP Design liegt, dazu habe ich in den Optionen "Laufzeit Themes" deaktiviert
aber auch so blieben die doppelten Tasks, hat vielleicht jemand eine Idee woran das liegen könnte.

mkinzler 1. Apr 2008 10:42

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Setzte mal
Delphi-Quellcode:
Application.ShowMainForm := False;
im Projekt

jbg 1. Apr 2008 11:07

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Zitat:

Zitat von mkinzler
Setzte mal
Delphi-Quellcode:
Application.ShowMainForm := False;
im Projekt

Meintest du vielleicht MainFormOnTaskbar?

Besser ist es das Application.Handle in ein WS_EX_TOOLWINDOW zu verwandeln.

Delphi-Quellcode:
uses
  Windows;

begin
  Application.Initialize;
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
  // Splashscreen und CreateForm() Aufrufe erst ab hier...
  ...

TUX_der_Pinguin 1. Apr 2008 11:10

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Zitat:

Zitat von mkinzler
Setzte mal
Delphi-Quellcode:
Application.ShowMainForm := False;
im Projekt

Also daran lag es nicht, aber denoch lag der fehler im Projekt File, den dort steht "Application.MainFormOnTaskbar := True"
ich habe das mal mit Delphi 7 und Turbo Delphi verglichen dort gibt es die zeile generell nicht, jetzt is die Frage ob das
ein Bug ist oder muß das so. Ich könnte mir vorstellen das das Template welches beim "neu erstellen" geladen wird diese
Zeile fälschlicherweise enthält. Desweiteren frag ich mich wieso Windows XP die Zeile "ignoriert" und Win98 die Zeile
korrekt auswertet.

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Und wieder ein stückchen schlauer als gestern *g* In diesem Sinne noch einen schönen Tag.

jbg 1. Apr 2008 11:37

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Zitat:

Zitat von TUX_der_Pinguin
Ich könnte mir vorstellen das das Template welches beim "neu erstellen" geladen wird diese
Zeile fälschlicherweise enthält.

Schon mal davon gehört, dass es auch Neuerungen geben kann?

Zitat:

Desweiteren frag ich mich wieso Windows XP die Zeile "ignoriert" und Win98 die Zeile
korrekt auswertet.
Microsoft ändert die Spielregeln für Fenster mit jeder neuen Windows Version. Windows Vista reagiert wieder etwas anders. Dort ist "MainFormOnTaskbar := True" schon pflicht, wenn man nicht als "Alien Anwendung" unterwegs sein will.

TUX_der_Pinguin 1. Apr 2008 12:18

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Zitat:

Zitat von jbg
Zitat:

Zitat von TUX_der_Pinguin
Ich könnte mir vorstellen das das Template welches beim "neu erstellen" geladen wird diese
Zeile fälschlicherweise enthält.

Schon mal davon gehört, dass es auch Neuerungen geben kann?

Nach dem ich einen Blick in die Hilfe geworfen habe wurde mir auch klar das es was neues für Windows Vista ist,
in dem Falle kann ich nur Walter aus "The Big Lebowski" zittieren: "Kann ich ja nicht wissen" ;-)

Kleiner scherz, aber um auf das Thema noch mal zurück zu kommen, ich belasse das jetzt erst mal so das ich
MainFormOnTaskbar auf False setze. Entweder mir kommt noch eine Lösung entgegen die alle drei Betriebssystem Versionen
abdeckt oder aber ich werde irgendwann die Unterstütung für Win98 beenden und das dann die Programme dann nur
vollfunktionsfähig sind ab WinXP.

mkinzler 1. Apr 2008 12:26

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Du musst die OS Version abfragen und die Eigenschaft entsprechend setzen. Ich würde aber das Verhalten für neuere Windowsversionen als Standard setzen

TUX_der_Pinguin 1. Apr 2008 13:05

Re: D2007 Anwendung unter Win98 doppelter Task in Taskbar
 
Zitat:

Zitat von mkinzler
Du musst die OS Version abfragen und die Eigenschaft entsprechend setzen. Ich würde aber das Verhalten für neuere Windowsversionen als Standard setzen

Das wäre wohl eine möglichkeit aber da es sich nur um ein kleines Programm handelt ist es daher den aufwand nicht wert und
ich gehe davon aus das vor ort wo das Programm eingesetzt werden soll kein Vista laufen wird daher lasse ich das erst mal so.

Ändern läßt es sich ja immer noch recht schnell, in diesem Sinne vielen dank für die zahlreiche Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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