![]() |
Eine "Nicht"-MainForm in die Taskleiste minimieren
Hallo,
ich habe mich nun schon fast ne Stunde mit dem Problem rumgeschlagen, dass wenn ich eine ZweiteForm minimiere, also nicht die MainForm (die ist als Splash gedacht), dass sich die Form nur zu einem kleinen Rechteck unten links über dem Windows Start-Button minimiert. Habe auch schon viele Foren-Einträge dazu gefunden, allerdings nicht wirklich eine Lösung für mein Problem, da ich das Minimieren über eine "Nicht"-MainForm versuche. Ich habe nun schon gelesen, dass man das mit der Komponente ApplicationEvents arbeiten kann, diese habe ich auch bereits auf meine zweite Form gezogen und habe dann folgendes im OnMinimize-Event eingegeben:
Delphi-Quellcode:
Doch es verändert sich nichts, irgendwie habe ich das Gefühl, dass der nichtmal in dieses OnMinimize-Ereignis reingeht.
procedure ZweiteForm.ApplicationEvents1Minimize(Sender: TObject);
begin Application.Minimize; end; Wie mache ich es also nun, dass sich mein Program über eine "weitere" Form korrekt in die Taskleiste minimieren kann, ohne das es sich nur über den Start-Button stellt? :/ |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
meine persönliche Meinung vorab: Nimm nicht das Mainform als Splash. das macht nur Arbeit weil du dann die gesamte Funktionalität in die andere Forms selbst implementieren musst. Das fängt damit an das sich dein Programm beendet sobald du das Mainform schließt.
Und jetzt etwas Hintergrund zu deiner Frage. Wenn das MainForm minimiert wird, wird das Form nicht wirklich minimiert in Delphi sondern nur ausgeblendet. Das was du in der Taskleiste siehst ist nicht das Mainform sondern ein Fenster was du so nie zu Gesicht bekommst, nämlich das TApplication-Fenster. Wenn du ein Form wirklich in die Taskleiste bringen willst musst du als erstes per Api-Funktionen den Style ändern damit es kein Tool-Window mehr ist und erstmal einen eigenen Taskbareintrag bekommt. |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Zitat:
|
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Hi,
ich glaube was was Du suchst ist das :
Delphi-Quellcode:
Gruß DataCool
// innerhalb der zweiten Form
protected procedure CreateParams(var Params: TCreateParams); override; procedure TZweiteForm.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); // dafür sorgen das die Form auch sichtbar ist, wenn die Main-Form minimiert wird Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; // je nach Bedarf benutzen oder nicht Params.WndParent := GetDesktopWindow; end; |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Nicht wirklich. Denn nicht ein Programm ist in der Taskleiste zu sehen sondern ein Fenster. Und hast du dich noch nie gefragt warum nur 1 Taskbareintrag vorhanden ist obwohl es mehrere Forms gibts und somit mehrere Fenster?
Wie bereits erwähnt ist der Taskbareintrag nicht das Hauptform sondern ein anderes Fenster und das Hauptform hat gar keinen Taskbareintrag. Aber mal anders, warum willst du unbedingt das dein Hauptform der Splash ist? Warum nimmst du dein Hauptform nicht dafür wofür es gedacht ist? Also warum willst du es dir unnötig schwer machen? |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Zitat:
Zitat:
|
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Hi,
dann verstehe ich aber nicht warum Du nicht die Main-Form als Main nutzt, und die Zweite-Form als Splash. Was hast Du vor ? Gruß DataCool |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Erzeuge Deine Zweite Form und setze da ein TImage drauf,
und nimm die Main Form als Main. GRuß Data |
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
Zitat:
|
Re: Eine "Nicht"-MainForm in die Taskleiste minimi
@DataCool: Ich glaub du kennst die Edit-Funktion :wink: Zudem glaub ich das deine Antwort ihn kein Stück weiter gebracht hat. Er weiß ja eben nicht wie er das macht (weil du zum Beispiel auch nicht auf die Problematik eingegangen bist das die zweite form ja erst nach der ersten im Normalfall erzeugt wird). Ich denke aus diesem Grund hat der Fragesteller das zuerst erstelle Form genommen (weil er nicht weiß wie es anders geht) :)
@Pixelex: so gehts:
Delphi-Quellcode:
noch besser ist natürlich du packst das in die Projektdatei.
procedure TForm1.FormCreate(Sender: TObject);
var mySplash: TYourSplashForm; begin mySplash := TyourSplashForm.Create(nil); mySplash.Show; Application.ProcessMessages; //do the things mySplash.Free; end; Welche Delphiversion verwendest du? Wenn du mit den Anleitungen zu Splashscreens nicht zurecht kommst könnte man dir ja mal ein Programm basteln was nocht nichts weiter macht außer einen Splashscreen anzuzeigen so das du siehst wie das gemacht wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz