![]() |
WindowState = wsMaximized.
Hallo 8)
In einem Projekt habe ich ein Formular FormStyle := fsMDIForm (also Hauptformular) und mehrere fsMDIChild (Kinder-) Formulare. Leider habe ich ein Problem beim Aufruf vom besagten "Kinder"-Formularen. Ein fsMDICHild Formular hat die Einstellung für WindowState = wsMaximized. Beim Aufruf jedoch, bevor die volle Größe erreicht wird sieht man für einen Augenblick wie das Formular eine andere Position annimmt (wsNormal) und erst dann wird die volle Größe erreicht. Wie kann ich erreichen, dass das Formular sofort auf wsMaximized steht? Gruß Paul Jr. |
Laß es erst nach dem Maximieren sichtbar werden.
|
Wie meinst Du das?
Gruß Paul Jr. |
Du erzeugst es unsichtbar. Stellst WindowState auf wsMaximized und dann MDIForm.Visible := TRUE;
Ich weiß nicht, ob das geht. Ist nur eine Idee. |
Luckie, ... ich weiß leider nicht wie Du es meinst, da wenn ich
visible auf FALSE einstele bekomme ich sofort folgende Meldung: "Ein MDI-Kindformular kann nicht verborgen werden." Mein Aufruf sieht so aus: Form1 := TForm1.Create(Application); Gruß Paul Jr. |
OK, dann geht meine Lösung nicht.
|
Schade Luckie, da für mich ist das ein sehr großes Problem. Es sieht ganz einfach zum :kotz:
Ich wäre sehr Dankbar, wenn jemand mir ein Tipp geben könnte wie kann ich dieses „Nebeneffekt“ beseitigen Gruß Paul Jr. |
Hallo Paul Jr.,
schön, dass du wieder mal vorbeischaust. Also den Effekt kann man nicht ganz ausschalten, aber mit folgendem Code sieht es nicht mehr so schlimm aus:
Delphi-Quellcode:
procedure TForm1.NeuesFenster1Click(Sender: TObject);
begin { Form2.FormStyle ist fsNormal } { Form2.Visible ist False } Form2 := TForm2.Create(Self); Form2.WindowState := wsMaximized; Form2.FormStyle := fsMDIChild; end; |
Hallo Mr. Spock 8)
Danke auch Dir für Dein Versuch…. aber leider bleibt dieser Nebeneffekt so wie vorher.. (auch wenn etwas kleiner)... Ich frage mich die ganze Zeit, wie kann man es wirklich unterbinden.... Gruß Paul Jr. |
Hallo Paul Jr.,
ich denke mit mdiChilds geht es nicht anders. Du könntest aber eventuell mit PageControl Komponenten arbeiten, wenn du immer mit "ganzseitigen" Anzeigen arbeiten willst. |
Ein MDI-Child-Fenster kann schon verborgen, allerdings nicht über VCL-Methoden sonder über API:
Delphi-Quellcode:
ShowWindow(MDIChild.Handle, SW_HIDE);
|
Hallo Mr. Spock
leider besteht mein Projekt oder besser gesagt Anwendung derzeit aus sagen wir ca. 100 Formulare... also schon ein Verkaufs-Produkt... darum kommt hier in Frage nur eine wirkliche Lösung.... Danke :) Gruß Paul Jr. |
Hallo Motzi,
ich habe das schon auch irgendwo gesehen... aber weiß nicht wie kann ich das ohne Gefahr an mein Projekt einbinden Gruß Paul Jr. |
Ich frage mich allerdings an dieser Stelle WARUM nimmt ein Kinder-Formular zuerst die letzte wsNormal Position und erst dann wsMaximized?
Das ist die Ursache... könnte ich diese beseitigen wäre alles in Ordnung (ohne das Versteck-Spiel) Gruß Paul Jr. |
Hi,
Zitat:
Delphi-Quellcode:
ShowWindow(Handle, SW_HIDE);
ShowWindow(Handle, SW_MAXIMIZE); ShowWindow(Handle, SW_SHOW); |
Hallo Motzi 8) ,
mein Kind-Aufruf sieht natürlich so aus: Form1 := TForm1.Create(Application); wie und wo sollte ich das Ganze einbauen? Gruß und Danke Paul Jr. |
Hallo Motzi,
das Problem ist aber, dass du erst ein Handle hast, wenn du die MdiChild Form erstellt hast, dann wird sie aber auch schon angezeigt. Wenn du sie anschließend versteckst und dann maximierst ist der Effekt, den Paul Jr. beschrieben hat, leider erst recht da. |
Zitat:
|
Hallo Motzi,
hab ich versucht, aber der "das Fenster geht auf" Effekt ist klar sichtbar :mrgreen: . |
Zitat:
|
Hallo Motzi :D ,
ich hoffe, dass Dir das gelingt... Aber auch, falls Du es nicht schaffst... da möchte ich Dich und die anderen System-Profis beruhigen... zwar meine Frage, die ich hier gestellt habe sieht harmlos aus... ABER da waren schon von Dir ein paar Berufs-Programmierer :coder: die es leider AUCH nicht geschafft haben... ich übrigens auch nicht... :oops: Ich warte gespannt auf ein Lebenszeichen von Dir und wünsche viel Erfolg Gruß Paul Jr. |
Ich bin zwar der Meinung es schon mal anders gemacht zu haben, aber so funzt es auch:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin bFirstActivate := False; end; procedure TForm2.FormActivate(Sender: TObject); begin if not bFirstActivate then begin ShowWindow(Handle, SW_HIDE); ShowWindow(Handle, SW_SHOWMAXIMIZED); bFirstActivate := True; end; end; |
Hallo Motzi :D ,
ich stehe in Deiner Schuld... hervorragend :!: Nach ein paar einfachen Anpassungen läuft jetzt alles so wie ich wollte... Gruß Paul Jr. |
Zitat:
|
:D OK!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 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-2025 by Thomas Breitkreuz