AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Minimieren eines Fensters (bei MDI anwendung)
Thema durchsuchen
Ansicht
Themen-Optionen

Minimieren eines Fensters (bei MDI anwendung)

Ein Thema von DBman · begonnen am 2. Aug 2003 · letzter Beitrag vom 3. Aug 2003
Antwort Antwort
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#1

Minimieren eines Fensters (bei MDI anwendung)

  Alt 2. Aug 2003, 14:51
Hallo!
Mit welchem Befehl kann ich bei einer MDI Anwendung ein MDI Child minimieren?

Minimize ist ja was anderes , damit kann man nur die Application minimieren habe in der Hilfe aber nichts gefunden wie man ein Child-Fenster minimieren kann..?
? ?
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#2

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 2. Aug 2003, 14:54
Ich möchte das aber nich mit WindowState:=wsMinimized machen , sondern einen Befehl wie Tile , der alle geöffneten Fenster minimiert
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 2. Aug 2003, 20:16
Hallo,
kopiere folgenden Code in einen onClick Event eines Buttons:
Delphi-Quellcode:
type
    { Array of form references }
    A_TForm = Array [0 .. (($fff0 div SizeOf(TForm)) - 1)]
        of TForm;
var
    ChildCount: Integer;
    CurrentMDIChildCount: Integer;
    CurrentMDIChildren: ^A_TForm;
begin
    { For some reason Delphi messes around with the MDIChildren array
      when child forms are repositioned in code, causing the routine to
      suddenly start accessing the wrong form in the middle of an
      iteration! To get around this problem, allocate some memory to
      make copies of the main form's MDIChildren array and use this
      copy throughout the rest of the routine }

    CurrentMDIChildCount := MDIChildCount;
    CurrentMDIChildren := AllocMem(CurrentMDIChildCount
        * SizeOf(CurrentMDIChildren^[0]));

    try
        { Copy all the child form references to the local
          array }

        for ChildCount := 0 to CurrentMDIChildCount - 1 do
            CurrentMDIChildren^[ChildCount] :=
                MDIChildren[ChildCount];

        for ChildCount := CurrentMDIChildCount - 1 downto 0 do
            CurrentMDIChildren^[ChildCount].WindowState := wsMinimized;

    finally
        { Free the memory allocated to the array of form
          references }

        FreeMem(CurrentMDIChildren, CurrentMDIChildCount
            * SizeOf(CurrentMDIChildren^[0]));
    end; { end try }

end;
Autor: Steve Turner, Leeds, England (gefunden in einer NewsGroup)
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#4

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 3. Aug 2003, 10:58
HÄ WAAS?

Array [0 .. (($fff0 div SizeOf(TForm)) - 1)] Ich meine ich hab auch schonmal was von Hexadezimalcode gehört
aber welcher Kryptiker hat sich denn bitte das alles ausgedacht?
Dann wäre da vielleicht ein Erklärungskommentar mal angebracht.

Im Übrigen kann ich da bezüglich meines Problems keine Lösung drin finden.

? ?
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 3. Aug 2003, 11:32
Zitat von DBman:
Im Übrigen kann ich da bezüglich meines Problems keine Lösung drin finden.
Hast Du eigentlich ausprobiert was ich Dir gepostet habe, ich poste ausschließlich Sachen die ich selbst getestet habe

Mit obigem Code wird deine Frage
Zitat:
Mit welchem Befehl kann ich bei einer MDI Anwendung ein MDI Child minimieren
und vor allem
Zitat:
... sondern einen Befehl wie Tile , der alle geöffneten Fenster minimiert
sehr wohl beantwortet, wenn Du einen Erklärungskommentar wünscht, mach Dich selber schlau, ich wollte Dir nur eine Lösung anbieten.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
MatthiasO

Registriert seit: 31. Jul 2003
Ort: Burg (b. Magdeburg)
11 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 3. Aug 2003, 11:55
Warum so kompliziert?
Delphi-Quellcode:
procedure MinimizeAll;
var
  i: Integer;
begin
  //Form1 ist das Hauptfenster der Anwendung
  for i := Form1.MDIChildCount - 1 downto 0 do
    Form1.MDIChildren[i].WindowState := wsMinimized;
end;
Einfach diese Prozedur bei dir einfügen und MinimizeAll aufrufen.
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Minimieren eines Fensters (bei MDI anwendung)

  Alt 3. Aug 2003, 12:08
Hallo MatthiasO,

ich vertraue einfach mal dem Autor Steve Turner, da er auf ein Posting
antwortete, daß so ähnlich war wie Dein Code, allerdings manchmal zu
einem falschen Ergebnis führte.

Du kannst übrigens selbst nachlesen, warum es "so kompliziert" ist:
Zitat:
{ For some reason Delphi messes around with the MDIChildren array
when child forms are repositioned in code, causing the routine to
suddenly start accessing the wrong form in the middle of an
iteration! To get around this problem, allocate some memory to
make copies of the main form's MDIChildren array and use this
copy throughout the rest of the routine }
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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