Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - MDIChild in den Vordergrund


Szebin - Di 17.01.06 15:53
Titel: MDIChild in den Vordergrund
Ich beschäftige mich erst seit ein paar Tagen mit Delphi; dies als kurze Einleitung.
Für eine Anwendung mit mehreren Formularen habe ich ein MDI-Projekt gewählt. Das MDIForm hat ein MainMenu mit verschiedenen Menupunkten, über die die verschiedenen MDIChilds aufgerufen werden. Nun habe ich nachfolgenden Quelltext erstellt, um mittels MDIChildCount und MDIChildren[i].Name abzuprüfen, ob das MDIChild geöffnet ist oder nicht. Ist das MDIChild nicht geöffnet gibt es kein Problem; bis hierhin funktioniert auch alles ganz prima. Jetzt schon stoße ich an die Grenze und weiß nicht, wie ich es eben weiter bewerkstellen soll.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TFormMain.MenuItem_ChildForm10Click(Sender: TObject);
var i: Integer;
var blnFormOpen: Boolean;
begin
  blnFormOpen := False;
  for i := 0 to MDIChildCount-1 do
    if MDIChildren[i].Name = 'ChildForm10' then
      blnFormOpen := True;

  if blnFormOpen = False then
    TFormPortobuch.Create(Application)
  else
    { hier soll jetzt das bereits geöffnete ChildForm10 in den
    Vordergrund; leider weiß ich nicht wie !!?? }

end;


Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.


jasocul - Di 17.01.06 16:01
Titel: Re: MDIChild in den Vordergrund
So würde ich es lösen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TFormMain.MenuItem_ChildForm10Click(Sender: TObject);
var i: Integer;
begin
  for i := 0 to MDIChildCount-1 do
    if MDIChildren[i].Name = 'ChildForm10' then
    begin
      TForm(MDIChildren[i]).BringToFront; // Existierende Form anzeigen
      Exit; // Beendet die Procedure, wenn gefunden
    end;
  // Bis hierhin gekommen, also ist die From noch nicht da.
  TFormPortobuch.Create(Application);
end;


Szebin - Di 17.01.06 16:09

Hallo Peter,

top und vielen herzlichen und nochmals schönen Dank. Ich sitze jetzt schon seit zwei Tagen dran und probiere und probiere und nichts kommt dabei raus. Einmal gepostet und sofort eine Antwort und alles klappt so wie ich es mir gewünscht habe.
Ich könnt' dich knuddeln.

Danke für die schnelle Hilfe
Sabine


jasocul - Di 17.01.06 16:19

Nicht doch. Ich bin doch so schüchtern. :oops: :wink: