AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eine "Nicht"-MainForm in die Taskleiste minimieren ?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Eine "Nicht"-MainForm in die Taskleiste minimieren ?!?

Ein Thema von Pixelex · begonnen am 12. Feb 2008 · letzter Beitrag vom 13. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Pixelex

Registriert seit: 5. Feb 2008
41 Beiträge
 
#1

Eine "Nicht"-MainForm in die Taskleiste minimieren

  Alt 12. Feb 2008, 20:04
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? :/
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 12. Feb 2008, 20:11
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Pixelex

Registriert seit: 5. Feb 2008
41 Beiträge
 
#3

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

  Alt 12. Feb 2008, 20:15
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
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

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

  Alt 12. Feb 2008, 20:17
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

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

  Alt 12. Feb 2008, 20:19
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Pixelex

Registriert seit: 5. Feb 2008
41 Beiträge
 
#6

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

  Alt 12. Feb 2008, 20:22
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.

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.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#7

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

  Alt 12. Feb 2008, 20:25
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

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

  Alt 12. Feb 2008, 20:27
Erzeuge Deine Zweite Form und setze da ein TImage drauf,
und nimm die Main Form als Main.

GRuß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Pixelex

Registriert seit: 5. Feb 2008
41 Beiträge
 
#9

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

  Alt 12. Feb 2008, 20:28
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?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

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

  Alt 12. Feb 2008, 20:30
@DataCool: Ich glaub du kennst die Edit-Funktion 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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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