Delphi-PRAXiS

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 Bestimmtes MDI-Child finden... ?!? (https://www.delphipraxis.net/37841-bestimmtes-mdi-child-finden.html)

lorrey 11. Jan 2005 09:33


Bestimmtes MDI-Child finden... ?!?
 
Hallo zusammen!

Folgendes Problem:

Ich habe eine MDI Applikation, in der mehrere MDI-Childs offen sind, davon ist logischer weise nur eins aktiv...
von diesem möchte ich nach einem bestimmten Child namens "Hugo" suchen, die Form "Hugo" kann aber mehrfach offen sein,
also bräuchte ich noch die "z-Order" von den offenen MDI-Childs, so das ich quasi den zu letzt geöffenten "Hugo" finde!

Hat das von Euch schon mal jemand gemacht?!?
Wäre Euch echt dankbar, wenn Ihr mir helfen könntet!

Gruss
lorrey

Stevie 11. Jan 2005 09:38

Re: Bestimmtes MDI-Child finden... ?!?
 
Hi lorrey,

Delphi-Quellcode:
for i := Pred(MDIChildCount) downto 0 do
  if MDIChildren[i].ClassName = 'Hugo' then
  begin
    ShowMessage('Hugo gefunden!');
    Break;
  end;
MfG
Stevie

lorrey 11. Jan 2005 11:17

Re: Bestimmtes MDI-Child finden... ?!?
 
Hi Stevie!

Danke für die schnelle Hilfe!
Ich musste nur die Schleife rum drehen dann ging es... !!!
(Wenn man runter zählt, gibt er leider nicht den letzten aktiven aus)
Code:
for i := 0 to MDIChildCount -1 do
So geht es auf jeden Fall - vielen DANK!

Stevie 11. Jan 2005 11:19

Re: Bestimmtes MDI-Child finden... ?!?
 
Oh, ich dachte, er fügt das letzte immer hinten an... :oops:

sECuRE 11. Jan 2005 13:36

Re: Bestimmtes MDI-Child finden... ?!?
 
Hi,

das zuletzt erstellte kannst du finden, indem du so vorgehst:
Delphi-Quellcode:
// THugoForm ist deine Formklasse und braucht eine public-eigenschaft CreateTime:TDateTime;
function TForm1.FindLastChild:THugoForm;
var times:array of TDateTime; c:integer;
begin
ins:=1;
for c:=0 to (MDIChildCount-1) do
  if (MDIChildren[c] is THugoForm) then
    Inc(ins);
SetLength(times,ins);
for c:=0 to (MDIChildCount-1) do
  if (MDIChildren[c] is THugoForm) then
    times[c]:=THugoForm(MDIChildren[c]).CreateTime;

// Damit ich nicht alles vorkaue, darfst du die Liste selbst sortieren lassen ;)
// Das letzte oder erste Item, je nachdem wie du sortierst übergibst du dann als Ergebnis
if (length(times) > 0) then
  result:=nil
else result:=times[0];
end;

// Aufgerufen wird die Funktion mit:
procedure TForm1.Test;
var letzteform:THugoForm;
begin
letzteform:=FindLastChild;
// irgendwas mit letzteform machen
end;
Viel Spaß,
cu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.

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