Announcement

Collapse
No announcement yet.

MDI-Simulation und FormStyle des ChildForm?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MDI-Simulation und FormStyle des ChildForm?

    Hallo,

    Umg.: Delphi 6 Ent. UP2

    Innerhalb der Hauptanwendung (MainForm) sollen verschiedene ChildForms geöffnet werden. Auf (klassisches) MDI wird verzichtet, statt dessen soll MDI simuliert werden.

    Wie kann ich verhindern, dass ein erzeugtes ChildForm von der MainForm verdeckt wird?<br>
    Ein ChildForm erzeugen und dessen FormStyle = fsStayOnTop setzen?<br>

    Durch <i>fsStayOnTop</i> wird das ChildForm zwar nicht verdeckt (von daher kann ich mir die erste Frage quasi selbst beantworten), ich zweifle aber, ob dies der richtige Weg ist.

    Stephan

  • #2
    Hallo Stephan,<BR>

    wenn die Anweisung zur Erzeugung soweit richtig ist ( Ausschnitt aus der "ParentForm"-Create-Anweisung wäre hilfreich ) musst Du auch den "Parent" zuweisen.<BR>

    MfG Holger Rogg

    Comment


    • #3
      Hallo,<br>
      <br>
      das könnte so aussehen...<br>
      <br><pre>
      TNoMidiForm = class(TFrom)
      private
      { Private-Deklarationen }
      FAsChild: Boolean;
      FTempParent: TWinControl;
      public
      { Public-Deklarationen }
      constructor Create(AOwner: TComponent); overload; override;
      constructor Create(AOwner: TComponent; AParent: TWincontrol); reintroduce; overload;
      procedure CreateParams(var Params: TCreateParams); override;
      procedure Loaded; override;
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
      end;
      <br>
      constructor TNoMidiForm.Create(AOwner: TComponent);
      begin
      FAsChild := False;
      inherited Create(AOwner);
      end;
      <br>
      constructor TNoMidiForm.Create(AOwner: TComponent; AParent: TWincontrol);
      begin
      FAsChild := True;
      FTempParent := AParent;
      inherited Create(AOwner);
      end;
      <br>
      procedure TNoMidiForm.CreateParams(var Params: TCreateParams);
      begin
      inherited CreateParams(Params);
      if FAsChild then
      Params.Style := Params.Style or WS_CHILD;
      end;
      <br>
      procedure TNoMidiForm.Loaded;
      begin
      inherited Loaded;
      if FAsChild then
      begin
      Align := alClient;
      BorderStyle := bsNone;
      BorderIcons := [];
      Parent := FTempParent;
      Position := poDefault;
      end;
      end;
      <br>
      procedure TNoMidiForm.FormClose(Sender: TObject; var Action: TCloseAction);
      begin
      if FAsChild then Action := caFree;
      end;
      </pre>
      <br>
      Und in MainForm ein Panel anlegen..
      und
      <br>
      NoMidiForm := TNoMidiForm.Creat(self,Pannel1);
      <br>
      H. Leesc

      Comment

      Working...
      X