Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: Unterschied zwischen "Self" und Form2 (MDI-Child-Formular)?

  Alt 6. Aug 2014, 23:44
Hallo,

naja, dass Self nichts mit der Variable zu tun hat wurde ja schon erklärt.

Zitat:
Es soll Buttons als eine Art Auswahl enthalten, von denen aus weitere Childfenster angezeigt werden können. Jedes Childfenster soll aber nur einmal angezeigt werden können.
Das könntest Du vielleicht so hinbiegen (pack folgendes in eine eigene Unit [im Folgenden mal sap.pas]):
Delphi-Quellcode:
function CreateForm (const FormClass : TCustomFormClass) : TCustomForm;
begin
  Result := FormClass.Create (Application.MainForm)
end;

function FindComponentByClass (const Component : TComponent; const ComponentClass : TComponentClass) : TComponent;
var
  i : Integer;
  c : TComponent;
begin
  Result := nil;
  for i := 0 to Component.ComponentCount - 1 do
    begin
      c := Component.Components [i];
      if c is ComponentClass then
        begin
          Result := c;
          Break
        end
    end
end;

procedure ShowMDIForm (const FormClass : TCustomFormClass);
var
  c : TComponent;
  f : TCustomForm;
begin
  c := FindComponentByClass (Application.MainForm, FormClass);
  if Assigned (c) then
    f := TForm (c)
  else
    begin
      f := CreateForm (FormClass);
      if not Assigned (f) then
        // Do whatever you want if it fails
    end;

  if f.WindowState = wsMinimized then
    f.WindowState := wsNormal
  else
    f.BringToFront
end;
In den Formularen dann jeweils ein:
Delphi-Quellcode:
procedure TFormX.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree
end;
Und an den Stellen an denen ein weiteres MDIChild angezeigt werden soo
Delphi-Quellcode:
uses
  sap.pas;

procedure TFormY.ButtonClick(Sender: TObject);
begin
  ShowMDIForm (TFormX)
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat