Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Eine "Nicht"-MainForm in die Taskleiste minimieren ?!? (https://www.delphipraxis.net/108382-eine-nicht-mainform-die-taskleiste-minimieren.html)

Pixelex 12. Feb 2008 19:04


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:
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? :/

SirThornberry 12. Feb 2008 19:11

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.

Pixelex 12. Feb 2008 19:15

Re: Eine "Nicht"-MainForm in die Taskleiste minimi
 
Zitat:

Zitat von SirThornberry
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.

lol, es muss doch in Delphi auf einfachere Weise möglich sein das Programm ganz normal in eine Taskleiste zu minimieren, wenn ich den Minimieren-Button einer Form anklicke. oO

DataCool 12. Feb 2008 19:17

Re: Eine "Nicht"-MainForm in die Taskleiste minimi
 
Hi,

ich glaube was was Du suchst ist das :

Delphi-Quellcode:
  // 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;
Gruß DataCool

SirThornberry 12. Feb 2008 19:19

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?

Pixelex 12. Feb 2008 19:22

Re: Eine "Nicht"-MainForm in die Taskleiste minimi
 
Zitat:

Zitat von DataCool
Hi,

ich glaube was was Du suchst ist das :

Delphi-Quellcode:
  // 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;
Gruß DataCool

Jaaa, nicht ganz. Nun minimiert sich die ZweiteForm zwar korrekt, allerdings habe ich nun zwei Taskleisten-Einträge. Ich will aber nur einen haben. Halt einen Eintrag wie bei jedem anderen sonst üblichen Programm. :D

Zitat:

Zitat von SirThornberry
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?

Weil ich nicht weiss wie ich ne Grafik anfangs zeigen kann ohne das eine Form genutzt wird. :D

DataCool 12. Feb 2008 19:25

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

DataCool 12. Feb 2008 19:27

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

Pixelex 12. Feb 2008 19:28

Re: Eine "Nicht"-MainForm in die Taskleiste minimi
 
Zitat:

Zitat von DataCool
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

Dann müsste ich also direkt zu Beginn Form1 hiden und Form2 anzeigen und dann nach dem Splash wieder Form2 hiden und dann Form1 anzeigen? Minimiert sich die Hauptform denn dann wenigstens korrekt und liegt dieses "über den Start-Button Minimieren" nur daran, das ich versuche eine "Nicht"-HauptForm zu minimieren?

SirThornberry 12. Feb 2008 19:30

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:
procedure TForm1.FormCreate(Sender: TObject);
var mySplash: TYourSplashForm;
begin
  mySplash := TyourSplashForm.Create(nil);
  mySplash.Show;
  Application.ProcessMessages;
  //do the things
  mySplash.Free;
end;
noch besser ist natürlich du packst das in die Projektdatei.

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 06:18 Uhr.
Seite 1 von 2  1 2      

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