AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form ohne Animation maximieren

Ein Thema von Marphy · begonnen am 26. Sep 2005 · letzter Beitrag vom 13. Okt 2005
Antwort Antwort
Seite 2 von 3     12 3      
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#11

Re: Form ohne Animation maximieren

  Alt 29. Sep 2005, 15:13
Hallo DBR,

Zitat von DBR:
bei normalen Fenstern mache ich das so:
Delphi-Quellcode:
[...]
procedure TForm1.WMSysCommand;
begin
  if (Msg.CmdType = SC_MAXIMIZE)
    then begin
    hide;
    windowstate := wsMaximized;
    show;
  end else inherited;
end;
Vielleicht hilfts!
Danke für den Tipp! Dieser funktioniert ansich ganz toll, aber für mein Problem ist er nicht die Lösung.

1) Das VCL-Hide() weigert sich, MDI-Childs zu verstecken. Ist kein Problem, einfach in ShowWindow(Handle, SW_HIDE) umwandeln, dann funktiert das.

2)
Zitat von Marphy:
Die Animation beim Klick auf den Maximieren-Button in der Titelleiste ist schon okay, [...]
Tja, und beim Maximieren per Code (z.B. WindowState = wsMaximized oder per ShowWindow) wird keine WM_SYSCOMMAND-Botschaft gesendet. Und im anderen Fall, beim Maximieren per Titelleiste, will ich den Effekt ja.
Ersteres kann durch Maximieren über SendMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0) umgangen werden, der zweite Punkt ist z.B. über lParam zu lösen (bei SendMessage diesen einfach z.B. auf 1 setzen und in WMSysCommand dann abfragen).

3) Aber:
Zitat von Marphy:
[...] ich will das Fenster ja nur beim Anzeigen (z.b. OnShow-Event) "unanimiert" maximieren.
Nun, und selbst wenn man obigen Code einsetzt, beim Maximieren per Code im OnShow()-Event des MDI-Childs lässt sich die Animation leider nicht unterdrücken.

So, und an diesem letzten Punkt bin ich gescheitert...


Vielleicht noch ein kleiner (vielleicht doch nicht ganz unwichtiger) Nachtrag:
Worum es mir eigentlich geht, d.h. was ich tun will, ist folgendes: Meine Anwendung speichert beim Beenden, ob das aktive MDI-Child maximiert ist oder nicht. Beim nächsten Start der Anwendung und Öffnen eines MDI-Childs soll dieses wieder direkt im gespeicherten Zustand erscheinen (d.h. maximiert oder normal, ohne Animation).


Ich hoffe auf weitere Antworten! Danke schon im Voraus!

Grüße, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Form ohne Animation maximieren

  Alt 29. Sep 2005, 15:30
Dafür hätte ich auch gerne eine Lösung, denn meine Anwendung benutzt MDI-Childs in BPLs (komplettes Anwendungsmodul in einer BPL). Wenn ich jetzt vom Hauptprogramm etwas öffne, habe ich auch diese Maximieren-Animation die zwar technisch nicht stört, jedoch nicht chic für das Auge ist.

Gruß Igotcha
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#13

Re: Form ohne Animation maximieren

  Alt 1. Okt 2005, 17:08
Hey, keine Ideen mehr?

Bitte um Hilfe
Danke, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#14

Keine Ideen?

  Alt 4. Okt 2005, 20:03
*push*
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

Re: Form ohne Animation maximieren

  Alt 5. Okt 2005, 16:06
Wenn du schon vor der eigentlichen Erstellung des Fensters weißt, ob es maximiert sein soll, dann könntest du noch versuchen, CreateParams zu überschreiben:

Delphi-Quellcode:
// im interface-Teil innerhalb der TFormN-Deklaration
// ...
protected
  procedure CreateParams(var Params: TCreateParams); override;
// ...

// im implementation-Teil
procedure TFormN.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  if Maximiert then
    Params.Style := Params.Style or WS_MAXIMIZE;
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#16

Re: Form ohne Animation maximieren

  Alt 5. Okt 2005, 17:56
Hallo zusammen,

Zitat von Flocke:
Wenn du schon vor der eigentlichen Erstellung des Fensters weißt, ob es maximiert sein soll, dann könntest du noch versuchen, CreateParams zu überschreiben:
Danke für den Vorschlag Volker, aber die Animation bleibt, was man auch versucht....

So, ich habe jatzt ein kleines Projekt geschrieben, welches den Sachverhalt verdeutlicht. Spielt einfach mal rum, Event-Handler & Co. sind alle (?) schon reingeschrieben, ihr könnt also direkt loslegen.

Falls ihr einen Lösungsweg gefunden habt, bitte posten!

Ich freue mich auf euer Feedback!

Gruß und Dank,
Marco
Angehängte Dateien
Dateityp: zip mdimaximierenohneanimation_736.zip (198,3 KB, 16x aufgerufen)
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#17

Re: Form ohne Animation maximieren

  Alt 6. Okt 2005, 01:07
Hallo Marco,

Dir scheinen die kniffligen Fragen ja nicht auszugehen und da ich heute Nacht Wartungsdienst habe bin ich nun hier gelandet. Auch wenn es überhaupt nicht so faszinierenden Codes bedarf, könntest Du nicht einfach ein Panel im MDI Formular über den ganzen Clientbereich legen und nachdem die Clientfenster createt sind mit visible auf false verschwinden lassen. Damit würde der Fensteraufbau quasi im Untergrund passieren. Panel visible Position setzen und dann application.Processmessages.

Ok, hat nicht die Faszination einer eigenen Formularcomponente...aber vielleicht...

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Form ohne Animation maximieren

  Alt 6. Okt 2005, 01:11
Also ich sehe da keine Animation. Kann es an den grafischen Einstellungen deines Betriebssystems oder an der Theme liegen, dass du bei dir eine Animation hast?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Form ohne Animation maximieren

  Alt 6. Okt 2005, 07:50
@Luckie: Die Animation sieht man nur wenn der Schnickschnack im Betriebssystem aktiviert ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#20

Re: Form ohne Animation maximieren

  Alt 6. Okt 2005, 13:45
Hallo zusammen,

Zitat von mschaefer:
Dir scheinen die kniffligen Fragen ja nicht auszugehen


Zitat von mschaefer:
Auch wenn es überhaupt nicht so faszinierenden Codes bedarf, könntest Du nicht einfach ein Panel im MDI Formular über den ganzen Clientbereich legen und nachdem die Clientfenster createt sind mit visible auf false verschwinden lassen. Damit würde der Fensteraufbau quasi im Untergrund passieren. Panel visible Position setzen und dann application.Processmessages.
Danke für den Vorschlag Martin, aber dies würde doch nichts anderes bezwecken als z.B. LockWindowUpdate(frmMain.Handle) - die Animation ist zwar nicht sichtbar, aber die Zeit für den Effekt wird trotzdem in Anspruch genommen.

Zitat von mschaefer:
Ok, hat nicht die Faszination einer eigenen Formularcomponente...aber vielleicht...
Ich glaube, dass ein Panel überhaupt nichts bezwecken würde, da die Animation nicht auf dem Main-Form-DC gezeichnet wird. Und wenn doch, kann dasselbe viel einfacher auch per oben genanntem Code erreicht werden.

Zitat von Luckie:
Also ich sehe da keine Animation. Kann es an den grafischen Einstellungen deines Betriebssystems oder an der Theme liegen, dass du bei dir eine Animation hast?
Zitat von SirThornberry:
@Luckie: Die Animation sieht man nur wenn der Schnickschnack im Betriebssystem aktiviert ist.
Wenn Jelly diesen "Schnickschnack" in seinem BS nicht abgestellt hat, könnte der Delphi 4-VCL Code die Lösung des Problems sein... Falls also jemand noch irgendwo die Forms.pas o.ä. als D4-Version rauskramen kann, wäre ich diesem sehr dankbar!
Zitat von Jelly:
Ulkig... Bei Delphi 4 suchte ich mal nach ne Funktion um das Maximieren zu animieren.
Gruß, Marphy alias Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:50 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