AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Formular über Klassenconstructor nicht sichtbar erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Formular über Klassenconstructor nicht sichtbar erzeugen

Ein Thema von snook · begonnen am 2. Jan 2012 · letzter Beitrag vom 2. Jan 2012
 
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#1

Formular über Klassenconstructor nicht sichtbar erzeugen

  Alt 2. Jan 2012, 15:56
Hallo und gesundes neues jahr alle miteinander

Da ich mit meiner Erkklärkunst auch dieses Jahr noch auf Kriegsfuß stehe hole ich mal etwas weiter aus, also bitte nicht gleich abschrecken lassen.
Ich habe so ne Art Observerklasse, in der vom Benutzer formulare erzeugt werden:

Delphi-Quellcode:
function TFormManager.RegisterNew(AForm: TFormClass; AOwner: TComponent;
  ANewAppHandle: HWND): TForm;
begin
  if Application.Handle <> ANewAppHandle then
    Application.Handle := ANewAppHandle;
  try
    result := AForm.Create(AOwner);
  except
    on E:Exception do
    begin
      MessageDlg(E.Message, mtError, [mbOK], 0);
      result := nil;
    end;
  end;
  if Assigned(result) then
  begin
    result.FreeNotification(self);
    FShowOnInit.Add(result);
  end
  else
    Notification(nil, opRemove);
end;
Wenn jetzt der Benutzer ein neues Form erzeugen möchte, ruft er diese Methode des FormManagers auf und bekommt das Formular zurückgeliefert. In den meisten Fällen wird der Benutzer jetzt noch nen Form.Show aufrufen um das Ding auch gleich anzuzeigen. Das möchte ich aber gern verhindern, wenn bsw. die Anwendung noch in der Initialisierung steckt, bzw die Anwendung weiß, dass dort noch einiges zu tun ist, bevor das Form sinnvoll angezeigt werden kann.
Jetzt hab ich mir ne Weile den Kopf zermartert, aber ich bin mir nicht ganz sicher wie ich das Anzeigen des Formulars verhindern soll.
Meine erste Idee wäre die MessageProc des Forms umbiegen und im Falle von CM_VISIBLE einfach nichts tun, allerdings erscheint mir das recht unsauber. Zweite Idee wäre über einen Hook WM_SHOWWINDOW abfangen, schauen ob der Empfänger im Formmanager registriert ist und ggf nichts tun. habt ihr noch andere Vorschläge?

viele grüße

Geändert von snook ( 2. Jan 2012 um 16:03 Uhr)
  Mit Zitat antworten Zitat
 


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 08:54 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 by Thomas Breitkreuz