AGB  ·  Datenschutz  ·  Impressum  







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

Form modal & als MDI-Child

Ein Thema von Der Jan · begonnen am 16. Jan 2006 · letzter Beitrag vom 18. Jan 2006
Antwort Antwort
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#1

Form modal & als MDI-Child

  Alt 16. Jan 2006, 14:16
Hallo zusammen,

ich hab da grad ein kleines Problem. Und zwar habe ich ein Fenster, das soll als MDI-Child und auch Modal anzeigbar sein. Ich hab sowas in nem älteren Projekt schonmal gemacht, also es geht definitiv, nur leider find ich den Source nicht mehr. Und jetzt hakt es irgendwie. Folgendes habe ich (Source gekürzt):

Delphi-Quellcode:
type
  TfrmGeraet = class(TForm)
  //...
  private
    f_blChild: boolean;
    f_Parent: TWinControl;
  protected
  //...
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Loaded; override;
  public
  //...
    constructor Create(i_Owner: TComponent); overload; override;
    constructor Create(i_Owner: TComponent; i_Parent: TWinControl); reintroduce; overload;
  end;

//...

//-----------------------------------------------------------------------------
constructor TfrmGeraet.Create(i_Owner: TComponent);
begin
  f_blChild := false;
  inherited Create(i_Owner);
end;
//-----------------------------------------------------------------------------
constructor TfrmGeraet.Create(i_Owner: TComponent; i_Parent: TWinControl);
begin
  f_blChild := true;
  f_Parent := i_Parent;
  inherited Create(i_Owner);
end;
//-----------------------------------------------------------------------------
procedure TfrmGeraet.Loaded;
begin
  inherited;
  if(f_blChild) then begin
    FormStyle := fsMDIChild;
    Parent := f_Parent;
    Position := poDefault;
  end else begin
    FormStyle := fsNormal;
    Position := poOwnerFormCenter;
  end;
end;
//-----------------------------------------------------------------------------
procedure TfrmGeraet.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  if(f_blChild) then
    Params.Style := Params.Style or WS_CHILD;
end;
Beim Versuch, das Fenster anzuzeigen, kommen Fehler

Delphi-Quellcode:
//modal
frmGeraet := TfrmGeraet.Create(self);
frmGeraet.ShowModal; //hier Fehler: EInvalidOperation

//bzw. als Child
with TfrmGeraet.Create(self, pnlMain) do
  Show; //hier Fehler: EInvalidOperation
bei modal: Aus einem sichtbaren Fenster kann kein modales gemacht werden.
bei Child: Deaktiviertes oder unsichtbares Fenster kann den Fokus nicht erhalten.

Irgendwie bin ich grad mächtig planlos... Wer weiß woran das liegen könnte?
Gruß, Jan
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#2

Re: Form modal & als MDI-Child

  Alt 17. Jan 2006, 07:40
Moin...

Hat mir wohl diverse graue Haare gebracht, aber ich konnte das Problem zum Teil lösen:
1. FormStyle in Loaded zu setzen ist Unfug.
2. Im Designmode muß man FormStyle auf fsNormal setzen und Visible auf false (!)

Jetzt läßt sich das Form modal oder als MDIChild anzeigen. Das bringt mich aber gleich zum nächsten Problem und das ist viiiiel schlimmer

Alllso: Mein MainForm ist ein MDIForm. Oben mit Menu, Toolbar und links noch nen NavigationsPanel. Ein "normales" MDIChild öffnet sich jetzt im freien Client-Bereich des MainForm, in Standardgröße, wird auch dort maximiert, es wird automatisch beim Erzeugen ein Eintrag ins Form.WindowMenu vorgenommen undsoweiterundosfort. Normales Verhalten also.
Mein MDIChild, tut dies nicht Es betrachtet nach dem Erzeugen mit
frm := TfrmGeraet.Create(self, self); den gesamten Client-Bereich des MainForm als seins.
Meine Frage: Wie bringe ich dem Child bei, sich zu verhalten, wie ein normales. (Wie erzieh ich das böse Kind ?? )
Bzw. wie oder wo kann ich das MDIChild "registrieren", damit alles wie bei normalen MDIChilds läuft?

Hab heut Nacht schon paar Stunden meines Schönheitsschlafes genutzt, um in den VCL-Sourcen zu stöbern, aber nicht brauchbares gefunden...

Ok, alles ziemlich wirre Aber ich hoffe, ihr konntet mir folgen und vielleicht weiß jemand Rat.
Gruß, Jan
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#3

Re: Form modal & als MDI-Child

  Alt 18. Jan 2006, 08:31
keiner will mir helfen

Neee, mal im Ernst. Ich habe dann doch endlich irgendwie eine gut funktionierende Lösung gefunden. Diese habe ich mal für die Code-Library gepostet, vielleicht wird sie ja sogar aufgenommen.
Gruß, Jan
  Mit Zitat antworten Zitat
Antwort Antwort


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:12 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