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?