Autor Beitrag
Pixelex
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.02.08 20:06 
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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure ZweiteForm.ApplicationEvents1Minimize(Sender: TObject);
begin
Application.Minimize;
end;


Doch es verändert sich nichts, irgendwie habe ich das Gefühl, dass der nichtmal in dieses OnMinimize-Ereignis reingeht.

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? :/
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Di 12.02.08 20:09 
user profile iconPixelex hat folgendes geschrieben:

Doch es verändert sich nichts, irgendwie habe ich das Gefühl, dass der nichtmal in dieses OnMinimize-Ereignis reingeht.


Schreib halt mal eine ShowMessage rein, dann weißt du sicher, ob das Ereignis ausgelöst wird oder nicht.
Pixelex Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.02.08 20:13 
user profile iconnagel hat folgendes geschrieben:
user profile iconPixelex hat folgendes geschrieben:

Doch es verändert sich nichts, irgendwie habe ich das Gefühl, dass der nichtmal in dieses OnMinimize-Ereignis reingeht.


Schreib halt mal eine ShowMessage rein, dann weißt du sicher, ob das Ereignis ausgelöst wird oder nicht.


Nope, wird nichtmal aufgerufen. Was mache ich denn dann falsch. :/ Funktioniert ApplicationEvents nur in der Main-Form? Ich will aber aus einer ZweitForm minimieren. Hmm...
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 12.02.08 21:26 
hast Du dir Deine Angaben mal genau überlegt:
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure ZweiteForm.ApplicationEvents1Minimize(Sender: TObject);
begin
Application.Minimize;
end

minimiere die Application,wenn die Application minimert wird!

(ohne Garantie)
lege das mal in das OnResize-Ereignis der zweite Form und teste dort, ob WindowState=wsMinimized ist!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.02.08 23:06 
Ich frage mich eigentlich eher, warum du nicht einen normalen Splash Screen machst, der nicht das Hauptformular ist. Dann hast du das Problem doch gar nicht erst.

Wenn der Splash Screen unbedingt das Hauptformular sein soll, dann geht das zwar, erfordert aber ein wenig zusätzliche Arbeit, die eigentlich gar nicht nötig wäre.
Pixelex Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mi 13.02.08 08:43 
Okay danke für die Tipps. So klappts nun auch! :D
passiv
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 270

WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
BeitragVerfasst: Mi 13.02.08 09:59 
ich hab aber ein ähnliches problem: splash-screen ist schon längst so gemacht, das mainform ist aber ein erst im nachhinein erzeugbares (weil abhängig von den vorhergehenden) fenster. jetzt soll aber das Fenster (welches auf maximized sein muss, weils nicht anders geht) sich nicht in den linken unteren rand minimieren, sondern eben normal in die taskleiste. ich weiß da gibt es diverse sachen, siehe nemp, wo das skincreator-fenster auch einen eigenen "eintrag" in der taskleiste kriegt. tja und das wöllt ich auch ... :roll:

vielen dank im voraus für eure genialen und freundlichen antworten ^^

_________________
Die Probleme, die es in der Welt gibt, sind nicht mit der gleichen Denkweise zu lösen, die sie erzeugt hat.
Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 13.02.08 10:20 
user profile iconpassiv hat folgendes geschrieben:
das mainform ist aber ein erst im nachhinein erzeugbares (weil abhängig von den vorhergehenden) fenster.
Was ich dabei nicht verstehe ist, wie ein Fenster von anderen abhängig sein kann. Schließlich kannst du selbst wenn du in FormCreate andere Fenster benutzt, diese entweder dort auch erzeugen oder diese über den Konstruktor erzeugen wie den Splash Screen.
In beiden Fällen ist das Fenster das Hauptformular, das es auch sein soll.

Du kannst zwar auch das Hauptformular nachträglich ändern, wenn du trickst, aber das ist nicht empfehlenswert.

Jedenfalls kannst du ein Formular als separaten Taskleisteneintrag anzeigen, indem du folgenden Code z.B. in das FormCreate schreibst:
ausblenden Delphi-Quelltext
1:
SetWindowLong(Handle, GWL_HWNDPARENT, 0);					
und das nicht anzuzeigende Hauptformular kannst du z.B. mit
ausblenden Delphi-Quelltext
1:
ShowWindow(Form13.Handle, SW_HIDE);					
unsichtbar machen (und von der Taskleiste entfernen).