Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Liste der geöffneten MDI-Child-Fenster (https://www.delphipraxis.net/64258-problem-mit-liste-der-geoeffneten-mdi-child-fenster.html)

uwewo 3. Mär 2006 11:02

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Ich kann das jetzt schlecht nachstellen, aber kannst Du den Index des
zu aktivierende Fenster nicht über seinen Namen bestimen.

hincapie 3. Mär 2006 11:40

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Zitat:

Zitat von uwewo
Ich kann das jetzt schlecht nachstellen, aber kannst Du den Index des
zu aktivierende Fenster nicht über seinen Namen bestimen.

Ja, aber wie komme ich an den Namen, wenn ich die TabSheets doch erst zur Laufzeit erstellen lasse und daher den Namen vorher gar nicht kenne? :gruebel:

Flocke 3. Mär 2006 21:39

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Du kannst anhand der Caption suchen (Tabsheet.Caption = MDIChild.Caption).

Besser: definiere deine eigene TMDIChildTabSheet-Klasse mit
Delphi-Quellcode:
type
  TMDIChildTabSheet = class(TTabSheet)
  private
    FMDIChild: TForm;
  public
    property MDIChild: TForm read FMDIChild write FMDIChild;
  end;
Die Tabsheets erzeugst du dann so:
Delphi-Quellcode:
for c:=0 to MDIChildCount -1 do
  if not (csDestroying in MDIChildren[c].ComponentState) then
    with tMDIChildTabSheet.Create(Self) do
    begin
      PageControl := PageControl1;
      caption := MDIChildren[c].caption;
      MDIChild := MDIChildren[c];
    end;
Und dann kannst du es einfach mit
Delphi-Quellcode:
procedure TFrameForm.PageControl1Change(Sender: TObject);
begin
  TMDIChildTabSheet(PageControl1.ActivePage).MDIChild.BringToFront;
end;
nach vorne holen.

hincapie 6. Mär 2006 07:35

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
@ flocke: Super, funktioniert soweit ganz klasse, danke!! :thumb:

Jetzt habe ich aber noch ein Problem:
Wenn ich nun mit einem Mausklick ein Childfenster aktiviere, sollte auch der entsprechende TabSheet markiert werden.
D.h. irgendwas in der Richtung:
Delphi-Quellcode:
  PageControl1.ActivePage := ActiveMDIChild.Caption;
Funktioniert so natürlich nicht, aber so ähnlich müßte es doch sein, oder?
Und wo müßte die Zuweisung erfolgen, im onActivate des ChildFormulars? :?: :gruebel:

Flocke 6. Mär 2006 08:21

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Du musst ja nur das TabSheet suchen, dass sich auf ActiveMDIChild bezieht:
Delphi-Quellcode:
for c := 0 to tMDIChildTabSheet.PageCount - 1 do
  if TMDIChildTabSheet(tMDIChildTabSheet.Pages[c]).MDIChild = ActiveMDIChild then
    tMDIChildTabSheet.ActivePageIndex := c;

hincapie 6. Mär 2006 09:16

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Hallo flocke:
meinst Du etwa so: :wink:
Delphi-Quellcode:
  for c := 0 to MDIChildCount - 1 do
  if TMDIChildTabSheet(PageControl1.Pages[c]).MDIChild = ActiveMDIChild  then
    PageControl1.ActivePageIndex := c;
Im OnActivate des ChildFensters eingebunden funzt es!! :thumb: :thumb:
Vielen Dank nochmal!! :wink:

Flocke 6. Mär 2006 11:00

Re: Problem mit Liste der geöffneten MDI-Child-Fenster
 
Zitat:

Zitat von hincapie
Hallo flocke:
meinst Du etwa so: :wink:

Ja -räusper- genau so ... hatte ich doch auch geschrieben, oder? ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.
Seite 2 von 2     12   

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